vsc++编写好了串口代码,使用虚拟串口可以通信,但怎么和stm32物理串口通信?
对于使用Visual Studio编写串口代码并在虚拟串口上成功通信,需要进行以下操作将处理好的数据通过物理串口发送给STM32:
#include <Windows.h>
HANDLE hComm;
hComm = CreateFile(TEXT("COM1"), // 串口的名称
GENERIC_READ | GENERIC_WRITE, // 进行读写操作
0, // 共享方式,如果要让多个程序共同使用该串口,则设为FILE_SHARE_WRITE | FILE_SHARE_READ
0, // 安全描述符,设为DEFAULT_SECURITY_ATTRIBUTES即可
OPEN_EXISTING, // 打开已存在的串口
0, // 串口的属性,设为NULL即可
0); // 设备配置参数,也设为NULL即可
DCB dcb;
dcb.DCBlength = sizeof(DCB);
GetCommState(hComm, &dcb); // 先读取现有的串口配置参数
// 进行修改
dcb.BaudRate = 9600; // 波特率
dcb.ByteSize = 8; // 数据位
dcb.Parity = NOPARITY; // 校验位,这里设为无校验
dcb.StopBits = ONESTOPBIT; // 停止位
SetCommState(hComm, &dcb); // 将新的参数设置到串口中
char sendBuf[1024];
WriteFile(hComm, sendBuf, strlen(sendBuf), &dwBytesWriten, NULL);
其中,hComm为串口的句柄,sendBuf为发送的数据,strlen(sendBuf)为要发送的数据长度,dwBytesWriten为实际写入串口的数据长度,可以通过该参数判断数据是否发送成功。
以上是将处理好的数据通过物理串口发送给STM32的基本步骤和代码示例。在实际应用中,还需要考虑数据帧的格式、错误处理等问题。
把程序里的串口端口号从虚拟串口改为硬件串口就行了