3050311118 发表于 2015-7-18 23:12:20

C#串口如何检测单片机一帧数据,设置只有满缓冲区中断,

C#缓冲区满可以发生事件,但是一帧数据往往是不定长的。
我这边缓冲区设置为1,结合定时器纯粹当单片机处理串口方式处理一帧数据
貌似可以工作的很好,但是这样明显效率低下,我想有没有其他方式C#能检测一帧数据的?

qinshi1208 发表于 2015-7-18 23:19:08

实时性要求不是特别高的话,我采用的是定时等待,收到数据就解析。实际没有发现出什么问题,当然要根据你的项目来考量

yuyu87 发表于 2015-7-19 08:44:16

放心吧,没事的,效率不低,程序不会运行很慢的,c#有一个功能,有ReadLine函数,可以读取一行,一行的分隔符可以自己设定的,你单片机发送的数据每一段之间有分隔符吧?

gwnpeter 发表于 2015-7-19 09:30:30

本帖最后由 gwnpeter 于 2015-7-19 09:32 编辑

ReadLine可以,不过需要按照字符串的形式发送,不过我经常都是按照字符串来处理的,收到的命令简单明了,无需解释。就是串口的使用效率低了一点。

另外将缓冲区改大一点,使用多线程进行串口读取,串口设置合适的readtimeout,也可以解决部分场合的问题

现在基本上都是使用多线程进行的处理,直接在界面上使用串口event不好用,就是多线程需要使用代理来传递数据到界面线程
页: [1]
查看完整版本: C#串口如何检测单片机一帧数据,设置只有满缓冲区中断,