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

创建文件句柄方式对串口设备进行操作

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

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

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

  1. 设置串口参数
	DCB Config;
 	Config.ByteSize = 8;          //8个比特数据为单位
	Config.BaudRate = CBR_9600;   //波特率默认9600
	Config.StopBits = ONESTOPBIT;  //停止位为1位
	Config.Parity = NOPARITY;      //无奇偶校验位
  1. 初始化串口句柄
    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);
  1. 读写
   读声明
    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);

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


  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值