当前位置:编程学习 > C#/ASP.NET >>

C#串口方面的问题。主要是数据截取和显示

传输数据形式:起始符号 设备号 节点号 帧序号 温度编号 温度数值(两字节 整数 小数) 湿度编号 湿度数值(两字节 整数 小数) 校验位 结束符。
如果有两种形式传输 第一种如上所说直接传输。 第二种就是温度和湿度分开。 要根据设备号区分。在两个TEXTBOX上分别显示,TEXTBOX中要包含温度和湿度,求大神解答如何做。最好有代码,在此无限感谢。
数据格式:68 79 02 A0 03 54 00 50 00 FC D5 FE
          68 54 01 A0 04 54 00 FE
          68 1F 01 A0 04 50 00 FC D6 FE
传感器发送3组数据 在两个TEXTBOX中显示。TEXTBOX显示按照设备号区分,最长的是包含压力和温度的,02是设备号 54是温度的标号 00是温度值 50是压力标号 00是压力整数位 FC是第一个小数位 D5是第二个小数位。 下面两组是温度和压力分开的两帧数据 01是设备号 54是温度标号 00是温度整数 同理下面01也是设备号 50是压力标号 00是压力整数,FC是压力第一位小数 D6是第二位小数,在两个TEXTBOX中显示 第一个TEXTBOX是显示设备号为02的温度和压力数据 第二个TEXTBOX中显示的是第二个和第三个两帧数据中温度和压力的数据。 C#        串口通讯 --------------------编程问答-------------------- 这个问题是字符串的处理问题 --------------------编程问答-------------------- 都知道第几位代表什么了,就按顺序读就是了 --------------------编程问答-------------------- 求大神解答。什么按顺序读? --------------------编程问答-------------------- 先根据数据长度判断出是3种类型的哪一种,然后按照对应的格式解析(读取相应字节的内容) --------------------编程问答-------------------- 用第二字节设备号来判断。
串口收数据可能一次收不全,根据字符串长度来判断会有问题 --------------------编程问答-------------------- 直接用modbus协议传输数据,上位机直接显示就行了,这个比较通用些 --------------------编程问答-------------------- 封成结构体,直接把byte[] 压进结构体就ok
--------------------编程问答-------------------- 最好有个截取代码。截取方面有问题,之前就是1帧数据,切数据格式基本相同,只需要截取第几位就可以了,现在是三帧,该如何截取,求好心人提供下截取代码。 --------------------编程问答-------------------- 急求啊,有没有大神教一下。 --------------------编程问答--------------------
引用 9 楼 gujinrewq 的回复:
急求啊,有没有大神教一下。

都跟你讲那么白了,难道还要写完了给你? 那还要你干什么 --------------------编程问答-------------------- 首先:建议修改你们的协议,这种协议方式是有漏洞的,如5L所说,串口有可能不会一次性把一个命令发送或者返回完成

如果只能采用当前方式,那就按如下处理
1.首先一次性把接收的数据放到缓冲区(字节数组)中
2.把缓冲区拷贝到新变量(字节数组)中
3.处理新变量,首先判断长度是你们定义的长度之和,符合继续处理,否则直接扔掉
4.处理上述符合条件的,第四位为湿度编号,第五位为值
5.第六位为温度变化,第六位为温度值


关于协议更改,建议google状态机 --------------------编程问答-------------------- 上述的3~5建议加锁,然后处理完成后 解锁,丢弃
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,