Com порты зависают или перестают отправлять последовательную связь после 7-8 часов работы

Я работаю над проектом непрерывной отправки шестнадцатеричных данных на последовательные COM-порты с моего компьютера, а затем с COM-портов на светодиоды (индикаторы RGB) через USB-кабель RS232. Иногда это работает в течение 10 -15 часов, а через несколько дней прекращается отправка данных в порты.

Я использую контроллер DMX 512, кабель RS232 USB с драйвером FTDI и язык 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);
}

Когда это останавливается, я пытаюсь отправить данные через нажатие на кнопку "Пуск", но данные не отправляются через эти ком-порты, пока я не отсоединяю USB-кабель и не подключаю снова, что работает после этого.

Может кто-нибудь предложить мне, в чем реальная проблема с коммуникационными портами. Они отключились, посылая им непрерывные данные. Заранее спасибо

1 ответ

У меня была и эта проблема. После всех моих исследований я обнаружил, что это происходит только с USB на последовательный порт COM, потому что энергосбережение окон отключает их. Посмотрите, как это настроить, на прилагаемой картинке.

Другие вопросы по тегам