|
struct Message { |
uint16_t Uniek; |
uint8_t BoardNo; |
uint16_t Command; |
uint16_t Argument; |
uint16_t ArgumentExt; |
uint8_t ArgumentSmall; |
byte Values[4]; |
}; |
|
const uint16_t None = 0; |
const uint16_t Nano_CH340 = 5; |
const uint16_t Identifier = 8324; |
bool IsActive = false; |
const uint16_t ErrorUniek = 1; |
const uint16_t ErrorCommandNotDefined = 14; |
|
const uint8_t BoardNr = 1; |
|
const uint16_t CmdGetDefinition = 1; |
const uint16_t CmdTest = 2; |
const uint16_t CmdError = 13; |
|
void setup() { |
Serial.begin(9600); |
IsActive = false; |
} |
|
void loop() { |
struct Message msg; |
|
if (Serial.available() > 0) { |
Serial.readBytes((uint8_t *)&msg, sizeof(msg)); |
|
if (msg.Uniek == Identifier) { |
switch (msg.Command) |
{ |
case CmdGetDefinition: |
GetDefinition(); |
break; |
case CmdTest: |
SendTest(); |
break; |
default: |
SendError(ErrorCommandNotDefined, msg.Command); |
break; |
} |
} |
else |
{ |
SendError(ErrorUniek, 0); |
} |
} |
} |
|
void SendTest() |
{ |
struct Message msg; |
memset(&msg, 255, sizeof( msg)) ; |
|
msg.Uniek = Identifier; |
msg.BoardNo = BoardNr; |
msg.Command = CmdTest; |
msg.Argument =1000; |
msg.ArgumentExt = 1001; |
msg.ArgumentSmall = 100; |
msg.Values[0] = 10; |
msg.Values[1] = 11; |
msg.Values[2] = 12; |
msg.Values[3] = 13; |
|
Serial.write((const uint8_t *)&msg, sizeof(msg)); |
} |
|
void SendError(int error, int parms) |
{ |
struct Message msg; |
memset(&msg, 255, sizeof( msg)) ; |
|
msg.Uniek = Identifier; |
msg.BoardNo = BoardNr; |
msg.Command = CmdError; |
msg.Argument = error; |
msg.ArgumentExt = parms; |
|
Serial.write((const uint8_t *)&msg, sizeof(msg)); |
} |
|
void GetDefinition() |
{ |
struct Message msg; |
memset(&msg, 255, sizeof( msg)) ; |
|
msg.Uniek = Identifier; |
msg.BoardNo = BoardNr; |
msg.Command = CmdGetDefinition; |
msg.Argument = Nano_CH340; |
Serial.write((const uint8_t *)&msg, sizeof(msg)); |
IsActive = true; |
} |
|
|