串口编程实际很简单,测试要相对麻烦一些,
在单机情况下可以利用串口监控软件来测试发送数据的程序将双机串口互连,可以测试接收数据
的程序。下面是读取和发送数据的sample。
//串口编程:读取串口com3数据的程序
#include <stdio.h>
#include<windows.h>
int main(int argc, char *argv[])
{
HANDLE hComm3;
hComm3 =CreateFile("COM3", GENERIC_READ|GENERIC_WRITE, 0,NULL , OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if(hComm3 == INVALID_HANDLE_VALUE)
{
printf("打开串口失败/n");
exit(1);
}
else
{
DCB wdcb;
GetCommState (hComm3, &wdcb);
wdcb.BaudRate=9600;
SetCommState (hComm3, &wdcb);
PurgeComm(hComm3, PURGE_TXCLEAR);
}
printf("开始从com3接收数据:/n");
char lpReadBuf[57] = { 0 };
DWORD nNumberOfBytesToRead = 57;
DWORD nBytesRead;
printf("Read data is:/n");
while(1)
{
ReadFile(hComm3, lpReadBuf, nNumberOfBytesToRead, &nBytesRead, NULL);
lpReadBuf[56] = '/n';
lpReadBuf[57] = '/0';
printf("%s", lpReadBuf);
}
return 0;
}
//串口编程:串口发送数据的程序
#include <stdio.h>
#include<windows.h>
int main(int argc, char *argv[])
{
HANDLE hComm1;
hComm1 =CreateFile("COM1", GENERIC_READ|GENERIC_WRITE, 0,NULL , OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if(hComm1 == INVALID_HANDLE_VALUE)
{
printf("打开串口失败/n");
exit(1);
}
else
{
DCB wdcb;
GetCommState (hComm1, &wdcb);
wdcb.BaudRate=9600;
SetCommState (hComm1, &wdcb);
PurgeComm(hComm1, PURGE_TXCLEAR);
}
printf("开始向com1发送数据:/n");
char lpWriteBuf[] = {"oss.lzu.edu.cn"};
DWORD nBufLength = strlen(lpWriteBuf);
DWORD nBytesWrite;
printf("Send data is:/n");
while(1)
{
Sleep(1000);
WriteFile(hComm1, lpWriteBuf, nBufLength, &nBytesWrite, NULL);
printf("%s/n", lpWriteBuf);
}
return 0;
}