在发送从Arduino Mega到ENTTEC DMXStreamer的RS-232命令时出现问题.RS-232 API位于这里,在这里输入链接描述。我试图发送3个命令H1 (停止显示) HA (在插槽中加载显示) H0 (已加载的开始显示)。我尝试过多种方法来发送数据。
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中的send选项卡,在框中键入"H1HAH0“,然后按下Send按钮。流线员回复了积极的回应!我得到了想要的结果,A插槽中的DMX节目开始播放。
我在发送数据时做错了什么。顺便提一句,我一度希望使用命令H3101而不是H0。来自API的命令的注释如下。我不知道如何根据笔记发送101部分的命令。任何帮助都将不胜感激。
来自API H命令,该命令用于启动、停止显示并将显示设置为运行。
如果没有存储任何显示,这将不会产生任何效果。
格式H1
格式H3x警告X值是8位二进制数据,而不是ascii。此命令将启动显示并循环X次。若要运行显示,必须将X设置为0x00,循环的最大数目为100。如果X被设置为101,则显示将永远循环。
发布于 2019-10-26 05:42:35
在9600波特上,字节正在缓慢运行。您将看到他们之间和他们到达之前的available() 0。使用Serial2.readString()进行测试。它将等待下一个字节,直到第二字节。
String Message = Serial2.readString();
Serial.println(Message);注意:这是为了一个测试。不要在最后的草图中使用字符串或readString。使用指定长度或终止符的C字符串和readBytes。
https://stackoverflow.com/questions/58566732
复制相似问题