Autor Téma: padá komunikace s RS485 pod Windows 7 64 bitů  (Přečteno 3783 krát)

hlucheucho

  • Host
Dobrý den,

dokud program běžel pod Win XP 32 bitů, nebyly s ním žádné problémy. Nyní pod Win 7 64 bitů vypadává komunikace s RS485. Zkoušel jsem několik nastavení kompatibility a XP mode na virtuálním PC, obojí neúspěšně. V debuggeru nebo po spuštění přes vzdálenou plochu funguje normálně.  Tyto problémy pozoruji jen u kanálu B FT2232D, kanál A  použitý jako SPI a GPIO funguje normálně.

IDE: C++ builder 2010
OS: Win 7 SP1 64 bitů
HW: FT2232D, ADM2483

hu

Offline Tomáš Jantač

  • Nováček
  • *
  • Příspěvků: 33
  • Karma: 3
    • Verze Delphi: 7, XE4/5/7
Re:padá komunikace s RS485 pod Windows 7 64 bitů
« Odpověď #1 kdy: 11-06-2012, 16:01:34 »
Jakým způsobem používáte sériový port?
Máte na to nějakou komponentu, přistupujete přímo přes "CreateFile('\\.\COMxx'.."., nebo používáte knihovnu "FTDI200.dll"?
Jak často k výpadku dochází a jak se to projevuje?

hlucheucho

  • Host
Re:padá komunikace s RS485 pod Windows 7 64 bitů
« Odpověď #2 kdy: 12-06-2012, 08:53:38 »
Doba, po které nastane problém, je několik minut od spuštění aplikace, děje se nepravidelně.  Pak se chyba opakuje při každém vysílání. Podle logu chyby do DB špatně poslouchá sám sebe při vysílání na RS485.

používám API od FTDI (ftd2xx.dll).

hlucheucho

  • Host
Re:padá komunikace s RS485 pod Windows 7 64 bitů
« Odpověď #3 kdy: 12-06-2012, 15:47:14 »
Ještě doplním. K první chybě dojde tak, že neobdržím úplnou odpověď periferie.  Zbylá část odpovědi dorazí později a zůstane ve vstupním bufferu.  Toto "smetí" pak naruší další příjem dat. Zřetězení chyb a zhavarování komunikace lze zabránit vyprázdněním vstupního bufferu před započetím každé relace. Zůstává otázka jak zabránit vzniku první chyby.

hu

Offline Petr Fiser

  • Příspěvků: 2
  • Karma: 0
Re:padá komunikace s RS485 pod Windows 7 64 bitů
« Odpověď #4 kdy: 12-06-2012, 17:32:56 »
neni dobre spolehat na to, ze data vzdy dojdou pohromade. alespon jsem to tak z posledni reakce pochopil. musi se to osetrit programove. pockat na konec zpravy, a pripadny zacatek dalsi (podle tebe smeti) si podrzet nekde v pameti a nasledna data k nim pripojit. provozuji na W7 64bit ser. komunikaci bezne a bez problemu. Nepovazoval bych to tedy za chybu.

hlucheucho

  • Host
Re:padá komunikace s RS485 pod Windows 7 64 bitů
« Odpověď #5 kdy: 12-06-2012, 20:21:12 »
Manuál k použitým funkcím je na  http://www.ftdichip.com/Support/Documents/ProgramGuides/D2XX_Programmer's_Guide(FT_000071).pdf

jsou použity FT_SetTimeouts a FT_read. FT_read se nevrátí, pokud nepřečte určený počet znaků nebo pokud nevyprší timeout nastavený pomocí FT_SetTimeouts.  Neřešit co zůstalo ve vstupním bufferu po vypršení timeoutu byla chyba, už je opravená. U Win XP bez problémů stačil timeout 150ms. U Win 7 někdy nestačí 300ms. Co tam sežere tolik času?

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

Jméno: E-mail:
Ověření:
Datový typ v Delphi, který má True a False: