版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/ Write a string to the port/voierialPort:WriteToPort(BYTE bWriteBuffer, nWriteBufferSize)assert(m != 0);nSize = sizeof(bWriteBuffer)/sizeof(BYTE); m_nWriteBufferSize = nWriteBufferSize;for(i = 0 ; i m_Ports.StartMonitoring();启动监视线程 mVal();发送第一台设备数据命令CSerialPort m_Ports;nColtAddr,/这个用来存放当前设备地址。nColt
2、s;/这个用来存放当前缓冲区收到的字节数目 HANDLE m_pThread;/外部控制线程BYTE m_RecBuff1000;/接收缓冲区float fVal20;/处理解包内容,这里可以根据实际情况进行定义。void CmVal()HAddr,LAddr,m_Xnh; nHAdd,nLAdd;nHAdd = ExchangeAscII(nColtAddr4)&0 x0f); nLAdd = ExchangeAscII(nColtAddr&0 x0f); m_Xnh = nHAddnLAdd0 x520 x44;HAddr = ExchangeAscII(m_Xnh4)&0 x0f); L
3、Addr = ExchangeAscII(m_Xnh&0 x0f);BYTE OutBuff8 =0 x40,nHAdd,nLAdd,0 x52,0 x44,HAddr,LAddr,0 x0d; m_Ports.WriteToPort(OutBuff,8); cLastColtTime = CTime:GetCurrentTime(); nColtAddr+;if(nColtAddr 19)/19 define max addr numbers nColtAddr = 0;ASCII 码的一些简单变换,进行一下简单的封装,方便调用:UCmThread(LPVOID pParam)CView *
4、pView = (CView *)pParam;while(1)CTime cNowTime = CTime:GetCurrentTime(); tNow = cNowTime.GetTime();struct _timeb timebuffer;_ftime(&timebuffer);nNowMillSecond = litm;/tLast = cLastColtTime0.GetTime();if(tNow - tLast)*1000 + (nNowMillSecond - nMillSecond0) 800)pView-mVal();发送下一台设备要数据命令或
5、者进行其他的相关处理Sleep(100);发送串口数据命令,这里要根据外部设备的制定的通讯协议来进行。这次温度表采用的是 ASCII 的形式通讯。RAM,LPARAM 类型是多态性数据(polymorphic daype),在WIN32 中为 32 位,支持多种数据类型,根据需要自动适应,这样程序就有很强的适应性。再次这里理解成为BYTE 类型(与设备通讯协议保持一致,方便解包)。每当串口接收缓冲区内有一个字符的时候,就会产生一个M_RXCHAR 消息,触发munication 函数,下面可以根据的需要进行解包处理了;LONGmunication(RAM ch, LPARort)if(port
6、 = 1)m_RecBuffnColts += (BYTE)(char *)(ch); nColts+;if(nColts = 24)/这里根据通讯协议规定的发送定制要数据命令就会上传 24个字节的数据报文内容。这里可以根据不同外部设备进行不同的设置DataProsTemp(m_RecBuff);/处理解包nColts = 0;/缓冲区指针清 0,准备接收下一台设备数据 ResetBuffVal();/清空缓冲区内容mVal(); /发送下一台设备内容LONG Cmunication(RAM ch, LPARort)进行数据处理,BYTE CView:ExchangeAscII(BYTE bI
7、nput)BYTE bRef = 0;if(bInput 9)bRef = bInput+0 x37; elsebRef = bInput+0 x30; return bRef;BYTE CView:ExchangeAscIItoNormal(BYTE bInput)BYTE bRef = 0;if(bInput 0 x39) bRef = bInput-0 x37;elsebRef = bInput-0 x30; return bRef;数据解包处理,这里就必须根据外部设备定义的通讯协议来处理了。void CMy11View:DataProsTemp(BYTE m_Inbuff)nTempA
8、ddr = nColtAddr - 1; if(nTempAddr 4)&0 x0f); nLAdd = ExchangeAscIempAddr&0 x0f);if(m_Inbuff0 = 0 x40)if(m_Inbuff1 = nHAdd & m_Inbuff2 = nLAdd)if(m_Inbuff3 = 0 x52 & m_Inbuff4 = 0 x44)nzTemp5; float fTemp;nzTemp0 = m_Inbuff7; nzTemp1 = m_Inbuff8; nzTemp2 = m_Inbuff9; nzTemp3 = m_Inbuff10; for(i = 0 ; i 0 x39) nzTempi -= 0 x37;elsenzTempi -= 0 x30;fTemp=float(nzTemp1+(nzTemp04)+(nzTemp38)+(nzTemp2m_Ports0.InitPort(this,2,9600,N,8,1,EV_RXCHAR|EV_RXFLAG,1024)this-m_Ports0.StartMonitoring(); BufferVal(0);/Diandu Deviceif(this-m_Ports1.InitPort(this,4,1200,E,8,1,EV_RXCHAR|EV_RXFLAG,1024
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 统编版2025-2026学年语文四年级第一学期期末质量检测练习卷(含答案)
- 湖南省岳阳市汨罗市2025-2026学年八年级上学期1月期末生物试题(无答案)
- 河南省驻马店市泌阳县2025-2026学年八年级上学期1月期末考试历史试卷答案
- 2025-2026学年一年级(上)期末游戏化测试语文试卷(附参考答案)
- 五年级题目及答案
- 文件筐测试题及答案
- 2026年小学语文模拟冲刺押题卷
- 诚实做事的演讲稿
- 冀教版三年级上册数学第二单元-两、三位数乘一位数-测试卷及答案(夺冠系列)
- 高中高二下学期地理期末考试试题答案解析
- 苏教版高中化学必修二知识点
- 2024年国家公务员考试国考中国人民银行结构化面试真题试题试卷及答案解析
- 2025年中考语文一轮复习:民俗类散文阅读 讲义(含练习题及答案)
- 高中数学选择性必修一课件第一章 空间向量与立体几何章末复习(人教A版)
- 标准商品房买卖合同文本大全
- LY/T 3408-2024林下经济术语
- 2025年湖南邵阳市新邵县经济开发区建设有限公司招聘笔试参考题库附带答案详解
- 2023-2024学年八年级(上)期末数学试卷
- DB33T 1238-2021 智慧灯杆技术标准
- ICH《M10:生物分析方法验证及样品分析》
- 福建省泉州市晋江市2023-2024学年八年级上学期期末考试数学试卷(含解析)
评论
0/150
提交评论