[Wine] Re: Comport Serial Port Card (8 Ports)

LJB wineforum-user at winehq.org
Mon Jun 23 14:50:04 CDT 2008


Uwe Bonnes wrote:
> 
> Probably the programm requests some notification that isn't
> delivered. Either because Wine doesn't provide that notification or because
> the card or the driver for that card doesn't provide the notification. Did
> you try on a another serial port, like the chipset built in port?
> 
> -- 
> Uwe Bonnes                bon at elektron.ikp.physik.tu-darmstadt.de
> 
> Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
> --------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------


Let me state my problem clearly.

I am trying to get the Garmin Mapsource program to communicate with my GPS over a serial port.   Mapsource autodetects the GPS but will not transfer data to or from it.  

For debugging purposes, I have connected a null modem cable from my Motherboard serial port  (Intel 865G chipset)  to a USB/serial adapter.  I can communicate perfectly between two minicom terminal programs, but when trying to communicate between minicom and teraterm under wine I have trouble.    Characters typed in the teraterm window appear in the minicom window immediately, but characters typed in the minicom either take 10 seconds or so to appear in the teraterm window, or do not appear at all.    The symptoms are identical regardless of hardware handshaking settings or whether the teraterm/wine program uses the MB or USB serial port. 

Starting teraterm,  typing some characters into minicom, and quitting teraterm produces the following trace:


Code:

fixme:font:WineEngCreateFontInstance Untranslated charset 255
fixme:imm:ImmReleaseContext (0x700a2, 0x12ca18): stub
trace:comm:io_control 0x74 IOCTL_SERIAL_GET_COMMSTATUS (nil) 0 0x32ec84 20 0x32ec2c
trace:comm:io_control 0x74 IOCTL_SERIAL_SET_QUEUE_SIZE 0x32ec98 8 (nil) 0 0x32ec4c
fixme:comm:set_queue_size insize 8192 outsize 2048 unimplemented stub
trace:comm:io_control 0x74 IOCTL_SERIAL_PURGE 0x32ecb4 4 (nil) 0 0x32ec60
trace:comm:SetCommTimeouts (0x74, 0x32ecc4)
trace:comm:io_control 0x74 IOCTL_SERIAL_SET_TIMEOUTS 0x32ec8c 20 (nil) 0 0x32ec40
trace:comm:dump_dcb bytesize=8 baudrate=9600 fParity=0 Parity=0 stopbits=1
trace:comm:dump_dcb ~IXON ~IXOFF
trace:comm:dump_dcb fOutxCtsFlow=0 fRtsControl=1
trace:comm:dump_dcb fOutxDsrFlow=0 fDtrControl=1
trace:comm:dump_dcb ~CRTSCTS
trace:comm:io_control 0x74 IOCTL_SERIAL_SET_BAUD_RATE 0x32ec98 4 (nil) 0 0x32ec40
trace:comm:io_control 0x74 IOCTL_SERIAL_SET_LINE_CONTROL 0x32ec9d 3 (nil) 0 0x32ec40
trace:comm:io_control 0x74 IOCTL_SERIAL_SET_HANDFLOW 0x32ec80 16 (nil) 0 0x32ec40
trace:comm:io_control 0x74 IOCTL_SERIAL_SET_CHARS 0x32ec92 6 (nil) 0 0x32ec40
trace:comm:SetCommMask handle 0x74, mask 0
trace:comm:io_control 0x74 IOCTL_SERIAL_SET_WAIT_MASK 0x32ecb4 4 (nil) 0 0x32ec60
trace:comm:SetCommMask handle 0x74, mask 1
trace:comm:io_control 0x74 IOCTL_SERIAL_SET_WAIT_MASK 0x32ecb4 4 (nil) 0 0x32ec60
trace:comm:io_control 0x74 IOCTL_SERIAL_WAIT_ON_MASK (nil) 0 0x7e0569e4 4 0x7e056974
trace:comm:get_modem_status 4126 -> MS_DSR_ON  MS_CTS_ON  
trace:comm:check_events mask 0x00000001
trace:comm:check_events old->rx          0x0000132d vs. new->rx          0x0000132d
trace:comm:check_events old->tx          0x000001ec vs. new->tx          0x000001ec
trace:comm:check_events old->frame       0x00000012 vs. new->frame       0x00000012
trace:comm:check_events old->overrun     0x00000000 vs. new->overrun     0x00000000
trace:comm:check_events old->parity      0x00000000 vs. new->parity      0x00000000
trace:comm:check_events old->brk         0x00000000 vs. new->brk         0x00000000
trace:comm:check_events old->buf_overrun 0x00000000 vs. new->buf_overrun 0x00000000
trace:comm:wait_for_event device=0x74 fd=0x00000013 mask=0x00000001 buffer=0x7e0569e4 event=0x88 irq_info=0x12e904

trace:comm:get_modem_status 4126 -> MS_DSR_ON  MS_CTS_ON  
trace:comm:check_events mask 0x00000001
trace:comm:check_events old->rx          0x0000132d vs. new->rx          0x0000132d
trace:comm:check_events old->tx          0x000001ec vs. new->tx          0x000001ec
trace:comm:check_events old->frame       0x00000012 vs. new->frame       0x00000012
trace:comm:check_events old->overrun     0x00000000 vs. new->overrun     0x00000000
trace:comm:check_events old->parity      0x00000000 vs. new->parity      0x00000000
trace:comm:check_events old->brk         0x00000000 vs. new->brk         0x00000000
trace:comm:check_events old->buf_overrun 0x00000000 vs. new->buf_overrun 0x00000000
/*repeat above section many times*/


