Не удается получить команды RS-232 для работы при отправке из arduino - PullRequest
0 голосов
/ 26 октября 2019

Проблемы с отправкой команд RS-232 из Arduino Mega в ENTTEC DMXStreamer. RS-232 API находится здесь введите описание ссылки здесь . Я пытаюсь отправить 3 команды H1 (Stop Show) HA (Load Show в слоте A) H0 (Start Show, который загружен). Я пробовал несколько вещей для отправки данных.

setup(){
    Serial2.begin(9600); //default baud rate of DMXStreamer
    Serial.begin(115200);
}
loop(){
    Serial2.print("H1HAH0");
    delay(3000);
}

Я также пытался

Serial2.write(0x48);
Serial2.write(0x31);
Serial2.write(0x48);
Serial2.write(0x41);
Serial2.write(0x48);
Serial2.write(0x30);

Все, что я получаю в ответ от DMXStreamer, это '' '. Я даже не вижу эти символы в качестве возможных кодов ответов в API. Успешная отправка должна вернуть '!'и отрицательный ответ «?».

Это код, который я использовал для чтения ответа.

String Message = "";
while(Serial2.available())
{
    char inChar = Serial2.read();
    Message += inChar;
}
Serial.println(Message);

Затем я подключил преобразователь usb в последовательный порт к DMXStreamer и использовал Realterm для отправки данных. Я перешел на вкладку отправки в Realterm, набрал «H1HAH0» в поле и нажал кнопку «Отправить ASCII». Стример дал положительный ответ !!! и я получил желаемый результат, DMX-шоу в слоте A начало играть.

Что я делаю не так при отправке данных. В качестве примечания я в какой-то момент хочу использовать команду H3101 вместо H0. Примечания к команде из API приведены ниже. Я не уверен, как отправить 101 часть команды на основе заметок. Любая помощь будет принята с благодарностью.

Из API H Команда Эта команда используется для запуска, остановки шоу и запуска шоу.

  • Команда H0, формат начала шоу H0

Если шоу не сохранено, это не будет иметь никакого эффекта

  • Команда H1, Stop Show Команда остановит шоу.

Формат H1

  • Команда H3, Start Show с временем цикла

Формат H3x Предупреждение: значение X представляет собой 8-битные двоичные данные, а не ascii. Эта команда запустит шоу и зафиксирует X раз. Чтобы запустить шоу один раз, X должен быть установлен в 0x00, максимальное количество циклов равно 100. Если X установлено в 101, шоу будет повторяться вечно.

1 Ответ

0 голосов
/ 26 октября 2019

Байты медленно передаются на скорости 9600 бод. Вы увидите available() 0 между ними и до их прибытия. Используйте Serial2.readString() для теста. Он ждет следующего байта до секунды.

String Message = Serial2.readString();
Serial.println(Message);

Примечание: это для теста. Не используйте String или readString в окончательном наброске. Используйте строки C и readBytes с указанием длины или терминатора.

...