http://bugs.winehq.org/show_bug.cgi?id=31563
Bug #: 31563 Summary: Problem with an usb-serial card reader Product: Wine Version: 1.5.11 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ntdll AssignedTo: wine-bugs@winehq.org ReportedBy: matthieu.nue@gmail.com Classification: Unclassified
I would like to use a cards reader (twin30 http://medprice.fr/lecteur-carte-vitale-fixe/lecteur-sesam-vitale-twin30-usb...) on linux with a windows programm. The cards reader is a native serial device but it solds with a USB-serial converter.
For testing the cards reader, i use a little programme named cpgesw32.exe. On windows, it works. On linux, it works with the equivalent program for linux. So my card reader works on linux.
Now i want testing my cards reader with cpgesw32.exe on linux with wine. The cards reader freeze after several seconds.
So i look the source code of wine.
The freeze of the device happens with the command KERNEL32.WriteFile(0000004c,0033f2a4,00000009,0033f13c,00000000).
To continue, i used an usb sniffer. Before the freeze, the cpgesw32's program call several command : KERNEL32.GetCommState(0000004c,003552c0) KERNEL32.SetCommState(0000004c,003552c0) KERNEL32.GetCommTimeouts(0000004c,0033f8f8) and others.
When KERNEL32.GetCommState(0000004c,003552c0) is called, the wine programm launch : - get_baud_rate - get_line_control - get_hand_flow - get_special_chars
With the sniffer, i noticed that only the first command (get_baud_rate) transmit a packet on the usb. After that, nothing on the usb port before the WriteFile.
I noticed that if i open a connexion with my serial-usb device, only one command works. If i want a second command, i need to close the conexion and reopen it.
I suppose this is the object of the "server_get_unix_fd" function for wine.
So,
- is everyserial device works like that (one command by connexion) or is it only my device ? - is someone can help me on the "server_get_unix_fd" function ?
Thank you and sorry for my english (french speaker).
Matteli