![]() |
|
|
|
Thread Tools | Display Modes |
|
|
|
|
#1 |
|
Newbie
Join Date: May 2006
Posts: 1
Rep Power: 0
![]() |
Serial Port Programming
I'm trying to emulate an existing program which writes to the Serial port.
Using Portmon, I can see that the existing application does the following: 0 0.00005559 LED.exe IRP_MJ_CREATE Serial0 SUCCESS Options: Open 1 0.00000615 LED.exe IOCTL_SERIAL_GET_TIMEOUTS Serial0 SUCCESS 2 0.00000168 LED.exe IOCTL_SERIAL_SET_TIMEOUTS Serial0 SUCCESS RI:0 RM:10 RC:1000 WM:1 WC:1000 3 0.00000168 LED.exe IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS 4 0.00000140 LED.exe IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS 5 0.00000140 LED.exe IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS 6 0.00000168 LED.exe IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS 7 0.00000140 LED.exe IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS 8 0.00000140 LED.exe IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS 9 0.00000140 LED.exe IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS 10 0.00000168 LED.exe IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS 11 0.00000950 LED.exe IOCTL_SERIAL_SET_BAUD_RATE Serial0 SUCCESS Rate: 1200 12 0.00000447 LED.exe IOCTL_SERIAL_SET_RTS Serial0 SUCCESS 13 0.00000503 LED.exe IOCTL_SERIAL_SET_DTR Serial0 SUCCESS 14 0.00000363 LED.exe IOCTL_SERIAL_SET_LINE_CONTROL Serial0 SUCCESS StopBits: 1 Parity: NONE WordLength: 8 15 0.00000196 LED.exe IOCTL_SERIAL_SET_CHAR Serial0 SUCCESS EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13 16 0.00000363 LED.exe IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:1 Replace:40 XonLimit:2048 XoffLimit:512 17 0.00000168 LED.exe IOCTL_SERIAL_SET_QUEUE_SIZE Serial0 SUCCESS InSize: 4096 OutSize: 4096 18 0.00000251 LED.exe IOCTL_SERIAL_SET_WAIT_MASK Serial0 SUCCESS Mask: RXCHAR 19 0.00000196 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 20 0.00000251 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 21 0.00002123 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: . 22 0.00000196 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 23 0.00808846 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: . 24 0.08299211 LED.exe IOCTL_SERIAL_WAIT_ON_MASK Serial0 CANCELLED 25 0.00000196 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 26 0.00828178 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: Y 27 0.00000196 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 28 0.00828681 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: . 29 0.00000363 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 30 0.00722019 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: . 31 0.00000279 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 32 0.00828346 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: . 33 0.00000279 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 34 0.00826697 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: . 35 0.00000223 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 36 0.00810801 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: . 37 0.00000251 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 38 0.00827452 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: . 39 0.00000251 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 40 0.00827954 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: G 41 0.00000223 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 42 0.00779568 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: . 43 0.00000251 LED.exe IRP_MJ_CLEANUP Serial0 SUCCESS 44 0.10120364 LED.exe IRP_MJ_CLOSE Serial0 SUCCESS So i worked out how to send all those messages to the serial port. My application (according to portmon) does the following: 0 0.00005643 LED.exe IRP_MJ_CREATE Serial0 SUCCESS Options: Open 1 0.00000279 LED.exe IOCTL_SERIAL_GET_TIMEOUTS Serial0 SUCCESS 2 0.00000168 LED.exe IOCTL_SERIAL_SET_TIMEOUTS Serial0 SUCCESS RI:0 RM:10 RC:1000 WM:1 WC:1000 3 0.00000168 LED.exe IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS 4 0.00000140 LED.exe IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS 5 0.00000168 LED.exe IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS 6 0.00000140 LED.exe IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS 7 0.00000140 LED.exe IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS 8 0.00000670 LED.exe IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS 9 0.00000140 LED.exe IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS 10 0.00000112 LED.exe IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS 11 0.00000950 LED.exe IOCTL_SERIAL_SET_BAUD_RATE Serial0 SUCCESS Rate: 1200 12 0.00000419 LED.exe IOCTL_SERIAL_SET_RTS Serial0 SUCCESS 13 0.00000447 LED.exe IOCTL_SERIAL_SET_DTR Serial0 SUCCESS 14 0.00000335 LED.exe IOCTL_SERIAL_SET_LINE_CONTROL Serial0 SUCCESS StopBits: 1 Parity: NONE WordLength: 8 15 0.00000168 LED.exe IOCTL_SERIAL_SET_CHAR Serial0 SUCCESS EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13 16 0.00000307 LED.exe IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:1 Replace:40 XonLimit:2048 XoffLimit:512 17 0.00000140 LED.exe IOCTL_SERIAL_SET_QUEUE_SIZE Serial0 SUCCESS InSize: 4096 OutSize: 4096 18 0.00000251 LED.exe IOCTL_SERIAL_SET_WAIT_MASK Serial0 SUCCESS Mask: RXCHAR 19 0.00000223 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 20 0.00000196 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 21 0.00002179 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: . 22 0.00000223 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 23 0.00821780 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: . 24 0.07483856 LED.exe IOCTL_SERIAL_WAIT_ON_MASK Serial0 CANCELLED 25 0.00000307 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 26 0.00822842 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: Y 27 0.00000559 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 28 0.00826362 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: . 29 0.00000279 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 30 0.00829631 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: . 31 0.00000531 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 32 0.00826753 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: . 33 0.00000559 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 34 0.00826641 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: . 35 0.00000587 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 36 0.00492018 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: . 37 0.00000559 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 38 0.00810103 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: . 39 0.00000615 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 40 0.00826194 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: G 41 0.00000559 LED.exe IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR 42 0.00516798 LED.exe IRP_MJ_WRITE Serial0 SUCCESS Length 1: . 43 0.00001117 LED.exe IRP_MJ_CLEANUP Serial0 SUCCESS 44 0.09967747 LED.exe IRP_MJ_CLOSE Serial0 SUCCESS All looks good right? The same? Hmm, thats what I thought, but my application does NOT do the same as the existing application. Im missing something here - Its either something differemnt between the log files or Portmon is lying. Does anyone have experience in this (PLEASE), cos its driving me barmy Thanks |
|
|
|
| Bookmarks |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| Display Modes | |
|
|