Portál AbcLinuxu, 1. června 2025 22:59


Dotaz: Problém s komunikací přes RS232 v QEMU

20.6.2006 21:28 N0rT0n | skóre: 9 | blog: Lama | Brno
Problém s komunikací přes RS232 v QEMU
Přečteno: 258×
Odpovědět | Admin
Zdravím všechny, zaskočil mě problém, na který nemohu již 14 dní najít recept.

Spravuji profesionální meteorologickou stanici (Meteos 5). Součástí dodávky je i program WinMeteo (samozřejmě pro Windows), který velice neochotně běží pod Wine. Dostal jsem od dodavatele i specifikaci protokolu, kterým meteostanice komunikuje skrz RS232 s PC, ale nemám v současnosti dost prostoru a času napsat program na obsluhu celého systému. Proto jsem sáhl po emulátoru QEMU.

Pod qemu mám rozjetý (legální) Windows 2003 server Standard Edition, ve kterém běží onen WinMeteo. Program funguje naprosto v pořádku, normálně komunikuje se stanicí přes COM2 namapovaný na /dev/ttyS1 v Linuxu.

Problém ovšem nastane v případě, kdy žádám o větší objem dat (tj. pokaždé, když chci downloadnout obsah paměti meteostanice). V okně, které zobrazuje statistiku připojení je vidět TX: 75B, RX: 277B. Od té doby se komunikace zadrhne a vše je ukončeno po cca 20 sekundách timeoutem.

Nejzajímavější však na celém problému je, že automatický download okamžitých hodnot (1x za minutu) projde úplně v pohodě, data se stáhnou, uloží a skript obsluhující informační systém vše v pořádku naimportuje do MySQL databáze. Komunikace s jiným přístrojem (GasMonitor Brüel & Kjæl na ttyS1 funguje jinak bez problému).

Celá věc mi nedala spát a po několika desítkách různých pokusů jsem si (se zavřenýma očima) půjčil od kolegy notebook s Windows XP, nainstaloval WinMeteo a tam se vše chovalo úplně normálně.

Nevěděl by, prosím, někdo recept jak "na to"? Možná jste již někdo řešil podobný problém.

Na závěr mého dotazu bych upřesnil pár detailů celého systému:

Jedná se o standardní 32-bitový PC, na kterém běží FC5.

stty hlásí:

[root@meteo ~]# stty -aF /dev/ttyS1
speed 57600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = undef; eol2 = undef; 
start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; 
time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany 
-imaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

QEMU se spouští příkazem:

qemu -kernel-kqemu -m 128 -serial /dev/ttyS1 -hda Wserver2003.iso -cdrom winmeteo.iso -boot c\ 
-net nic -net tap

QEMU kompilované ze zdrojáků i s jaderným modulem KQEMU pod gcc 3.4.2.

Za případné odpovědi velice děkuji.

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.6.2006 12:51 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Problém s komunikací přes RS232 v QEMU
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co takhle mu přidat více paměti?
21.6.2006 17:58 N0rT0n | skóre: 9 | blog: Lama | Brno
Rozbalit Rozbalit vše Re: Problém s komunikací přes RS232 v QEMU
Taktéž děkuji za námět.

Výsledek je stejný, i když mu přidám paměti na 256 MB, 512 MB i více. Vzhledem k výsledku jsem nakonec uznal za dostačující mu nechat "jen" 128 MB paměti. Pro úplnost bych ještě dodal, že jsem si hrál i s nastavováním UART pro příslušný port.

21.6.2006 15:22 jan.xxx
Rozbalit Rozbalit vše Re: Problém s komunikací přes RS232 v QEMU
Odpovědět | | Sbalit | Link | Blokovat | Admin
Kdyby bylo možné uvolnit specifikaci protokolu komunitě, třeba by Vám s psaním programu někdo pomohl. Tohle je svým způsobem nesystémové řešení.
21.6.2006 17:48 N0rT0n | skóre: 9 | blog: Lama | Brno
Rozbalit Rozbalit vše Re: Problém s komunikací přes RS232 v QEMU
Děkuji za názor. Toto řešení mě také napadlo, nicméně výrobce předmětné meteorologické stanice si to nepřeje. Už tak mi dalo docela dost práce je přemluvit na přesnou specifikaci toho protokolu.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.