SerialPort.Write Истек период ожидания семафора

#c# #arduino #serial-port #semaphore #teensy

#c# #arduino #последовательный порт #семафор #крошечный

Вопрос:

Я работаю над проектом, в котором я управляю большим количеством светодиодных лент RGB с помощью крошечных плат Arduino. Я протестировал его с подмножеством плат, и, кажется, все в порядке, пока я не подключу их все и не начну отправлять свои байтовые массивы в SerialPort. В качестве основы я использую библиотеку OctoWS2811 в прошивке teensy для обращения к светодиодам (https://www.pjrc.com/teensy/td_libs_OctoWS2811.html ). И отправьте мои данные массива байтов с помощью приложения на C #.

Я тестировал с 2 USB-концентраторами, каждый из которых имеет 6 крошечных плат. По отдельности все вроде бы функционально. Но как только я подключу оба USB-концентратора. Я продолжаю получать исключение тайм-аута семафора

 System.IO.IOException: The semaphore timeout period has expired.
    at System.IO.Ports.InternalResources.WinIOError(Int32 errorCode, String str)
    at System.IO.Ports.SerialStream.EndWrite(IAsyncResult asyncResult)
    at System.IO.Ports.SerialStream.Write(Byte[] array, Int32 offset, Int32 count, Int32 timeout)
    at System.IO.Ports.SerialPort.Write(Byte[] buffer, Int32 offset, Int32 count)
  

На первый взгляд кажется, что я могу успешно отправить пару кадров после того, как он начнет выдавать эти исключения семафора для пары крошечных.

Любые советы о том, что я мог бы попытаться предотвратить это.

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

Также кажется, что пару кадров удается отправить, но через некоторое время все начинает разваливаться.

Заранее благодарю вас за помощь.

С уважением

Комментарии:

1. Используете ли вы чип буфера 245, как рекомендовано? Есть ли у вас область для какой-либо отладки?

2. Тот факт, что он, по-видимому, зависит от количества подключенных USB-концентраторов или плат, может указывать на проблему с питанием. Вы питаете все эти платы от Arduino или используете дополнительные источники питания?

3. @jdweng Упомянутый вами буферный чип, который, если я не ошибаюсь, необходим для выходного сигнала? Я успешно смог отправлять анимацию на светодиоды, отправляя им цвета непосредственно из прошивки. Похоже, проблема в том, какой сигнал поступает в крошечный. Есть также несколько крошечных устройств, которые нормально работают с 2 USB-концентраторами.

4. @PMF USB-концентраторы имеют собственный источник питания. Я только что добился успеха с заменой USB-кабеля. У меня была одна крошечная ошибка, которая всегда давала мне исключения в сценарии. Я заменил кабель, и он исчез. После возврата исходного кабеля проблема вернулась. Он собирается заказать пару новых кабелей для тестирования. Если у меня будет больше успеха, я дам вам знать 🙂

5. Я подозревал, что возникла проблема с электропитанием, и не был уверен, какой ток используют платы.