【问题标题】:Com ports get stuck or stop sending serial communication after working for 7-8 hours工作 7-8 小时后 COM 端口卡住或停止发送串行通信
【发布时间】:2016-08-11 18:07:18
【问题描述】:

我正在开发一个项目,将十六进制数据从我的计算机连续发送到串行 com 端口,然后通过 RS232 USB 电缆从 com 端口发送到 LED(RGB 灯)。有时它可以工作 10 -15 小时,每隔几天它就会停止向端口发送数据。

我正在使用 DMX 512 控制器、带有 FTDI 驱动程序的 RS232 USB 电缆和 c# 语言进行编码以使用 SerialPort 类发送数据。

这是我的代码:

public static GO () 
{
    try
    {
        dmx = new Dmx(2, 0);

        Thread mTh1 = new Thread(() => dmx.Start(RGBdata1, RGBdata2, RGBdata3)); 

        Global.tmrStarted = true;  // test it,ok

        mTh1.Start();
    }
}

这是我将数据发送到 3 个端口的启动方法

while (Global.tmrStarted)
{
    Break();
    Thread.Sleep(500); 
    if (m_port == null || m_port.IsOpen == false) return;
    m_port.Write(new byte[] { 0 }, 0, 1);
    SendData();


    Break1();
    if (m_port1 == null || m_port1.IsOpen == false) return;
    m_port1.Write(new byte[] { 0 }, 0, 1);
    SendData1();
    Break2();

    if (m_port4 == null || m_port4.IsOpen == false) return;
    m_port4.Write(new byte[] { 0 }, 0, 1);
    SendData2();

    Thread.Sleep(100);
}

当它停止时,我尝试通过单击开始按钮发送数据,但数据不会通过这些 com 端口发送,直到我不拔下 USB 电缆并再次插入,之后才能正常工作。

谁能告诉我通信端口的真正问题是什么。他们是否通过不断向他们发送数据而被禁用。提前谢谢

【问题讨论】:

  • 这种情况通常是usb2serial芯片的问题,而不是你的代码问题。

标签: c# serial-port driver ftdi dmx512


【解决方案1】:

我也遇到过这个问题 经过我所有的研究,我发现它只发生在 USB 到串行 COM 中,因为 Windows 的省电功能将它们关闭。 在附图中查看如何配置它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 2014-12-22
    • 1970-01-01
    相关资源
    最近更新 更多