c# - C# FTDI 多线程写入
问题描述
使用 FTDI D2XX 驱动程序与 FTDI 的 USB 转串口和嵌入式 FT232RL 一起工作,遇到一个问题,即 FTDI 写入在运行 10 多个小时后出现 FT_IO_ERROR 失败,随后端口死机。WES7、C#、.net 4.0。
FTDI.FT_STATUS status = m_FtdiSerialPort.Write(data, (uint)numBytesToWrite, ref numBytesWritten);
尝试重新打开端口返回 FT_DEVICE_NOT_OPENED。
FTDI.FT_STATUS status = m_FtdiSerialPort.OpenBySerialNumber(SerialNumber);
我在文档中读到这是由于多线程应用程序的主线程与写入 FTDI 数据的线程发生冲突。尽管我已经设置了超时,但我一直无法找到有关多线程写入的更多文档。
m_FtdiSerialPort = new FTDI();
...
m_FtdiSerialPort.SetBaudRate(9600);
m_FtdiSerialPort.SetDataCharacteristics(FTDI.FT_DATA_BITS.FT_BITS_8, FTDI.FT_STOP_BITS.FT_STOP_BITS_1, FTDI.FT_PARITY.FT_PARITY_NONE);
m_FtdiSerialPort.SetFlowControl(FTDI.FT_FLOW_CONTROL.FT_FLOW_NONE, 0, 0);
m_FtdiSerialPort.SetTimeouts(5000, 100);
有人对 D2XX 和 FTDI 的 C# 接口有类似的经验吗?有没有首选的方法来使用 FTDI 在多线程应用程序中写入数据?是否有不涉及重置整个驱动程序堆栈的重置 FTDI 端口的方法?
代码表示赞赏!
请帮助我,谢谢!
解决方案
推荐阅读
- javascript - WebRTC“完美协商”问题
- svg - SVG PATH : LineTo 路径命令 多个参数
- sql - 将值替换为标志设置为 1 的最后一个值
- flutter - flutter_inappwebview - 没有 html 视频
- c - 如何在C中将一个数组拆分为两个数组,一个用于偶数,一个用于奇数
- python - 将json转换为格式化字符串
- apache-camel - WELD-001408:带有限定符 @Default 的 CdiCamelExtension 类型的依赖关系不满足
- c++ - 使用 Irrlicht 为 CMake 项目构建错误 LNK1104
- angular - 我们可以在一个应用程序中使用多个 Angular 版本吗?
- elasticsearch - 是否可以从 Kibana 定义的管道创建 Elasticsearch 索引?