C# TCP/IP 发送从串行端口接收的数据的客户端 - 建议
本文关键字:数据 客户端 建议 串行端口 TCP IP | 更新日期: 2023-09-27 18:33:40
目前我正在开发一个通过串行端口从RFID读卡器接收数据的应用程序。数据,然后数据应通过TCP/IP发送到服务器。
我已经让这两件事都工作了,但不是同时。我可以从卡中读取ID,也可以向服务器发送一些文本。但我想请你提出建议,对于这两件事一起工作,最好的解决方案是什么。
目前,我在两个类中有TCP/IP用法和串行用法。从主类 im 创建两个类的对象并启动从串行端口读取数据的线程。
我应该尝试这样的事情吗?
在类中,我将只创建串行使用对象并调用处理读取的线程。在该读取线程中,我将调用一个新线程,该线程将打开TCP/IP连接并发送从串行端口接收的数据。
另一种以某种方式简单的方法将从主类打开两个连接,但它会从串行端口接收线程启动TCP/IP发送线程(通过已经打开的连接(。
我在线程方面没有太多经验,所以这就是为什么我请求您的帮助其他软件开发人员。谢谢!(如果这会有所帮助,我可以在此处粘贴某些代码部分(。
更新:
这就是提示,我会仔细研究你的建议。我想这是个好主意,但正如我所说,我对线程没有太多经验。如果我在这些类中创建单独的线程,并且它们都使用相同的对象,比如说类消息的对象,我会在 COM 处理线程中创建新对象,并且 TCP/IP 处理线程会使用该对象通过 TCP/IP 从中发送数据,它会起作用吗?我可以像使用 List 一样制作类 Message 对象的队列吗?另外,如何将类中的一个线程中创建的对象队列传递给另一个线程
将两种不同的通信方法抽象为单独的类是一个很好的设计,所以我会坚持下去。
与其在主类中处理线程,不如让每个通信类处理自己的线程管理,并通过共享线程安全队列在它们之间进行通信。
然后,您的串行通信对象可以处理与串行端口通信,读取数据并将该数据放入队列中。TCP通信对象可以处理连接,重新连接,断开连接等...以及使用队列中的数据并将其发送到套接字并在网络上发送。
您的主类可以只创建队列和在同一队列实例中传递的两个通信对象。