请用C语言实现串口通信
时间: 2023-10-16 16:11:05 浏览: 44
下面是一个简单的串口通信的示例代码,使用了Windows API函数:
```c
#include <stdio.h>
#include <windows.h>
int main()
{
HANDLE hCom;
DCB dcb;
COMMTIMEOUTS timeouts;
char buffer[1024] = {0};
DWORD bytesRead, bytesWritten;
// 打开串口
hCom = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hCom == INVALID_HANDLE_VALUE) {
printf("Failed to open serial port\n");
return 1;
}
// 配置串口
GetCommState(hCom, &dcb);
dcb.BaudRate = CBR_115200;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState(hCom, &dcb);
// 设置串口读取超时时间
timeouts.ReadIntervalTimeout = 50;
timeouts.ReadTotalTimeoutMultiplier = 10;
timeouts.ReadTotalTimeoutConstant = 50;
timeouts.WriteTotalTimeoutMultiplier = 10;
timeouts.WriteTotalTimeoutConstant = 50;
SetCommTimeouts(hCom, &timeouts);
// 发送数据
char* message = "Hello, serial port!";
WriteFile(hCom, message, strlen(message), &bytesWritten, NULL);
// 读取数据
ReadFile(hCom, buffer, sizeof(buffer), &bytesRead, NULL);
printf("Received: %s\n", buffer);
// 关闭串口
CloseHandle(hCom);
return 0;
}
```
需要注意的是,此示例代码是在Windows平台下运行的,如果在其他操作系统下运行需要修改相应的函数调用。另外,需要根据实际情况调整串口的参数,例如波特率、数据位、停止位等。