#define SSerialTxControl 12 //RS485 Direction control
#define RS485Transmit HIGH
#define RS485Receive LOW
#define Pin13LED 13
String senixX = "";
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial1.begin(115200);
Serial.println("BOOTING!");
pinMode(Pin13LED, OUTPUT);
pinMode(SSerialTxControl, OUTPUT);
//Serial1.transmitterEnable(12);
digitalWrite(SSerialTxControl, RS485Receive);
delay(10);
}
void loop() {
// put your main code here, to run repeatedly:
qSenix();
delay(2000);
}
void qSenix() {
senixX = "";
byte data[] {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01};
unsigned long maxserialdly=50; // the time we need to wait
delay(5); // !!!!!!!!!!!!!!!!!!!!!!!!!!
digitalWrite(SSerialTxControl, RS485Transmit); // Enable RS485 Transmit
//Serial1.flush();
byte message2[] = {0x02, 0x03, 0x02, 0x08, 0x00, 0x01, 0x04, 0x43};
Serial1.write(message2, sizeof(message2));
delay(5);
digitalWrite(SSerialTxControl, RS485Receive); // Disable RS485 Transmit
unsigned long previousMillis=millis(); // millis() returns an unsigned long.
//delay(15); // Small delay to make sure all data sent from senix sensor have been sent before trying to read all. at 115200baud this way more then enough time.
int i = 0;
while((i < 8) && ((unsigned long)(millis() - previousMillis) < maxserialdly) ) {
int inChar = Serial1.read();
if (inChar != -1) {
data[i] = inChar;
i++;
}
}
Serial.println("Start:");
Serial.println(i, DEC); // See how many bytes we actually read
Serial.println((int)(millis() - previousMillis), DEC); // how long it took.
Serial.println(data[0], BYTE);
Serial.println(data[1], BYTE);
Serial.println(data[2], BYTE);
Serial.println(data[3], BYTE);
Serial.println(data[4], BYTE);
Serial.println(data[5], BYTE);
Serial.println(data[6], BYTE);
Serial.println(data[7], BYTE);
Serial.println("STOP");
}