Tisztelt pákatársak!
Belefutottam egy olyan problémába, ami Nektek is tanulságos lehet.
Adott egy M32 ami RS232-ön adatokat küld egy PC felé. A PC-n csak USB portok vannak, ezért egy USB-RS gyári átalakító van rádugva és így mennek az adatok. Az M32 55 méter hosszú kábelen nyomja az igét, nem lehet közvetlenül USB-s csippel megoldani a dolgot. Ráadásul sima MT kábel, nem spéci adatkábel. Ezért aztán az adatfolyam beállítása 9600,N8,1 mert nem tud nagyobb sebességet a kábel. Az M32 binálisan ad, hogy rövid legyen a kommunikációs idő.
Na ez szép és jó, DE! Ahogy az M32 nyomni kezdi az adatokat, random szerüen kb. 2-10 perc múlva megáll a kommunikáció a PC oldalán, mert a hülye Windows azt mondja, hogy a porton lévő eszköz az egy speciális egér és fölrak hozzá egy drivert, ami megakasztja a kommunikációt.
Csak akkor indul újra, ha lehúzom és újra visszadugom az USB-re a küttyüt.
A projektjein 90%-a PC-s kommunikáción alapul, tehát van már némi tapasztalatom, de ezen én is elakadtam. Kipróbáltam másik tipusú USB-RS átalakítót, mondván nem korrekt a drivere az eredetinek. A negyedik tipus után is fent állt a probléma, tehát nem az átalakító driver a hibás. Próbáltam az XP-t idomítani, letiltani az egeret, hardverprofilt kialakítani, kértem segítséget egy mikiszoftos ismerőstől, de a hiba akkor is maradt.
Ha rövid kábellel 115,2K-ra nyomtam a sebességet, akkor nem jelentkezett a gond, de a projektem ezt nem tette lehetővé.

Végkövetkeztetés: át kellett térnem a 7 bites kommunikációra, mert másként nem ment a dolog. Igen ám de ekkor nem lehet 127-nél nagyobb értékű bájtot átküldeni. Ezért vagy karakteresen vagy HEX-be kell átküldeni az adatokat. Igy a 15 bájtnyi adat HEX-ben 31-re hízott, de legalább megy.
Még egy tapasztalat: VB6 Val függvénye a HEX számokat is átalakítja decimális számra, ha egy "&H" karakterpárt illesztünk elé. A súgó szerint LONG tipusú változót kapunk vissza ilyenkor. Ez jól hangzik csak nem igaz.

Ugyanis, ha a beküldött HEX szám H0000AAAA, akkor ezt egy negatív számra konvertálja, mert csak 4 karakteres HEX számot tud kezelni. Tehát, ha nullákkal kezdődik a HEX szám és 8 karakterből áll, akkor kiakad és hülyeségre konvertál.
Szóval a mikiszofttal tele lett a buckám, egy projekten bellűl két ilyen bugra bukkanni az már sok. Kár, hogy az emotikonok között nincs egy nagy fa...k, mert akkor kitenném a Bill Geccccc -nek.
Szóval ha terveztek valamilyen cuccot, akkor figyeljetek az ilyenekre.
