Hi,
I am trying to get G-Ware[1] to run under wine which provides a user interface to set up Echo Canceller Units made by ClearOne. The unit is connected to the serial port (com1 = ttyS0). The only way I can start the program at all is by configuring wine to act as Windows 95/98 and using native COM dll's. Furthermore, 'GWare.exe' starts 'PSRServe.exe' under native Windows but not under wine so I do the following in a bash file: wine C:\Program\ Files\G-Ware\PSRServe.exe & wine C:\Program\ Files\G-Ware\GWare.exe
When I connect to the device I get endless
fixme:comm:COMM_WaitCommEvent EV_RXFLAG not handled
messages before communication breaks with this:
wine client error:3bc: pipe: Too many open files
After investigating I found out that indeed the number of open pipes to ttyS0 increases statically so I tried to find the reason and suspect the following (using the CVS checkout from 20051102):
In the function COMM_WaitCommEvent in /dlls/kernel/comm.c line 2106 a thread is created for WaitCommEventService. However, in this branch of the if-statement fd is not released (using release_comm_fd). Releasing fd seems to work and the number of open pipes don't get past 200-300.
I am new to wine development and this is just a guess and I might be totally wrong. Unfortunately this does not fix the communication with the device (It reports timeouts and errors retrieving values etc). I guess this has to do with the first fixme messages I mentioned. Can anybody tell me what EV_RXFLAG is used for? Using WINEDEBUG=+tid,+comm I compared the output to what Sysinternals PortMon[2] gives me on native Windows and it really looks promising. Is there a way to display the actual data that was sent/received through the serial port? I tried WINEDEBUG=+io which does not work.
The program uses threads so there might as well be other issues.
Cheers, Cihan
--- [1] http://www.clearone.com/docs/downloads/G-Ware5.0.6.zip (20MB) [2] http://www.sysinternals.com/Utilities/Portmon.html