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

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

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

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

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

char portName[] = "COM6"

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

#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;
}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/427191.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全桥RLC模态图具体分析

T0时刻&#xff0c;Q6,Q7,Q1.Q4开通&#xff0c;驱动为高电平&#xff0c;励磁电流线性上升,但是lm电流在to是为负电流&#xff0c;这时刻有给副边提供能量&#xff0c;Ip电流开始上升&#xff0c;这个时候给副边的电流也是从0开始上升,这个能量由励磁电感提供&#xff0c;Co给…

【C++】初步认识基于C的优化

C祖师爷在使用C语言时感觉到了不方便的一些点&#xff0c;于是一步一步改进优化&#xff0c;最后形成了C 本文将盘点一下基于C的语法优化 目录 命名空间&#xff1a;命名空间定义&#xff1a;命名空间使用&#xff1a; C输入&输出&#xff1a;cout&#xff1a;endl&#…

Go实现LRU算法

LRU是什么&#xff1f; LRU是内存淘汰策略&#xff0c;LRU &#xff08;Least recently used&#xff1a;最近最少使用&#xff09;算法在缓存写满的时候&#xff0c;会根据所有数据的访问记录&#xff0c;淘汰掉未来被访问几率最低的数据。也就是说该算法认为&#xff0c;最近…

Spring源码学习-Spring流程概述(一)

Spring启动的流程 public class Test {public static void main(String[] args) {ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext("applicationContext.xml");Student bean context.getBean(Student.class);context.close();} }调用…

openssl3.2 - 检查rsa证书和私钥是否匹配(快速手搓一个工具)

文章目录 openssl3.2 - 检查rsa证书和私钥是否匹配(快速手搓一个工具)概述效果笔记编程环境界面控件的设置增加文件拖拽的类RSA证书和key是否匹配的实现在程序中加入环境变量备注备注END openssl3.2 - 检查rsa证书和私钥是否匹配(快速手搓一个工具) 概述 在学习openssl官方的…

AI嵌入式K210项目(19)-安装CanMV IDE开发软件

文章目录 前言一、软件下载安装二、软件简介三、设备连接四、在线模拟五、开机运行程序附录&#xff1a;MicroPython固件烧录总结 前言 前几章我们介绍K210使用C语言裸机开发方法&#xff0c;大家对K210内部的硬件和各种加速器有了初步的了解&#xff0c;但是开发人工智能相关…

24.1.24 DAY1 C++

思维导图&#xff1a; 1. 提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数&#xff0c;要求使用C风格字符串完成 代码&#xff1a; #include <iostream> #include <array> using namespace std;int main(…

c++day1作业

思维导图 提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数 要求使用C风格字符串完成 #include <iostream> #include <iomanip> using namespace std; int main() {string a;cout<<"输入一个字符…

CFD-POST如何使用Expression计算某一点处的物理量

简介 CFD-POST是ANSYS Workbench通用的计算流体力学后处理软件&#xff0c;有时我们需要编写表达式Expression计算阻力系数或升力系数&#xff0c;这时就需要获取出口附近某一点处的气体密度&#xff08;或其他任何物理量&#xff09;。接下来将介绍如何操作 操作方法 Step1…

使用axios库创建实例的示例,(创建实例时,传入了一个配置对象)同时还包含了请求拦截器和响应拦截器

第一步&#xff1a; 在vue项目中src目录下创建utils>request.js 第二步&#xff1a; 在 request.js中&#xff0c;使用axios.create方法创建了一个名为request的axios实例&#xff08;设置基本配置信息&#xff09;通过request.interceptors.request.use方法添加了请求拦…

数据结构<1>——树状数组

树状数组&#xff0c;也叫Fenwick Tree和BIT(Binary Indexed Tree)&#xff0c;是一种支持单点修改和区间查询的&#xff0c;代码量小的数据结构。 那神马是单点修改和区间查询&#xff1f;我们来看一道题。 洛谷P3374(模板): 在本题中&#xff0c;单点修改就是将某一个数加上…