Fórum témák

» Több friss téma
Fórum » Soros port programozás
 
Témaindító: pakibec, idő: Márc 23, 2006
Témakörök:
Lapozás: OK   9 / 14
(#) watt válasza kzozo hozzászólására (») Szept 12, 2012 /
 
Erről beszéltem én is(indexelés). De ezen belül is lehet mindezt kétféle módon. Egyik a megszakításban maradás, másik a minden bájtnál kilépéses módszer.
De ha nem tudod előre a csomag hosszát, akkor is megoldható, ha pl. a MODBUS szerinti 3,5 karakteridőre állítod a timeoutot. Persze ilyenkor kell egy CRC, hogy a csonkolt csomagokat ki tudd dobni.
(#) kiskata válasza watt hozzászólására (») Okt 15, 2012 /
 
Kedves Hozzáértők!
A PIC-es szobahömérömhöz szeretnék egy windows-os kis programot késziteni kiserleti jelleggel.
Végigolvasva az eddigi oldalakat szeretnék tanácsot kérni tőletek hogy hogyan kezdjek hozzá.
Pic oldalon arra gondoltam hogy percenként elküldöm a programnak a hömérséklet és páratatalom adatotkat és hogy mikor kapcsolta be-ki a párásítót. Arra gondoltam hogy 2 byte-t használnék az átvitelre (elso az adatmezo a masodik az érték) .
Ezzel kapcsolatos az első kérdésem...
Jó megoldas az hibakezelésnek hogy kétszer elküldöm a programnak az adatot és ha az kétszer egyforman érkezik meg akkor az adat jó és letárolható-használható?
Esetleg kiváncsi lennék a véleményetekre hogy VB2010 vagy Delphi platform az egyzerübb erre a feladatra...
köszönettel:
Kata



(#) watt válasza kiskata hozzászólására (») Okt 16, 2012 /
 
Az ismételt elküldés ilyen kicsi méreteknél jó megoldás.
Bármelyik Visual programmal könnyen lehet kezelni az adatokat a beépített, soros portot lekezelő objektumokkal.
(#) skoda135 válasza kiskata hozzászólására (») Okt 16, 2012 /
 
Nagyon hasonlót csináltam, amit talán érdemes elmondani, hogy analóg módon mértem a mennyiséget PIC-cel, és 5-10 mérés átlagát küldtem tovább PC-re. Delphivel csináltam a windowsos felületet mert ahhoz értettem valamennyire, de külön komponenst kell telepíteni hozzá.
Bővebben: Link
(#) bbatka válasza kiskata hozzászólására (») Okt 16, 2012 /
 
Van egy "free" megoldás is. Lazarus. Ingyenes soros port komponens is van hozzá. TComport

Itt
És itt
(#) kiskata válasza watt hozzászólására (») Okt 16, 2012 /
 
Még egy kérdés...
Könnyen lehet ábrázolni az adatokat egy grafkonban a VB alatt?
Azt szeretném hogy egy grafikonon látszódjon a hömérséklet a páratartalom a párásító működési idötartama mondjuk egy vizszintes vonallal jelölve. és az asztmás rohamom idötartama
Komponens kell hozzá külön vagy már benne van a VB-ben alpból?
Köszönöm mindenkinek a gyors választ. Szép napot nektek
(#) bbatka válasza kiskata hozzászólására (») Okt 16, 2012 /
 
Tartalmazza a szükséges komponenst. Könnyen lehet benne ábrázolni grafikus adatokat. Most ismerkedem a VB.NET-el úgy hogy már előzőleg sokat használtam a VB6-ot. Személyes véleményem a VB.NET-ről hogy már nem olyan egyszerű benne programozni mint a VB6-ban. Ráadásul a két nyelv teljesen más. A VB.NET grafikus megjelenítője is lassabb mint a VB6-é, de számodra ennek nem lesz jelentősége.
(#) watt válasza kiskata hozzászólására (») Okt 16, 2012 /
 
Szia! Igen, a feladat megoldásához bőven elég, ami a VB.NET-ben benne van. Amit leírtál, kivéve az asztmás rohamod időtartama , meg lehet oldani, én is hasonlót írtam.
Sajnos eléggé off, de annyit még a .NET-ről, hogy a rajzolás sebessége, ha dupla puffert használsz, gyorsabb is, mint VB6 alatt, de bonyolultabb a program kicsit. Az egész .NET a VB6-hoz képes egy agyrém először, de bele lehet jönni. Lassan az összes programomat átírtam már, nem egyszerű, de megtanulható. Aki ezzel kezd, talán nem annyira nehéz felvenni a szemléletet. A helpek korlátosan használhatók, mert olyan adatmennyiség van, amiből nem tudod eldönteni, melyik kell neked, ezért a google sokat segít. A nyelv ugyanaz, csak az objektum könyvtár más, ezért másképp lehet elérni dolgokat.
A hozzászólás módosítva: Okt 16, 2012
(#) kiskata válasza watt hozzászólására (») Okt 16, 2012 /
 
De jó lenne ha egy progival lehetne állítani a rohamok idejét... Gondoltam azt felviszem külön
A dokimnak kellene ezeket az adatokat valahogy nem listaszerüen produkálnom.
A párásitókapcsolgatást és hö és páramérést már megoldottam... PIC-el.
Sokan mondták hogy inkább VB6-al kezdjek... Tanulni szeretek... Motiváció van...
Nekilátok akkor VB6 ban...
Köszönöm a segítséget.
Nekugrok a netnek sample-kutatásilag.

(#) watt válasza kiskata hozzászólására (») Okt 16, 2012 / 1
 
Ne haragudj, én azt hittem viccelsz!
Ha szeretsz tanulni, akkor a .NET! Ha a topic címét nézem, akkor belefér egy kis programozás is! Ha elzavarnak, akkor máshol folytatjuk. Én sem vagyok profi, de pár dolgot már kikísérleteztem. (rajzolás, soros port kezelés, fájlkezelés). Remélem tudok segíteni!
(#) Hp41C válasza kiskata hozzászólására (») Okt 16, 2012 /
 
Szia!

Delphi alól soros port kezelésére bevált a TComPort v.3.1, az USB HID kommunikációra a Delphi Jedi.
(#) kiskata válasza watt hozzászólására (») Okt 19, 2012 /
 
Köszönöm...
Biztos igénybe veszem a segítséged(etek).
Most a 6-os és a 2010-es VB-vel ismerkedem... de elég zavaros még... igyekszem...
Akadt a 6-os hoz könyv is... Olvasom...

(#) kiskata válasza Hp41C hozzászólására (») Okt 19, 2012 /
 
Köszönöm a válaszod...
Melyik verziót érdemes egy kezdőnek megpróbálni?
(#) bbatka válasza kiskata hozzászólására (») Okt 19, 2012 /
 
Amit feljebb linkeltem a Lazarus szintén Object Pascal nyelv csak a Delphivel ellentétben ingyenes. Ugyanaz a TComPort használható hozzá mint a Delphi-hez.
Egy kép róla hogy lásd nem egy gagyi. Én még csak ismerkedek vele, de a következő programom ebben fogom készíteni.
A hozzászólás módosítva: Okt 19, 2012

Lazarus.jpg
    
(#) eSDi válasza kiskata hozzászólására (») Okt 20, 2012 /
 
Üdv!

VB.NET-hez tudok kézikönyvet, vagy esetleg akár saját programrészletekkel is tudok szolgálni.
Én személy szerint a .NET-et ajánlom, mert azért valljuk be fejlettebb, mint a VB6 és gond nélkül működik a megírt program Windows Mobile-tól akár Win7-ig is (esteleg 8-ig).
(#) watt válasza kiskata hozzászólására (») Okt 20, 2012 / 1
 
Szia! VB.NET. Gondolom a VB megy valamennyire, akkor csak a fejlesztő környezetet kell megtanulni.
(#) kiskata válasza eSDi hozzászólására (») Okt 20, 2012 /
 
Húúúú... a kézikönyvet megköszönném...
(#) kiskata válasza kiskata hozzászólására (») Okt 27, 2012 /
 
Köszönöm...
(#) bbatka hozzászólása Feb 6, 2013 /
 
Sziasztok!
Segítséget kérek. Belekeveredtem a soros port VB.NET alatti programozásába. Valószínűleg aki jártas a soros port kezelésben kapásból tudja a megoldást a problémámra. Már 3 napom ráment.
Három program érintett a számomra rejtélyes problémában. A saját fejlesztésű VB.NET programom, a HTERM soros port kezelő program és a Portmon monitorozó. A hardver egy PIC vezérlőre épül. A vezérlés lényege hogy a PC-n futó szoftver vezérlő jelet küld a PIC-nek és az A/D mintavételezett adatokat küld vissza. Abban az esetben amikor a HTERM küldi ki a vezérlő jelet a PIC-től érkező adatokat a Portmon rendre monitorozza. Ellenben ha az én általam írt program küldi akkor a vissza érkező adatokból a Portmon nem lát semmit. Most jutottam el oda hogy végül logikai analizátorral is megnéztem a jelet és a PIC hiánytalanul küldi az adatokat mindkét esetben.
Azt már sejtem hogyha a Portmon nem látja az adatokat akkor az valószínűleg azt jelenti hogy a VB.NET-es programom elutasítja a fogadást.
Belinkelem a Portmon monitorozott eseményeit mindkét esetre. Számomra is látható a különbség , csak az ismereteim elég hiányosak a soros port kezelésben.
(#) bbatka hozzászólása Feb 6, 2013 /
 
Még egy kép.
(#) Mengyán válasza bbatka hozzászólására (») Feb 6, 2013 /
 
Kisebb sebességgel próbáltad? Sajnos én sem értek a soros porthoz (kudarc/siker arányom nagyon gyatra), de olvastam korábban, hogy magasabb sebességekhez hardveres átvitel vezérlés szükséges. Egyszerűen megoldható a MAX232 másik felének használatával (+ 2 PIC láb), de tovább nem foglalkoztam vele, mert én egyelőre maradok 9600-nál.
(#) bbatka válasza Mengyán hozzászólására (») Feb 6, 2013 /
 
Szerintem nem ez a probléma oka. Valami VB forrás beállítási problémám lehet.
(#) eSDi válasza bbatka hozzászólására (») Feb 6, 2013 /
 
Üdv! Volt szerencsém már szórakozni a soros port programozásával .NET alatt, nekem eddig ilyen problémám nem volt.
Milyen módszerrel olvasod a portot? Polling-olod, vagy s beérkező byte event-re olvasod ki a puffert?
(#) bbatka válasza eSDi hozzászólására (») Feb 6, 2013 /
 
Kérdéseddel szerintem már meg is oldottad a problémát. Basszus, még sehogy.
Köszi !
Holnap megírom a kódot, vagy legalább is neki állok. Majd jelentkezem mire jutottam.
Esemény vezérelt lesz. Teljesen a Portmonra koncentráltam.
A hozzászólás módosítva: Feb 6, 2013
(#) sirály12 válasza bbatka hozzászólására (») Feb 6, 2013 / 1
 
Valami ilyesmi kell neked:
  1. Private Sub SerialPort_DataRecieved(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
  2.         Dim sTemp As String = Me.SerialPort1.ReadExisting
  3.     End Sub
(#) bbatka válasza sirály12 hozzászólására (») Feb 7, 2013 /
 
Köszi. Délután neki állok. Egy VB6 forrást írok át. Már úgy emlékeztem a vételi résszel már végeztem, de mégsem. eSDi hozzászólásakor esett le hogy a Portmon hogy is működik. A vételi és adási puffert olvassa, de a port kezelését nem végzi, ezért tud a háttérben maradni.
(#) bbatka válasza sirály12 hozzászólására (») Feb 7, 2013 /
 
Köszi. Délután neki állok. Egy VB6 forrást írok át. Már úgy emlékeztem a vételi résszel már végeztem, de mégsem. eSDi hozzászólásakor esett le hogy a Portmon hogy is működik. A vételi és adási puffert olvassa, de a port kezelését nem végzi, ezért tud a háttérben maradni.
(#) bbatka válasza sirály12 hozzászólására (») Feb 9, 2013 /
 
Működik a soros port kezelésem. Köszönöm a segítségeteket. Sajnos még nem érkezik be mind a 32766 Byte és ez egyértelműen a soros port szoftveres kezelésnek tudható be. A HTERM programhoz mind a 32766 Byte beérkezik és így az USB-UART átalakító hibás működését is kizártam.
Mit tehetek hát nézegetem tovább a forrás mintákat. Az is megfordult a fejemben hogy külső DLL-t használok.
(#) bbatka válasza bbatka hozzászólására (») Feb 9, 2013 / 1
 
Úgy tűnik túl vagyok az adat fogadási problémán. Találtam itt egy jó példát gyors adatkezelésre. A kódom így néz ki:
  1. Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, _
  2.                                         ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) _
  3.                                         Handles SerialPort1.DataReceived
  4.  
  5.         Do
  6.             readBuffer = SerialPort1.ReadByte
  7.             IJ = IJ + 1
  8.             scdata(IJ) = readBuffer
  9.  
  10.             If IJ >= 32760 And Form2.RadioButton1.Visible = True Then
  11.                 IJ = 0
  12.                 SerialPort1.DiscardInBuffer()
  13.             End If
  14.             If IJ >= 3000 And Form2.RadioButton2.Visible = True Then
  15.                 IJ = 0
  16.                 SerialPort1.DiscardInBuffer()
  17.             End If
  18.         Loop Until (SerialPort1.BytesToRead = 0)
  19.     End Sub


Csatoltam egy futás képet a programomról érdekességnek. A hardvernek még vannak problémái, de úgyis újra tervezem és gyártom.
A hozzászólás módosítva: Feb 9, 2013
(#) zenetom válasza bbatka hozzászólására (») Feb 9, 2013 /
 
Szia!
Jól néz ki a program!
Mit használsz szintillesztéshez, MAX232?
Szerk.: nekem 57600baud fölött már csődöt mondott, így átálltam optocsatira (6N137), azzal simán megy a 115200 baud is.
A hozzászólás módosítva: Feb 9, 2013
Következő: »»   9 / 14
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem