Forum Delphi.cz

C a C++ => Obecné => Téma založeno: hlucheucho 11-06-2012, 14:00:33

Název: padá komunikace s RS485 pod Windows 7 64 bitů
Přispěvatel: hlucheucho 11-06-2012, 14:00:33
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
Název: Re:padá komunikace s RS485 pod Windows 7 64 bitů
Přispěvatel: Tomáš Jantač 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?
Název: Re:padá komunikace s RS485 pod Windows 7 64 bitů
Přispěvatel: hlucheucho 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).
Název: Re:padá komunikace s RS485 pod Windows 7 64 bitů
Přispěvatel: hlucheucho 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
Název: Re:padá komunikace s RS485 pod Windows 7 64 bitů
Přispěvatel: Petr Fiser 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.
Název: Re:padá komunikace s RS485 pod Windows 7 64 bitů
Přispěvatel: hlucheucho 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?