这是我的电脑和我的Arduino之间的沟通。计算机通过GUI将命令发送到Arduino Mega 2560.GUI代码用C#编写。
希望有人能搞清楚。我做错了什么?感谢。
此外:起始字节为0x80,命令字节为0x81,单位字节为0x01,保留字节为0x0,停止字节为0x3F。字节必须按此顺序排列。当读取5的数组时,它必须执行它并将其发送回GUI。
void handleDoorOpen(char one);
void handleDoorClose(char one);
void setup() {
pinMode(13, OUTPUT);// define buttonPin. E.g. 13.
Serial.begin(9600); // define your self
}
#define MAX_LENGTH 16
char data[MAX_LENGTH]; // Data array
void loop() {
int count = 0;
while (Serial.available() > 0) {
// read the incoming byte:
char incomingByte = (char)Serial.read();
data[count] = incomingByte;
count++;
delay(25);
}
if (count >= 5 && data[0] == 0x80) {
switch (data[1]) {
case 0x81:
handleDoorOpen(data[2]); // data[2] is unit
Serial.write(data, count); // Send response back to C# wpf
break;
case 0x82:
handleDoorClose(data[2]); // data[2] is unit
Serial.write(data, count); // Send response back to C# wpf
break;
default:
break;
count = 0;
}
}
}
void handleDoorOpen(char one) {
Serial.write(one);
}
void handleDoorClose(char one) {
Serial.write(one);
}
这是我从编译器获得的错误/警告文本:
C:\Users\Rasef\OneDrive\Dokumenter\Arduino\gui_v_2\gui_v_2.ino: In function 'void loop()':
C:\Users\Rasef\OneDrive\Dokumenter\Arduino\gui_v_2\gui_v_2.ino:38:8: warning: case label value exceeds maximum value for type
case 0x81:
^
C:\Users\Rasef\OneDrive\Dokumenter\Arduino\gui_v_2\gui_v_2.ino:44:8: warning: case label value exceeds maximum value for type
case 0x82:
^