版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 挡土墙模板租赁协议(04版)
- 产品购销合同范本完整版
- 2024年度冷库建设与设备销售安装合同纠纷解决协议
- 保密与竞业限制协议包括在职期间
- 二零二四年度版权质押合同质押权利和义务
- 二零二四年度汽车4S店销售代理合同
- 二零二四年度股权转让合同with具体标的及权益说明2篇
- 二零二四年度网站建设与维护合同:功能需求、技术支持与运营管理2篇
- 医院劳务合同
- 商转公公积金贷款合同(2篇)
- 2024年湖南广电国家广电集团招聘笔试冲刺题(带答案解析)
- 期货交易授权书
- DB32-T 4757-2024 连栋塑料薄膜温室建造技术规范
- 上海市徐汇、金山、虹口区2024届高三语文一模作文解析
- 2024年北京东城区高三二模英语试题和答案
- 肿瘤科普讲座
- 2024年全国职业院校技能大赛(新材料智能生产与检测赛项)考试题库(含答案)
- 液压传动与控制基础考试题库
- 警察校园突发事件安全讲座
- 煤矿消防知识培训课件
- 幼儿园大班数学活动《5的加减》
评论
0/150
提交评论