因工作要求我链接的是虚拟串口做转接数据的功能,我只能指明我当时链接设备读写的时候遇到的一些问题
**主要函数//打开串口的模式
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);
//还有一些简单的判断是否链接成功错误码判断就不一一声明了 大致的简单链接方式就是这样 亲测可用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)