Portál AbcLinuxu, 12. května 2025 12:42
Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC, který používám k notebooku, kde není seriový port. Chtěl bych komunikovat s několika zařízeními(od Kirk) přes seriový port. Software, který se používá pro komunikaci s Kirk-em je právě pod windows, ale chtěl bych ho používat ve Wine. Bohužel spojení se nenaváže. Nalinkoval jsem si COM port pro wine
ln -s /dev/ttyUSB0 com3Mám vyzkoušené propojení na stolním kompu, kde jsou standardní COM porty a přes ně to funguje bez problému. Moje otázky jsou:
Jak debugovat komunikaci na FTDI convertoru? Napadá vás co bych mohl vyzkoušet, abych to rozběhl?Díky.
mkfifo ~/.wine/dosdevices/com1 cat ~/.wine/dosdevices/com1 > /dev/ttyUSB0Ale je blbý, že je pojmenovaná roura jen jednosměrná. Ještě by to šlo obousměrně přes virtuální terminál nějak takhle (man pty):
ln -s /dev/ptyz1 com1 #vytvoreni linku na master terminal cat /dev/ttyz1 > /dev/ttyUSB0 & #cteni ze slavu do USB cat /dev/ttyUSB0 > /dev/ttyz1 & #cteni z USB do slavuTaky by to šlo samozřejmě logovat modifikací toho USB driveru (možná, že má nějaké parametry typu debug, kdy loguje do dmesg všechno).
http://bugs.winehq.org/show_bug.cgi?id=8783ale i tam to neni vyresene. Ale kazdopadne vim, ze je to vec Wine. Coz je ted skoda a nevim jak to udelat, abych mohl na svem firemnim notasu shodit winxp a pouzivat linux, protoze se potrebuji pripojovat na servisni seriovy port. Mozna to zkusit jeste pres virtualni winxp...
--- wine-1.1.14-orig/dlls/ntdll/serial.c 2009-01-30 11:54:01.000000000 -0500 +++ wine-1.1.14/dlls/ntdll/serial.c 2009-02-02 07:31:36.000000000 -0500 @@ -1040,13 +1040,8 @@ static NTSTATUS wait_on(HANDLE hDevice, if (commio->evtmask & EV_RXFLAG) FIXME("EV_RXFLAG not handled\n"); - if ((status = get_irq_info(fd, &commio->irq_info)) && - (commio->evtmask & (EV_BREAK | EV_ERR))) - goto out_now; - - if ((status = get_modem_status(fd, &commio->mstat)) && - (commio->evtmask & (EV_CTS | EV_DSR| EV_RING| EV_RLSD))) - goto out_now; + status = get_irq_info(fd, &commio->irq_info); + status = get_modem_status(fd, &commio->mstat); /* We might have received something or the TX buffer is delivered */ *events = check_events(fd, commio->evtmask
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.