Delphi + soros port = hol az adat ?

Delphi + soros port = hol az adat ?
2006-08-16T15:19:37+02:00
2007-08-24T10:53:25+02:00
2022-11-05T15:40:39+01:00
Zsemly
Sziasztok!

A kovetkezo problemam adodott:
Van egy fejlesztendo eszkozom ami soros porton kommunikal egy laptoppal (USB-serial atalakiton keresztul).
A kommunikaciot delphi TComPort segitsegevel csinalnom.
Az eszkozhoz eljutnak a keresek es az reagal is.
Azonban az adatok egy resz nem mindig erkezik meg.
Ugy tunik nekem minha a Win idoben periodikusan eldobna egy halom adatot. (Vagy a buffer megtelik es mivel a win nem torodik vele a maradek adatok elvesznek)
Persze ha ujra lekerem ezeket az adokat az eszkoz el tudja kuldeni oket.
Sajnos a buffer meret Tcomportban allithato reszenek (FIFO) atalitasa nem oldotta meg a problemat.
Mit lehet tenni?
Mutasd a teljes hozzászólást!
Egy kis kiegészítés...
Én a TMS Software TMS Async32 komponensét használom. Link

Ebben pl a TVaComm komponensnél a DirectWrite property-t kell true-ra állítani és minden gond megszünik, ami a windows hülyeségéből származna.
Mutasd a teljes hozzászólást!

  • Terminálprogramból direkt módon meg tudod szólítani az eszközt? Ha válaszol, rendben megjönnek az adatok? Tipp: még az is lehet, hogy az USB/RS232 átalakító drivere nem az igazi.
    Ilyen összeállításom nekem is van: NoteBook USB/RS232 illesztő + Win XP + driver + saját adatgyűjtő TComPort-tal egy mérőszondához. Semmi gond vele, ilyesminek illik működnie. Ha adsz egy Mail-t, tudok küldeni soros teszter programot. Üdv:
    Mutasd a teljes hozzászólást!
  • Én a ComDrv32 komponenst használom. Ezzel megesik néha, hogy egy csomag nem egyben, hanem két darabban érkezik meg. Ennek lekezelésére írtam egy kis rutint, és tökéletesen működik. Ha érdekel, küldj egy mailt és válaszban küldöm a komponenst. Pofonegyszerű használni.
    Mutasd a teljes hozzászólást!
  • A windows puffereli az adatokat és a neki tetsző időközönként egyszerre küld ki valahány bájtot (általában valamennyi új adat érkezése után kiküldi a pufferkorábbi tartalmát, de az új adat egy részét még nem).
    A komponensnek (ha normálisan megírták) kell lennie egy olyan tulajdoságának (boolean), amivel a direkt kommunikációt lehet engedélyezni a windowsos helyett.
    Mutasd a teljes hozzászólást!
  • Egy kis kiegészítés...
    Én a TMS Software TMS Async32 komponensét használom. Link

    Ebben pl a TVaComm komponensnél a DirectWrite property-t kell true-ra állítani és minden gond megszünik, ami a windows hülyeségéből származna.
    Mutasd a teljes hozzászólást!
  • Jó tudni, köszi a linket. :)
    Mutasd a teljes hozzászólást!
  • Dejan Crnila fele TComPort-ot hasznalom, meg nem talaltam meg a directWritenek megfelelo dolgot, de majd keresem. Megnezem ezt amit belinkeltel.
    Mutasd a teljes hozzászólást!
  • Nincs is benne (legalábbis a 2.64-es verzióban nincs). Milyen hosszú üzenetek és milyen bps-sel röpködnek a vonalon, hogy pufferelési gondok merülnek fel? Handshake van? Üdv:
    Mutasd a teljes hozzászólást!
  • Nekem szintén az USB-Serial átalakítóval volt gondom és szintén a TComPort-al.

    A probléma az volt, hogy csak kb. minden második adatcsomag ment át rajta. Érdekesség, hogy ugyanezen szoftverem hagyomásos COM porttal tökéletesen működött.


    Megoldást jelentett viszont a direkt írás bekapcsolása.

    Ezt ha jól emlékszem a DirectWrite := True utasítással beállítani, ez pedig a Comport.Core -nak a tulajdonsága. (nincs előttem a kód, de valami ilyen volt)


    Próbálkozz ezzel, nekem bejött :)
    Mutasd a teljes hozzászólást!
  • Az eszkozhoz eljutnak a keresek es az reagal is.

    Az adás tehát jó.
    A vételkor valóban lehetséges, hogy az üzenet több adatcsomagban érkezik külön-külön. A kapott üzenet végét jelölheti egy lezáró karakter (pl. CRLF), vagy lehet az üzenet fix hosszú. Ha van lezáró karakter, ezt állítsd be EventChar-nak.
    A vételhez két eseménykezelő kellhet, a COMPortRxChar és a COMPortRxFlag. Az elsőben egy előzőleg üres stringhez fűzöd hozzá a bejövő adatcsomagokat (és számolod a bejött karaktereket). A másodikban figyeled az EventChar-t, ha van. Így csinálod?
    Mutasd a teljes hozzászólást!
  • Sziasztok!

    A régi kérdésemhez lenne egy folytatólagos kérdésem a Dejan Crnila fele TComPort-ot hasznalom. A Delphi2007-es környezetben használta valaki ezt a csomagot? A Delpi 2006-ban elmeletileg menne, igaz én még a D7-ben dolgoztam eddig.
    Köszi
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd