用c语言写一个串口通信
时间: 2023-11-17 13:04:51 浏览: 145
以下是一个使用C语言实现串口通信的示例程序,假设使用的是Windows系统:
```c
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
HANDLE hCom;
DCB dcb;
COMMTIMEOUTS timeouts;
char buffer[100];
DWORD read, written;
// 打开串口
hCom = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hCom == INVALID_HANDLE_VALUE) {
printf("无法打开串口\n");
return 1;
}
// 配置串口参数
dcb.DCBlength = sizeof(DCB);
GetCommState(hCom, &dcb);
dcb.BaudRate = CBR_9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState(hCom, &dcb);
// 配置超时时间
timeouts.ReadIntervalTimeout = 50;
timeouts.ReadTotalTimeoutConstant = 50;
timeouts.ReadTotalTimeoutMultiplier = 10;
timeouts.WriteTotalTimeoutConstant = 50;
timeouts.WriteTotalTimeoutMultiplier = 10;
SetCommTimeouts(hCom, &timeouts);
// 读取串口数据
while (1) {
if (ReadFile(hCom, buffer, sizeof(buffer), &read, NULL) && read > 0) {
printf("接收到的数据:%s", buffer);
}
}
// 关闭串口
CloseHandle(hCom);
return 0;
}
```
上述程序实现了打开COM1串口,设置波特率为9600,数据位为8,无奇偶校验,停止位为1,并读取串口接收到的数据并输出到控制台。如果要发送数据,则可以使用WriteFile函数。需要注意的是,在使用串口通信时,需要根据实际情况设置串口参数和超时时间等参数,以保证数据的稳定传输。
阅读全文