Window API读取串口
来源:互联网 发布:数据挖掘原理 david 编辑:程序博客网 时间:2024/06/10 13:45
本文只是写出最基本的步骤,可能有些变量没有列出
1. 包含windows.h头文件
#include <windows.h>
2. 打开串口
portnum = "\\\\.\\" + portnum; //Port避免超过10打不开HANDLE hCom;hCom = CreateFile((LPCWSTR)portnum.data(), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if(hCom == INVALID_HANDLE_VALUE) { com_opened = false; WeightLog("lyh -> Open com fail: " + portnum); }
3.设置串口
/* 设置串口相关 */ DWORD dwEroor = 0; COMSTAT cs; memset(&cs, 0, sizeof(COMSTAT)); DCB dcb; memset(&dcb, 0, sizeof(DCB)); if(!GetCommState(hCom, &dcb)) { com_opened = false; WeightLog("lyh -> Get GuadPort State fail"); } else { dcb.DCBlength = sizeof(DCB); dcb.BaudRate = 9600; dcb.ByteSize = 8; dcb.Parity = NOPARITY; dcb.StopBits = ONESTOPBIT; if(!SetCommState(hCom, &dcb)) { com_opened = false; WeightLog(" Set GuardPort fail "); } /* 设置端口缓存 */ SetupComm(hCom, 2048, 2048); /* 清理端口信息 */ PurgeComm(hCom, PURGE_RXCLEAR); //清除串口缓存,准备读取串口数据 }
4 读写串口
/* a.读串口数据 */[cpp] view plain copychar rBuf[100] = {0}; //存放串口数据 DWORD dwSizeReaded = 0; if(ReadFile(hCom, rBuf, 20, &dwSizeReaded, NULL)) { receiveData = QByteArray((char *)rBuf); //数据放到rBuf里面,把它转成QByteArray,如果你不是QT,可以不用转 /* 处理读取数据 */ if(receiveData != "") { if(receiveData.startsWith("ST") || receiveData.startsWith("UT")) { ConvertToNumber(); } else { /* 清理端口信息 */ PurgeComm(hCom, PURGE_RXCLEAR); //如果读到的数据有问题,清除串口数据 } } else { WeightLog("lyh -> ReadData=NULL!"); } } else { /* 清除错误 */ dwEroor = 0; memset(&cs, 0, sizeof(COMSTAT)); ClearCommError(hCom, &dwEroor, &cs) //如果读串口失败,需要清除串口错误,才能继续读 } /* b.写串口数据*/DWORD dwEroor = 0; COMSTAT cs; memset(&cs, 0, sizeof(COMSTAT)); /* a.清理发送区缓存 */ PurgeComm(hCom, PURGE_TXCLEAR); /* b.向端口发送数据 */ DWORD dwByteWritten = 0; if(WriteFile(hCom, \ (unsigned char *)TxData.data(), \ (DWORD)strlen(TxData.data()), \ &dwByteWritten, \ NULL)) { WeightLog("Clear Weight: " + message); } else { ClearCommError(hCom, &dwEroor, &cs) //写串口失败,清除串口错误 }
5.关闭串口
CloseHandle(hCom);
阅读全文
0 0
- Window API读取串口
- Window API串口编程
- Window串口相关API
- Window使用串口API编程
- 以API读取串口读卡器信息(同步阻塞)
- 运用WIN32 API的纯C串口读取程序
- 串口API
- API串口
- window API
- WINDOW API
- window串口编程
- 串口 API串口异步通讯
- MFC读取串口数据
- c#读取串口
- 关于读取串口
- C#读取计算机串口
- 读取串口数据画图
- 线程读取串口数据
- 路由url传值
- 2017 杭电多校联赛第二场 1003 Maximum Sequence(单调队列)HDU 6047
- 源码修改之判断SVProgressHud是否仍显示在界面上
- iOS 语音识别
- 使用objdump grub中的命令
- Window API读取串口
- LeetCode 55 Jump Game(Python 实现及详解)
- C语言32个关键字_复杂数据类型
- centos搭建git服务器,并同步线上项目
- [RK3288][Android6.0] 调试笔记 --- 强制第三方apk横屏显示
- windows 环境下,为lua添加luasocket库
- 使用结构体实现数据的存储与输出
- ajax的同步和异步的区别
- Anaconda 下 Jupyter 更改默认启动路径方法