54 lines
1.4 KiB
C++
54 lines
1.4 KiB
C++
#include <PostNeoSWSerial.h>
|
|
PostNeoSWSerial zt2Serial( 10, 11 );
|
|
volatile uint32_t newlines = 0UL;
|
|
|
|
static void handleRxChar( uint8_t c )
|
|
{
|
|
if (c == '\n')
|
|
newlines++;
|
|
}
|
|
|
|
//const int chipSelect = 10;
|
|
int gotPacket = 0;
|
|
uint8_t packet[17];
|
|
|
|
void setup() {
|
|
// Open serial communications and wait for port to open:
|
|
Serial.begin(9600);
|
|
zt2Serial.begin(9600);
|
|
//Serial1.setTimeout(600);
|
|
while (!Serial) {
|
|
; // wait for serial port to connect. Needed for native USB port only
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void getZeitronixPacket(char* packetpointer){
|
|
gotPacket = 0;
|
|
char buffer[32] = {0xF}; // buffer 32 bytes to make sure we find the 3 byte start sequence.
|
|
for (int i=0; i<32; i++){
|
|
zt2Serial.readBytes(&buffer[i],1);
|
|
if (i > 1 && buffer[i] == 2 && buffer[i-1] == 1 && buffer[i-2] == 0) {
|
|
gotPacket = 1;
|
|
zt2Serial.readBytes(packetpointer,11);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void loop() {
|
|
char dataString[80];
|
|
|
|
while (zt2Serial.available() > 32){ // wait til there's a nice chunk in the serial buffer
|
|
getZeitronixPacket(packet);
|
|
// this would be our logtosd() below:
|
|
if (gotPacket == 1) {
|
|
sprintf(dataString, "%lu,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u", millis(),packet[0],packet[1],packet[2],packet[3],packet[4],packet[5],packet[6],packet[7],packet[8],packet[9],packet[10],packet[11],packet[12],packet[13],packet[14]);
|
|
Serial.println(dataString);
|
|
}
|
|
}
|
|
|
|
|
|
} |