fix all but about 8 out of 91 tests. Correct resource usage in xml, fix win32gui...
[reactos.git] / rosapps / tests / sertest / sertest.c
1 #include <windows.h>
2 #include <stdio.h>
3
4 #include <tchar.h>
5
6 #define BUFSIZE 128
7 #define MAX_PORTNAME_LEN 20
8 #define APP_VERSION_STR "0.01"
9
10 int main(int argc, char *argv[])
11 {
12 CHAR txBuffer[BUFSIZE];
13 CHAR rxBuffer[BUFSIZE];
14 DWORD dwBaud = 9600;
15 DWORD dwNumWritten;
16 DWORD dwErrors;
17 DCB dcb;
18 BOOL bResult;
19 HANDLE hPort;
20 int i;
21 int j;
22 int k;
23 int nPortNum = 1;
24
25 TCHAR szPortName[MAX_PORTNAME_LEN];
26
27 if (argc > 1) {
28 //sscanf(argv[1], "%d", &dwBaud);
29 sscanf(argv[1], "%d", &nPortNum);
30 }
31 sprintf(szPortName, _T("COM%d"), nPortNum);
32
33 printf("Serial Port Test Application Version %s\n", APP_VERSION_STR);
34 printf("Attempting to open serial port %d - %s\n", nPortNum, szPortName);
35 hPort = CreateFile(szPortName,
36 GENERIC_READ|GENERIC_WRITE,
37 0, // exclusive
38 NULL, // sec attr
39 OPEN_EXISTING,
40 0, // no attributes
41 NULL); // no template
42
43 if (hPort == (HANDLE)-1) {
44 printf("ERROR: CreateFile() failed with result: %lx\n", (DWORD)hPort);
45 return 1;
46 }
47 printf("CreateFile() returned: %lx\n", (DWORD)hPort);
48
49 printf("Fiddling with DTR and RTS control lines...\n");
50 for (i = 0; i < 100; i++) {
51 bResult = EscapeCommFunction(hPort, SETDTR);
52 if (!bResult) {
53 printf("WARNING: EscapeCommFunction(SETDTR) failed: %lx\n", (DWORD)bResult);
54 }
55 bResult = EscapeCommFunction(hPort, SETRTS);
56 if (!bResult) {
57 printf("WARNING: EscapeCommFunction(SETRTS) failed: %lx\n", (DWORD)bResult);
58 }
59 for (j = 0; j < 1000; j++) {
60 k *= j;
61 }
62 /*
63 #define CLRDTR (6)
64 #define CLRRTS (4)
65 #define SETDTR (5)
66 #define SETRTS (3)
67 #define SETXOFF (1)
68 #define SETXON (2)
69 #define SETBREAK (8)
70 #define CLRBREAK (9)
71 */
72 bResult = EscapeCommFunction(hPort, CLRDTR);
73 if (!bResult) {
74 printf("WARNING: EscapeCommFunction(CLRDTR) failed: %lx\n", (DWORD)bResult);
75 }
76 bResult = EscapeCommFunction(hPort, CLRRTS);
77 if (!bResult) {
78 printf("WARNING: EscapeCommFunction(CLRRTS) failed: %lx\n", (DWORD)bResult);
79 }
80 }
81 printf("Getting the default line characteristics...\n");
82 dcb.DCBlength = sizeof(DCB);
83 if (!GetCommState(hPort, &dcb)) {
84 printf("ERROR: failed to get the dcb: %ld\n", GetLastError());
85 return 2;
86 }
87 printf("Setting the line characteristics to 9600,8,N,1\n");
88 dcb.BaudRate = dwBaud;
89 dcb.ByteSize = 8;
90 dcb.Parity = NOPARITY;
91 dcb.StopBits = ONESTOPBIT;
92
93 bResult = SetCommState(hPort, &dcb);
94 if (!bResult) {
95 printf("ERROR: failed to set the comm state: %lx\n", (DWORD)bResult);
96 return 3;
97 }
98 for (i = 0; i < BUFSIZE; i++) {
99 txBuffer[i] = (CHAR)i;
100 //printf(" %d ", txBuffer[i]);
101 rxBuffer[i] = 0xFF;
102 }
103 printf("\n");
104 printf("Writting transmit buffer to the serial port\n");
105 bResult = WriteFile(hPort, txBuffer, BUFSIZE, &dwNumWritten, NULL);
106 if (!bResult) {
107 printf("ERROR: failed to write to the serial port: %lx\n", (DWORD)bResult);
108 return 4;
109 }
110 printf("WriteFile() returned: %lx, byteswritten: %lx\n", (DWORD)bResult, dwNumWritten);
111 #if 0
112 printf("Attempting to read %d bytes from the serial port\n", BUFSIZE);
113 bResult = ReadFile(hPort, rxBuffer, BUFSIZE, &dwNumRead, NULL);
114 if (!bResult) {
115 printf("ERROR: failed to read from the serial port: %lx\n", (DWORD)bResult);
116 return 5;
117 }
118 printf("ReadFile() returned: %lx, bytesread: %lx\n", (DWORD)bResult, dwNumRead);
119 for (i = 0; i < BUFSIZE; i++) {
120 printf(" %d ",rxBuffer[i]);
121 }
122 #endif
123 printf("Attempting to close the serial port\n");
124 bResult = ClearCommError(hPort, &dwErrors, NULL);
125 printf("ClearCommError returned: %lx, dwErrors: %lx\n", (DWORD)bResult, dwErrors);
126 bResult = CloseHandle(hPort);
127 if (!bResult) {
128 printf("ERROR: failed to close the serial port: %lx\n", (DWORD)bResult);
129 return 6;
130 }
131 printf("Finished\n");
132 return 0;
133 }