0
点赞
收藏
分享

微信扫一扫

基于windows的C/C++串口编程


基于windows的C/C++串口编程

下面代码是接收到的数据在发回去的代码。COM2为端口名称,根据实际进行更改!

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

#define debug(...) printf(__VA_ARGS__)

int main(void)
{
DCB dcb;
HANDLE hCom;
COMMTIMEOUTS CommTimeouts;
DWORD wRead, wWrite;
WINBOOL bReadStat;
char hj212_string[1500];

hCom = CreateFile(TEXT("COM2"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if(hCom == INVALID_HANDLE_VALUE)
{
debug("Can not open COM2 !\r\n");
return -1;
}else
{
debug("Open COM2 Successfully !\r\n");
}

// 设置读写缓存大小
SetupComm(hCom, 2048, 2048);

//设定读超时
CommTimeouts.ReadIntervalTimeout = MAXDWORD;//读间隔超时
CommTimeouts.ReadTotalTimeoutMultiplier = 0;//读时间系数
CommTimeouts.ReadTotalTimeoutConstant = 0;//读时间常量

//设定写超时
CommTimeouts.WriteTotalTimeoutMultiplier = 1;//写时间系数
CommTimeouts.WriteTotalTimeoutConstant = 1;//写时间常量
SetCommTimeouts(hCom, &CommTimeouts); //设置超时


GetCommState(hCom, &dcb);
dcb.BaudRate = 9600; //波特率为9600
dcb.ByteSize = 8; //每个字节有8位
dcb.Parity = NOPARITY; //无奇偶校验位
dcb.StopBits = ONESTOPBIT; //一个停止位
SetCommState(hCom, &dcb);

while(1)
{
wRead = 0;
bReadStat = ReadFile(hCom, hj212_string, sizeof(hj212_string), &wRead, NULL);
if(bReadStat && wRead != 0)
{
WriteFile(hCom, hj212_string, wRead, &wWrite, NULL);
}
}

CloseHandle(hCom);
}


举报

相关推荐

0 条评论