基于windows的CC++串口编程

基于windows的CC++串口编程,第1张

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

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

#include 
#include 
#include 

#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 !rn");
		return -1;
	}else
	{
		debug("Open COM2 Successfully !rn");
	}

	// 设置读写缓存大小
	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);
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5116129.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-17
下一篇2022-11-17

发表评论

登录后才能评论

评论列表(0条)

    保存