Tay*_*ese 9 .net c# serial-port
通过不同的线程(一个读取线程和一个写入线程)同时读取和写入串行端口是否安全?是否有必要在每个线程中添加读/写锁定?
从不同线程"同时"读取和写入串行端口是处理串行端口通信的标准方法:一个线程处理读取,一个处理写入.可接受的.
有许多基于串行的设备可以异步地向主机发送数据,同时仍允许将命令发送到设备本身:条形码扫描仪,标签扫描仪和相机等设备.
问题?
当您尝试与设备同步通信时出现问题.
例如,您想要编写命令,然后立即回读任何响应.那么,在这种情况下,您将暂停读取线程并在写入命令后手动读取所有串行端口数据.处理完命令后,读取线程可以重新启动.
摘要
一般来说,我建议只有一个额外的线程来处理端口数据的所有读取并触发事件,例如DataReceived从主线程执行所有写操作.
从SerialPort的文档:
此类型的任何公共静态(在Visual Basic中为Shared)成员都是线程安全的.任何实例成员都不保证是线程安全的.
由于读取和写入不是静态的,因此它们不是线程安全的.无论如何,这是一个非常糟糕的主意,因为SerialPort类为您维护内部缓冲区.
您需要将I/O同步到串行端口.
| 归档时间: |
|
| 查看次数: |
12512 次 |
| 最近记录: |