wins下C++读写串口设备(CreateFile方式)

wins下C++读写串口设备(CreateFile方式),第1张

wins下C++读写串口设备(CreateFile方式) 创建文件句柄方式对串口设备进行 *** 作

因工作要求我链接的是虚拟串口做转接数据的功能,我只能指明我当时链接设备读写的时候遇到的一些问题

**主要函数//打开串口的模式

CreateFile 创建(串口名称,打开串口的模式,不公开,默认,打开,默认,默认)
ReadFile 读 (文件句柄,接收缓存,接收多少,存放缓存里面具体字节)
WriteFile 写(文件句柄,要写入的东西,要写入的字节数,用于存放实际写入的字节数)**
对于传参不做过多解释 自行百度都有 注意创建时候的方式和确定是同步还是异步的读写

    设置串口参数
	DCB Config;
 	Config.ByteSize = 8;          //8个比特数据为单位
	Config.BaudRate = CBR_9600;   //波特率默认9600
	Config.StopBits = ONESTOPBIT;  //停止位为1位
	Config.Parity = NOPARITY;      //无奇偶校验位
    初始化串口句柄
    HANDLE Handle; //串口句柄
Handle = CreateFileA(portName,GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
		//防止超时,设置最大时间间隔
	COMMTIMEOUTS comTimeOut;
	comTimeOut.ReadIntervalTimeout = 3;
	comTimeOut.ReadTotalTimeoutMultiplier = 3;
	comTimeOut.ReadTotalTimeoutConstant = 2;
	comTimeOut.WriteTotalTimeoutMultiplier = 3;
	comTimeOut.WriteTotalTimeoutConstant = 2;
	SetCommTimeouts(this->Handle, &comTimeOut);
    读写
   读声明
    Read(char* InputData, unsigned int DataSize, unsigned long & DataLength)
	{
		ReadFile(this->Handle,InputData,DataSize,&DataLength,NULL)
	}

调用方式
 	char buffer[100];
	unsigned int datasize = 101;
	unsigned long datalength;
	Read(buffer, datasize, datalength);
写声明
	Write(char *outputData, unsigned int size, unsigned long & length)
	{
		WriteFile(Handle,outputData,size,&length,NULL)
	}
调用方式
char msg[100]={31};
unsigned long length;
Write(msg, sizeof(msg), length);

//还有一些简单的判断是否链接成功错误码判断就不一一声明了 大致的简单链接方式就是这样 亲测可用


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

原文地址: https://outofmemory.cn/zaji/5702523.html

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

发表评论

登录后才能评论

评论列表(0条)

保存