Sziasztok!
Putty soros port segítségével adatot dumpolok: egérrel copy -> putty paste.
Az adat hexa értékeket tartalmazó, sorvégjellel (CR) lezárt változó hosszúságú (3..10 karakter) text sorokból áll. A sorok száma több ezer is lehet.
Az adatok nagyon lassan haladtak át a soros vonalon, ezért megnéztem mi is történik.
Az egyes sorok között érthetetlen módon véletlenszerűen 7..150ms szünetet látok. Nagy scroll buffert használtam, de ennek a változtatása sem adott más eredményt. A pontos protokoll 19200 8N1 xon/xoff, - de xon/xoff sem fordult elő az átvitel közben.
Ugyanez más terminál programmal képes teljes sebességgel működni.
Tud e valaki megoldást?
További antipozitív eredmény:
Az ellenállomás az echo kikapcsolása után a sorok között a szünet fix ~460ms értékre áll be.
Abszolút használhatatlan. :(
- 2051 megtekintés
Hozzászólások
Minek a soros portjára írsz? Más progi talán nem veszi figyelembe a handshake-et, ha van.
- A hozzászóláshoz be kell jelentkezni
Fordítva kell nézni! A putty dumpol(-na), ha nem állna meg közben. Ahhoz, hogy jogosan megálljon a vevőnek kellene xoff-ot adnia. De nem ad. Tehát a putty szünetelteti az adást a leírt intervallumra, azaz valamin gondolkodik.
A fizikai kapcsolat valódi soros port, az ellenség pedig egy pic18f14k22. A programot én írtam. A vevő buffer 16 karakter, a high watermark ugyan 12 karakter, de a karaktert vétel után 3.75..15us alatt feldolgozza. (Megmértem.) Mivel 19200 baud esetén a bit ideje ~53us, nyugodtan állíthatom, hogy a bufferben nagy ritkán előfordul egy-egy karakter. ;) Tehát xoff soha.
Ha a fentieket nem tudnánk, akkor is látnám az xoff-ot, mivel logikai analizátorral rögzítem a forgalmat.
Szóval, ha másik terminál emulátor működik teljes sebességgel, akkor a putty a ludas. Lecserélni meg nem szeretném megszokás, illetve egyéb paraméterezhetősege miatt.
- A hozzászóláshoz be kell jelentkezni
Mások pont ezt kérték a putty-ba. 2007 óta lehet, hogy megvalósították:
http://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/character-li…
- A hozzászóláshoz be kell jelentkezni
Éppen ezért frissítettem tegnap a 2013-as developer snapshot-ról a legfrissebbre. Persze nem oldott meg semmit.
Character delay az abszolút nincs. Ha meg line delay lenne, akkor az hasonlítana egy bizontos értékre és nem össze-vissza szórna.
- A hozzászóláshoz be kell jelentkezni
Linux alól ser2net proxy nem jobb lenne neked?
- A hozzászóláshoz be kell jelentkezni
Nem rossz ötlet! ;)
Szóval telneteljek be a saját gépemre(Windows XP), hogy a saját gépemen található soros portra kopipészteljek egy text filét? Ez azért nem ennyire bonyolult. Inkább írtam egy programot, amelynek a közepében kb. ilyen van:
Inchars=read(STDIN_FILENO, Buffer, sizeof(Buffer));
write(comport,Buffer,Inchars);
Használata:
sercopy /dev/ttyS0 < InputFile
Persze mindez cygwin alatt.
A sebesség 1918 char/s 19200baud esetén, az átvitel hibátlan.
Persze a java egyszerűbb lenne. :)))
- A hozzászóláshoz be kell jelentkezni
Ha ez ennyire egyszerűen megoldható, akkor én egy két soros shell scriptet írnék:
- setserial --> sorosporti paraméterek beállítása
- cp --> másolás
Tudom, nem teljesen kerek, mert nincs lock ellenőrzés és a lockfile sem jön létre. Mondjuk úgy: lehet még csicsázni a scriptet! :-)
- A hozzászóláshoz be kell jelentkezni
Ez tényleg jó, de... ;)
A két megoldás teljesen egyenértékű. Amivel nem szeretek foglalkozni az a cygwin-windows side effectek halmaza. A feladat lényege, hogy a szoftverfejlesztő kezébe kell adnom az inputokat (adatok, programok) és egy kőbaltát, amivel ezeket eljuttatja (akár Windows 10 alatt is!) a mikrokontrollerhez. A kopipészt egyszerűnek tűnt, de nem jött össze. A putty konfigurációs lehetőségeit is felhasználtam a kommunikáció megvalósításához, mert a mikrokontrollerre teszteléskor terminállal is lehet csatlakozni.
Az adatok betöltése mellett az automatikus formátum felismerés is bekerült a programba. Ha meg véletlenül a putty is kapcsolódik a portra, akkor úgy sem lehet megnyitni, tehát ezt is lekezei.
A script se lenne bonyolult, ha AIX vagy linux alatt írnám, de cygwin esetén az a biztos, ha shellt sem indítok. Különösen text feldolgozás esetén. :(
- A hozzászóláshoz be kell jelentkezni