to fix zero initial sensor readings, try 2 times to get OK

pull/101/head
alanbjohnston 5 years ago committed by GitHub
parent e867afe587
commit 30d1f44038
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1204,6 +1204,7 @@ void get_tlm_fox() {
float voltage[9], current[9], sensor[17], other[3]; float voltage[9], current[9], sensor[17], other[3];
char sensor_payload[500]; char sensor_payload[500];
sensor_payload[0] = 0;
memset(voltage, 0, sizeof(voltage)); memset(voltage, 0, sizeof(voltage));
memset(current, 0, sizeof(current)); memset(current, 0, sizeof(current));
memset(sensor, 0, sizeof(sensor)); memset(sensor, 0, sizeof(sensor));
@ -1363,29 +1364,32 @@ void get_tlm_fox() {
*/ */
unsigned int waitTime; unsigned int waitTime;
int i = 0; int i, end, trys = 0;
serialPutchar(uart_fd, '?'); while (((sensor_payload[0] != 'O') || (sensor_payload[1] != 'K')) && (trys++ < 2)) {
// printf("Querying payload with ?\n"); i = 0;
waitTime = millis() + 500; serialPutchar(uart_fd, '?');
int end = FALSE; printf("Querying payload with ?\n");
// int retry = FALSE; waitTime = millis() + 500;
while ((millis() < waitTime) && !end) { end = FALSE;
int chars = (char) serialDataAvail(uart_fd); // int retry = FALSE;
while ((chars--> 0) && !end) { while ((millis() < waitTime) && !end) {
c = (char) serialGetchar(uart_fd); int chars = (char) serialDataAvail(uart_fd);
// printf ("%c", c); while ((chars--> 0) && !end) {
// fflush(stdout); c = (char) serialGetchar(uart_fd);
if (c != '\n') { // printf ("%c", c);
sensor_payload[i++] = c; // fflush(stdout);
} else { if (c != '\n') {
end = TRUE; sensor_payload[i++] = c;
} else {
end = TRUE;
}
} }
} }
} }
sensor_payload[i++] = ' '; sensor_payload[i++] = ' ';
// sensor_payload[i++] = '\n'; // sensor_payload[i++] = '\n';
sensor_payload[i] = '\0'; sensor_payload[i] = '\0';
printf(" Payload string: %s", sensor_payload); printf(" Payload string: %s\n", sensor_payload);
if ((sensor_payload[0] == 'O') && (sensor_payload[1] == 'K')) // only process if valid payload response if ((sensor_payload[0] == 'O') && (sensor_payload[1] == 'K')) // only process if valid payload response
{ {

Loading…
Cancel
Save

Powered by TurnKey Linux.