这段时间做兼职帮做了一个COM口单片机监控控制程序, 学习了些Win32下COM口的控制.
下面是与COM口控制有关的部分示例代码.
//打开COM1 hCOM=CreateFile( "COM1",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL); if (hCOM==INVALID_HANDLE_VALUE) { MessageBox( GetForegroundWindow(),"无法打开串口!","操作失败",MB_ICONINFORMATION); return; } //设置DCB DCB dcb; if (!GetCommState(hCOM,&dcb)) { MessageBox( GetForegroundWindow(),"无法获取串口状态!","操作失败",MB_ICONINFORMATION); hCOM=INVALID_HANDLE_VALUE; return; } dcb.BaudRate=9600; dcb.ByteSize=8; dcb.Parity=NOPARITY; dcb.StopBits=ONESTOPBIT; if (!SetCommState(hCOM,&dcb)) { MessageBox( GetForegroundWindow(),"无法设置串口状态!","操作失败",MB_ICONINFORMATION); hCOM=INVALID_HANDLE_VALUE; return; } //设置COMMTIMEOUTS COMMTIMEOUTS communication_timeout; communication_timeout.ReadIntervalTimeout=MAXDWORD; communication_timeout.ReadTotalTimeoutMultiplier=0; communication_timeout.ReadTotalTimeoutConstant=0; communication_timeout.WriteTotalTimeoutMultiplier=0; communication_timeout.WriteTotalTimeoutConstant=0; if (!SetCommTimeouts(hCOM,&communication_timeout)) { MessageBox( GetForegroundWindow(),"无法设置串口超时!","操作失败",MB_ICONINFORMATION); hCOM=INVALID_HANDLE_VALUE; return; } //向串口写入ABC三个字符 ULONG nBytesWritten; WriteFile(hCOM,"ABC",3,&nBytesWritten,NULL); //从串口读入三个字符至str char str[3]; ULONG bytes_read_num; ReadFile(hCOM,str,3,&bytes_read_num,NULL);