




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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协同投资基金合同范本格式
- 2025年终止代理合同
- 2025年门座式起重机司机理论试题及答案
- 2025共享办公空间租赁合同深度解析
- 亨廷顿病的临床护理
- 脉络膜出血的临床护理
- 2025年初级经济师之初级经济师工商管理模拟考试试卷A卷含答案
- 2025年主治医师之全科医学301考前冲刺模拟试卷A卷含答案
- 镰状细胞肾病的临床护理
- 新质生产力算力
- 等离子切割机操作手册与安全操作规程
- 煤矿劳动组织管理培训课件
- 印刷合同:纸袋印刷合作
- 混凝土拌合物凝结时间自动计算记录
- 快学Scala(中文版第2版)
- 人工智能知识竞赛题库(含答案)
- 乡土中国第二课
- 机动车排放定期检验内部审批程序
- DUOYING功效护肤品牌传播规划
- 小学英语-《Caterpillar,caterpillar》教学设计学情分析教材分析课后反思
- 长郡中学小升初招生考试数学真题试卷(含答案)
评论
0/150
提交评论