【C工具】【串口助手】C语言操作虚拟串口和物理串口

发布时间:2024-12-02 12:29

制作木质手串:挑选木材,用工具打磨,穿孔串珠,涂漆装饰。 #生活技巧# #手工DIY技巧# #手工珠宝制作#

最新推荐文章于 2024-09-26 10:34:58 发布

来碗豆腐脑 于 2024-01-23 17:39:41 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

虚拟串口基础读写例子,记录备忘
环境:win10 + mingw64

操作虚拟串口和物理串口的区别只是串口名称不同,需要用个奇怪的写法,比如虚拟串口号为21:

char portName[] = "\\\\.\\COM21" 1

物理串口就可以直接写串口号,比如物理串口6:

char portName[] = "COM6" 1

不区分大小写,下面是一个示例程序:

#include <stdio.h> #include <windows.h> int main(int argc, char *argv[]) { HANDLE hSerial; DCB dcbSerialParams = {0}; COMMTIMEOUTS timeouts = {0}; //char portName[] = "COM6"; // 物理串口的设备路径,根据实际情况修改 char portName[] = "\\\\.\\COM21"; // 虚拟串口的设备路径,根据实际情况修改 char data[] = "Hello, Serial!"; // 待发送的数据 // 打开串口 hSerial = CreateFile(portName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hSerial == INVALID_HANDLE_VALUE) { printf("Failed to open serial port\n"); return 1; } // 配置串口参数 dcbSerialParams.DCBlength = sizeof(dcbSerialParams); if (!GetCommState(hSerial, &dcbSerialParams)) { printf("Failed to get current serial parameters\n"); CloseHandle(hSerial); return 1; } dcbSerialParams.BaudRate = CBR_115200; // 波特率 dcbSerialParams.ByteSize = 8; // 数据位数 dcbSerialParams.StopBits = ONESTOPBIT; // 停止位 dcbSerialParams.Parity = NOPARITY; // 校验位 if (!SetCommState(hSerial, &dcbSerialParams)) { printf("Failed to set serial parameters\n"); CloseHandle(hSerial); return 1; } // 配置读取超时 timeouts.ReadIntervalTimeout = 50; timeouts.ReadTotalTimeoutConstant = 50; timeouts.ReadTotalTimeoutMultiplier = 10; timeouts.WriteTotalTimeoutConstant = 50; timeouts.WriteTotalTimeoutMultiplier = 10; if (!SetCommTimeouts(hSerial, &timeouts)) { printf("Failed to set serial timeouts\n"); CloseHandle(hSerial); return 1; } // 发送数据 DWORD bytesWritten; if (!WriteFile(hSerial, data, sizeof(data), &bytesWritten, NULL)) { printf("Failed to write to serial port\n"); CloseHandle(hSerial); return 1; } printf("Sent %d bytes\n", bytesWritten); // 读取数据 DWORD bytesRead; char buffer[256]; if (!ReadFile(hSerial, buffer, sizeof(buffer), &bytesRead, NULL)) { printf("Failed to read from serial port\n"); CloseHandle(hSerial); return 1; } printf("Received %d bytes: %s\n", bytesRead, buffer); // 关闭串口 CloseHandle(hSerial); return 0; }

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283

测试可以成功收发,绑定的对应串口收到数据:
在这里插入图片描述

网址:【C工具】【串口助手】C语言操作虚拟串口和物理串口 https://www.yuejiaxmz.com/news/view/346815

相关内容

c# SerialPort串口通信
串珠小饰品
单片机学习笔记之51内核软件延时和串口的巧妙方法
我的电脑串口控制继电器,终于成功了!
50个常见的C#面试问题和答案合集和详解
耳环配饰diy手工材料? 串珠手链diy手工工具?
【文化馆创意手工活动】魅力生活 串意无限
diy手工包包? 串珠手链diy手工工具?
【Java数据结构】字符串常量池
轻生活串口控制模块离线声控开关语音识别模块智能家居语音模块

随便看看