栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于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);
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433631.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号