Programming Forums
User Name Password Register
 

RSS Feed
FORUM INDEX | TODAY'S POSTS | UNANSWERED THREADS | ADVANCED SEARCH

Reply
 
Thread Tools Display Modes
Old May 23rd, 2006, 2:35 PM   #1
Fatman
Newbie
 
Join Date: May 2006
Posts: 1
Rep Power: 0 Fatman is on a distinguished road
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
Fatman is offline   Reply With Quote
Old May 23rd, 2006, 4:27 PM   #2
DaWei
Resident Grouch
 
DaWei's Avatar
 
Join Date: Jun 2005
Posts: 6,453
Rep Power: 10 DaWei is on a distinguished road
Quote:
Hmm, thats what I thought, but my application does NOT do the same as the existing application.
Did it occur to you to tell us HOW your application isn't meeting your expectations? Perhaps we're just supposed to read your mind, but what good is reading a barmy mind?.
__________________
Abstraction doesn't make it impossible to write bad code; it makes it possible to write superior code.
Contributor's Corner: Grumpy on C++ Exceptions DaWei on Pointers
DaWei is offline   Reply With Quote
Old May 23rd, 2006, 4:48 PM   #3
Edgar
Programmer
 
Edgar's Avatar
 
Join Date: May 2006
Location: Bathroom
Posts: 43
Rep Power: 0 Edgar is on a distinguished road
DaWei did you need batteries for your Crystal Ball because mine is not working.
Edgar is offline   Reply With Quote
Old May 23rd, 2006, 5:21 PM   #4
DaWei
Resident Grouch
 
DaWei's Avatar
 
Join Date: Jun 2005
Posts: 6,453
Rep Power: 10 DaWei is on a distinguished road
Mine's in the shop for 'ball' joints. I've been trying to use a large, rusty ball bearing. All I can make out is, it says, "New members should read a 'How to Post a Question' thread for the most effective results."
__________________
Abstraction doesn't make it impossible to write bad code; it makes it possible to write superior code.
Contributor's Corner: Grumpy on C++ Exceptions DaWei on Pointers
DaWei is offline   Reply With Quote
Old May 26th, 2006, 5:14 PM   #5
Edgar
Programmer
 
Edgar's Avatar
 
Join Date: May 2006
Location: Bathroom
Posts: 43
Rep Power: 0 Edgar is on a distinguished road
Yep.....
Edgar is offline   Reply With Quote
Reply

Bookmarks

« Previous Thread in Forum | Next Thread in Forum »

Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump




DaniWeb IT Discussion Community
All times are GMT -5. The time now is 4:17 AM.

Powered by vBulletin® Version 3.7.0, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Copyright ©2007 DaniWeb® LLC