c#一个串口接收数据后经过处理然后通过另一个串口发送

时间:2022-11-25 07:58:08
这样不同串口收发数据,需要多线程操作吗?求大神给个思路,收数据可以用datareceived方法来做吗?我自己写的一个程序总是会出现卡死情况。。。

5 个解决方案

#1


引用 楼主 qq_30804657 的回复:
这样不同串口收发数据,需要多线程操作吗?


毫无直接关系。

#2


这样应该怎么写呢?给个思路呗

#3


一说到“多线程操作”,可能许多人就纠结于什么“数据队列、死循环”的编程。这完全是错误的思路,是 20年前一些低级的 java 入门书籍上的编程思路。

如果那你要发送数据,假设你希望异步发送数据,但是使用同步的操作的语句,你可以写(例如)
ThreadPool.QueueUserWorkItem(h => client1.Send(dataBuffer));

这里

1. 系统线程池本身就是一个高效率的、低消耗的、系统级的“任务队列”,你自己用不着纠结什么“发送队列”的编程问题;

2. 而 client1 之类的“设备对象”本身是数据对象,并不能直接扯上什么“线程”的问题。有的人以为“5个设备就应该启动5个线程”,这就是完全错误的知识。几个设备跟几个线程完全没有关系。

3. datareceived 体现了事件驱动的概念,有了事件那么底层系统会通知你,而不用你去轮询它。这用不着纠结什么“可以不可以用”的问题,而是应该学会使用。

#4


引用 2 楼 qq_30804657 的回复:
这样应该怎么写呢?给个思路呗


自己看入门书。我只是针对(可能的)不同程度而给个提示,希望能帮你提出更有深度的问题。论坛不是重复刚学编程的“抄代码”的地方(而是你应该贴出书上没有的设计蓝图和代码),书店里卖的入门书以及大量的网络资料才是,希望你能理解。

#5


我现在遇到这样一个问题 ,我打开串口收数据,当接收量特别大的 时候,会出现串口断掉,不接收数据了,这个原因是什么?

#1


引用 楼主 qq_30804657 的回复:
这样不同串口收发数据,需要多线程操作吗?


毫无直接关系。

#2


这样应该怎么写呢?给个思路呗

#3


一说到“多线程操作”,可能许多人就纠结于什么“数据队列、死循环”的编程。这完全是错误的思路,是 20年前一些低级的 java 入门书籍上的编程思路。

如果那你要发送数据,假设你希望异步发送数据,但是使用同步的操作的语句,你可以写(例如)
ThreadPool.QueueUserWorkItem(h => client1.Send(dataBuffer));

这里

1. 系统线程池本身就是一个高效率的、低消耗的、系统级的“任务队列”,你自己用不着纠结什么“发送队列”的编程问题;

2. 而 client1 之类的“设备对象”本身是数据对象,并不能直接扯上什么“线程”的问题。有的人以为“5个设备就应该启动5个线程”,这就是完全错误的知识。几个设备跟几个线程完全没有关系。

3. datareceived 体现了事件驱动的概念,有了事件那么底层系统会通知你,而不用你去轮询它。这用不着纠结什么“可以不可以用”的问题,而是应该学会使用。

#4


引用 2 楼 qq_30804657 的回复:
这样应该怎么写呢?给个思路呗


自己看入门书。我只是针对(可能的)不同程度而给个提示,希望能帮你提出更有深度的问题。论坛不是重复刚学编程的“抄代码”的地方(而是你应该贴出书上没有的设计蓝图和代码),书店里卖的入门书以及大量的网络资料才是,希望你能理解。

#5


我现在遇到这样一个问题 ,我打开串口收数据,当接收量特别大的 时候,会出现串口断掉,不接收数据了,这个原因是什么?