trace:comm:get_modem_status 4126 -> MS_DSR_ON  MS_CTS_ON  
trace:comm:check_events mask 0x00000001
trace:comm:check_events old->rx          0x0000132d vs. new->rx          0x0000132e
trace:comm:check_events old->tx          0x000001ec vs. new->tx          0x000001ec
trace:comm:check_events old->frame       0x00000012 vs. new->frame       0x00000012
trace:comm:check_events old->overrun     0x00000000 vs. new->overrun     0x00000000
trace:comm:check_events old->parity      0x00000000 vs. new->parity      0x00000000
trace:comm:check_events old->brk         0x00000000 vs. new->brk         0x00000000
trace:comm:check_events old->buf_overrun 0x00000000 vs. new->buf_overrun 0x00000000

trace:comm:io_control 0x74 IOCTL_SERIAL_GET_COMMSTATUS (nil) 0 0x32fba8 20 0x32fb50
trace:comm:io_control 0x74 IOCTL_SERIAL_GET_TIMEOUTS (nil) 0 0x32fac0 20 0x32fb3c
/*repeat above section many times*/

trace:comm:get_modem_status 4126 -> MS_DSR_ON  MS_CTS_ON  
trace:comm:check_events mask 0x00000001
trace:comm:check_events old->rx          0x00001345 vs. new->rx          0x00001345
trace:comm:check_events old->tx          0x000001ec vs. new->tx          0x000001ec
trace:comm:check_events old->frame       0x00000012 vs. new->frame       0x00000012
trace:comm:check_events old->overrun     0x00000000 vs. new->overrun     0x00000000
trace:comm:check_events old->parity      0x00000000 vs. new->parity      0x00000000
trace:comm:check_events old->brk         0x00000000 vs. new->brk         0x00000000
trace:comm:check_events old->buf_overrun 0x00000000 vs. new->buf_overrun 0x00000000
trace:comm:wait_for_event device=0x74 fd=0x00000013 mask=0x00000001 buffer=0x7e0569e4 event=0x88 irq_info=0x12fc7c

trace:comm:get_modem_status 4126 -> MS_DSR_ON  MS_CTS_ON  
trace:comm:check_events mask 0x00000001
trace:comm:check_events old->rx          0x00001345 vs. new->rx          0x00001345
trace:comm:check_events old->tx          0x000001ec vs. new->tx          0x000001ec
trace:comm:check_events old->frame       0x00000012 vs. new->frame       0x00000012
trace:comm:check_events old->overrun     0x00000000 vs. new->overrun     0x00000000
trace:comm:check_events old->parity      0x00000000 vs. new->parity      0x00000000
trace:comm:check_events old->brk         0x00000000 vs. new->brk         0x00000000
trace:comm:check_events old->buf_overrun 0x00000000 vs. new->buf_overrun 0x00000000
trace:comm:get_modem_status 4126 -> MS_DSR_ON  MS_CTS_ON  
trace:comm:check_events mask 0x00000001
/*repeat above section many times*/

trace:comm:io_control 0x74 IOCTL_SERIAL_PURGE 0x32e360 4 (nil) 0 0x32e30c
trace:comm:io_control 0x74 IOCTL_SERIAL_CLR_DTR (nil) 0 (nil) 0 0x32e30c
trace:comm:SetCommMask handle 0x74, mask 0
trace:comm:io_control 0x74 IOCTL_SERIAL_SET_WAIT_MASK 0x32e360 4 (nil) 0 0x32e30c
fixme:htmlhelp:HtmlHelpW HH case HH_CLOSE_ALL not handled.
trace:comm:get_irq_info TIOCGICOUNT err Bad file descriptor
warn:comm:get_modem_status ioctl failed
trace:comm:wait_for_event get_modem_status failed
trace:comm:check_events mask 0x00000001
trace:comm:check_events old->rx          0x00001345 vs. new->rx          0x00000000
trace:comm:check_events old->tx          0x000001ec vs. new->tx          0x00000000
trace:comm:check_events old->frame       0x00000012 vs. new->frame       0x00000000
trace:comm:check_events old->overrun     0x00000000 vs. new->overrun     0x00000000
trace:comm:check_events old->parity      0x00000000 vs. new->parity      0x00000000
trace:comm:check_events old->brk         0x00000000 vs. new->brk         0x00000000
trace:comm:check_events old->buf_overrun 0x00000000 vs. new->buf_overrun 0x00000000
warn:comm:check_events TIOCINQ returned error
trace:comm:get_irq_info TIOCGICOUNT err Bad file descriptor
warn:comm:get_modem_status ioctl failed
trace:comm:wait_for_event get_modem_status failed
trace:comm:check_events mask 0x00000001
trace:comm:check_events old->rx          0x00001345 vs. new->rx          0x00000000
trace:comm:check_events old->tx          0x000001ec vs. new->tx          0x00000000
trace:comm:check_events old->frame       0x00000012 vs. new->frame       0x00000000
trace:comm:check_events old->overrun     0x00000000 vs. new->overrun     0x00000000
trace:comm:check_events old->parity      0x00000000 vs. new->parity      0x00000000
trace:comm:check_events old->brk         0x00000000 vs. new->brk         0x00000000
trace:comm:check_events old->buf_overrun 0x00000000 vs. new->buf_overrun 0x00000000
warn:comm:check_events TIOCINQ returned error
/*end*/





By adding trace statements and recompiliing, I determined that the ReadFile function is called and it always returns false, setting a STATUS_PENDING error.







More information about the wine-users mailing list