首页 > 解决方案 > 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 端口的方法?

代码表示赞赏!

请帮助我,谢谢!

标签: c#multithreadingusbftdi

解决方案


推荐阅读