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

c#中利用串口和设备之间进行通信的问题

用c#2008,在窗体上有一个serialport控件用来通过串口设备发送的数据。请问一下,现在有一个线程是采集设备的数据发送到串口并显示,那么在采集的过程中还需要显示一个设备的流量报警值,这个值也是要从设备发送到串口上然后显示出来。我的问题是,串口可以接收两个线程发送的数据吗,如何接收?谢谢 --------------------编程问答-------------------- 看不懂你在说什么? --------------------编程问答-------------------- 说的简单一点就是设备和计算机之间进行通信,中介是串口,我的问题就是串口是否可以接收两个线程发来的数据?如果可以的话,那么该怎样实现呢?用c#实现 --------------------编程问答-------------------- 看你的实现,或者说看你的需求。
1、发送方:串口打开的时候,只能打开一次。如果你两个线程都打开同一个串口,那指定是不行的,有一个会失败。如果两个线程都使用同一个已经打开的串口那是没问题的。
2、接收方:它只关注自己的接收缓冲,发送端几个线程没有任何关系。
3、发送方:2个线程发送时,各自发各自的。但都会发送到发送缓冲区上,如果你组织好自己的数据协议,那么接收方应该没什么问题。如果你组织不好,即使即使数据都收到,也没什么意义。打个比方,把两个人说的话混在一起让你听,你一定听不明白。但如果一个人说一句,另一个人再说一句。彼此轮流,你就能听明白了。 --------------------编程问答-------------------- 呵呵,楼主说的没错,我是这样两个线程一个是数据采集的,一个是流量报警值的,两个线程轮流发送,但现在的情况是数据采集和浏览报警的线程只执行一次后就不再执行。不知道什么原因,楼主能帮忙解释一下吗?谢谢 --------------------编程问答-------------------- 不贴代码谁知道为什么。 --------------------编程问答-------------------- 一个是数据采集的,一个是流量报警值的,如果是用同一个串口的话,先发采集命令,等采集的数据接受完后,再发流量报警命令,同时发数据会错乱
要么就两个串口两个命令各发各的,同时发,互不影响 --------------------编程问答--------------------
引用 4 楼 tan_goahead 的回复:
呵呵,楼主说的没错,我是这样两个线程一个是数据采集的,一个是流量报警值的,两个线程轮流发送,但现在的情况是数据采集和浏览报警的线程只执行一次后就不再执行。不知道什么原因,楼主能帮忙解释一下吗?谢谢

这问题应该很多了
不知道你对多线程理解的怎么样
也不知道你的编程方法是怎么样的
我的习惯是
在线程中while(true)
{
//waitevent
//dowork
//sleep
}
类似上面那样吧,我不会频繁创建线程。我认为频繁创建线程会开销很大。
其他方面就要检测你的代码了。
还有检测你的业务协议,对于有次序的业务,我习惯组织成Ask--answer这样的协议。
每个发送要有响应的应答。来判断正确的接收。
希望对你有用
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,