У меня есть мега arduino, связывающаяся по Bluetooth (устройство bluesmirf gold) с приложением C #, которое я написала.Arduino постоянно посылает последовательный сигнал из 32 символов, первый из которых всегда «S», а последний «E».Используя шпаклевку, я могу подтвердить, что этот сигнал отправляется правильно в 99% случаев.
Теперь я хочу прочитать этот сигнал с помощью моего приложения на C #, которое я делаю со следующим кодом:
public string receiveCommandHC()
{
string messageHC = "";
if (serialHC.IsOpen)
{
while (serialHC.ReadChar() != 'S')
{
}
messageHC = serialHC.ReadTo("E");
serialHC.DiscardInBuffer();
}
return messageHC;
}
serialHC относится к последовательному классу.
Иногда это работает отлично, но иногда у меня возникают проблемы, я не могу понять, почему иногда это работает, а другие нет.
Проблемамне кажется, что иногда я получаю довольно большое отставание в данных, которые я читаю с arduino.Я замечаю это, потому что я отправляю состояния кнопок, и они меняются только через несколько секунд после того, как я фактически нажимаю или отпускаю кнопку на Aurduino.Я использовал стандартную скорость передачи данных устройства Bluetooth, которая составляет 115200, и мне было интересно, может ли изменение этого значения на гораздо более низкое значение дать лучшие результаты?Что, если какое-то преимущество будет иметь это?Мне не нужны высокие скорости связи, даже обновление состояния 4-5 раз в секунду было бы приемлемым для моего приложения.
Возможно ли, что задержка идет из моего кода?Я думаю, что это может быть из цикла while, который ожидает входящего "S", но тогда я не понимаю, почему он должен зависать там, поскольку есть новые сигналы, всегда поступающие с высокой скоростью.
Я используюDiscardInBuffer (), потому что я не забочусь об устаревших данных и просто хочу пропустить это.Гораздо важнее, что я читаю текущие данные и работаю с этими свежими данными.
Спасибо за вашу помощь!
С уважением,
Бендер
Обновление:
Только что узнал немного больше информации при отладке.Кажется, что проблема появляется только:
- При подключении по Bluetooth (по USB-кабелю нет никаких задержек)
- Когда установлено второе соединение Bluetooth от ПК к другому устройству (другой COM-порт и разная скорость передачи данных в бодах)
У кого-нибудь есть какие-либо ошибки в работе двух разных устройств от одного и того же ключа Bluetooth на ПК?Я могу подключиться к обоим без проблем, но все еще с проблемой задержки, упомянутой ранее.
Спасибо за любую помощь