2024年4月2日发(作者:)
C语言串口发送数据排队例程
在C语言中,串口发送数据通常需要使用特定的库函数。以下是一个简单的
例子,展示如何使用Windows API中的WriteFile函数向串口发送数据。
c
#include
#include
int main() {
HANDLE hSerial;
char szSerialName[] = "COM1"; // 串口名称
char szWriteData[] = "Hello, world!"; // 要发送的数据
DWORD dwBytesWritten; // 写入的字节数
// 打开串口
hSerial = CreateFile(szSerialName, GENERIC_READ | GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hSerial == INVALID_HANDLE_VALUE) {
printf("无法打开串口 %sn", szSerialName);
return 1;
}
// 设置串口参数
DCB dcbSerialParams = {0};
gth = sizeof(dcbSerialParams);
if (!GetCommState(hSerial, &dcbSerialParams)) {
printf("无法获取串口状态n");
CloseHandle(hSerial);
return 1;
}
te = CBR_9600; // 设置波特率为9600
ze = 8; // 设置数据位为8位
ts = ONESTOPBIT; // 设置停止位为1位
if (!SetCommState(hSerial, &dcbSerialParams)) {
printf("无法设置串口参数n");
CloseHandle(hSerial);
return 1;
}
// 发送数据
if (!WriteFile(hSerial, szWriteData, strlen(szWriteData), &dwBytesWritten,
NULL)) {
printf("无法写入串口n");
} else {
printf("已发送 %lu 字节数据n", dwBytesWritten);
}
// 关闭串口
CloseHandle(hSerial);
return 0;
}
在这个例子中,我们首先使用CreateFile函数打开一个名为"COM1"的串口。
然后,我们使用GetCommState和SetCommState函数来设置串口的参数,包括
波特率、数据位和停止位。接下来,我们使用WriteFile函数向串口发送数据,
并使用strlen函数计算要发送的字节数。最后,我们使用CloseHandle函数关闭
串口。


发布评论