请大家帮提供串口通信思路 本帖最后由 ling3wei 于 2011-04-06 12:11:36 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 哪个SB定义的,长度不固定又没结束符,搞个P 有这个字节就行了啊,先读取三个字节,然后看第三个字节长度是多少,再读取这么多长度的字节.不用DataReceived事件更好写,直接在一个线程里循环先读取三个字节-再读取第三个字节所指的长度数的字节就可以了. 这个协议很简单啊,而且也很好处理,每接收一个字节的数据就出发DataReceived事件。在事件的处理程序中这样写逻辑:将收到的字节放入你定义的全局的待解析队列中去,可以用List、LinkedList或者Queue等来存储。另起一个线程,专门来解析数据,逻辑大致如下:这是一个死循环。1,Sleep(10),这样可以保证程序占用CPU资源较少。先判断当前是否正在解析一包数据(已经读到了开始标志位0XFF)。如果读到了开始标志位,则根据命令码判断是否命令码符合通信协议规定,如果是非系统可识别的命令码,则丢弃这两个字节。继续判断是否正在解析一包数据。如果开始标志位和命令码都读到了,则判断接下来的一个字节:数据长度,然后根据数据长度判断当前队列中的所有数据总和是否是否等于或大于数据长度,如果不满足这个条件,则继续循环1.如果已经满足这个条件,则将取验证码(根据数据长度来计算验证码在队列中所处的位置。)然后对这包数据进行验证,如果验证成功,则从队列中将这包数据卸下(存储到一个Byte数组中,然后从队列中删除这包数据)。这时你就已经得到了“干净”的这包数据了。然后对这包数据进行解析。解析过程中如果出错,则抛出异常,继续执行此循环。如果解析正常,则保存你要的数据后,然后继续执行此循环,解析下一包数据。 上面有个错别字,不好意思:这个协议很简单啊,而且也很好处理,每接收一个字节的数据就触发DataReceived事件。 windows服务 启动程序问题 double 类型的 开方 平方运算的问题 .Net编程书籍处理 高手赐教:DataGridView控件自动伸展 C# Trackbar 滚轮滑动的问题 高分求教 关于曲线拟合,C#!!请各位大虾指点迷津!!谢谢!!! 画矩形问题!!!!消失问题!!!!!!着急!!! Iewebcontrols中的TreeView如何实现treeNode的双击事件?(codebehind方式) 7个小问题,按题给分。 请教Windows Phone 7 项目方向 C# splitContainer 判断窗口是否打开?
不用DataReceived事件更好写,直接在一个线程里循环先读取三个字节-再读取第三个字节所指的长度数的字节就可以了.
在事件的处理程序中这样写逻辑:
将收到的字节放入你定义的全局的待解析队列中去,可以用List、LinkedList或者Queue等来存储。
另起一个线程,专门来解析数据,逻辑大致如下:
这是一个死循环。
1,Sleep(10),这样可以保证程序占用CPU资源较少。先判断当前是否正在解析一包数据(已经读到了开始标志位0XFF)。
如果读到了开始标志位,则根据命令码判断是否命令码符合通信协议规定,如果是非系统可识别的命令码,则丢弃这两个字节。继续判断是否正在解析一包数据。如果开始标志位和命令码都读到了,则判断接下来的一个字节:数据长度,然后根据数据长度判断当前队列中的所有数据总和是否是否等于或大于数据长度,如果不满足这个条件,则继续循环1.
如果已经满足这个条件,则将取验证码(根据数据长度来计算验证码在队列中所处的位置。)然后对这包数据进行验证,如果验证成功,则从队列中将这包数据卸下(存储到一个Byte数组中,然后从队列中删除这包数据)。
这时你就已经得到了“干净”的这包数据了。然后对这包数据进行解析。
解析过程中如果出错,则抛出异常,继续执行此循环。
如果解析正常,则保存你要的数据后,然后继续执行此循环,解析下一包数据。
这个协议很简单啊,而且也很好处理,每接收一个字节的数据就触发DataReceived事件。