Compare commits
No commits in common. "55528a6363d423111e4254bb69222ebf38e04245" and "afd878407ece9eac255fc6721359889fb9f69e82" have entirely different histories.
55528a6363
...
afd878407e
@ -1,67 +1,50 @@
|
|||||||
#include <libserialport.h>
|
#include <libserialport.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdbool.h>
|
#include <string.h>
|
||||||
|
|
||||||
/* Helper function for error handling. */
|
/* Helper function for error handling. */
|
||||||
int check(enum sp_return result);
|
int check(enum sp_return result);
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
struct sp_port *serial_port;
|
|
||||||
char *port_name = "/dev/ttyACM0";
|
|
||||||
|
|
||||||
const int size = 256;
|
|
||||||
char *buffer = malloc(size + 1);
|
|
||||||
|
|
||||||
const unsigned int timeout = 1000;
|
|
||||||
int result;
|
int result;
|
||||||
|
const int size = 30;
|
||||||
|
char *buffer = malloc(size + 1);
|
||||||
|
const char *port_name = "/dev/ttyACM0";
|
||||||
|
const unsigned int timeout = 1000;
|
||||||
|
struct sp_port *serial_port;
|
||||||
|
|
||||||
if (argc != 2) {
|
|
||||||
printf("Usage: %s <port>\n", argv[0]);
|
|
||||||
return -1;
|
|
||||||
} else {
|
|
||||||
port_name = argv[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("Connecting to '%s'...\n", port_name);
|
|
||||||
check(sp_get_port_by_name(port_name, &serial_port));
|
check(sp_get_port_by_name(port_name, &serial_port));
|
||||||
|
|
||||||
|
printf("Opening port.\n");
|
||||||
check(sp_open(serial_port, SP_MODE_READ_WRITE));
|
check(sp_open(serial_port, SP_MODE_READ_WRITE));
|
||||||
|
|
||||||
|
printf("Setting port to 9600 8N1, no flow control.\n");
|
||||||
check(sp_set_baudrate(serial_port, 9600));
|
check(sp_set_baudrate(serial_port, 9600));
|
||||||
check(sp_set_bits(serial_port, 8));
|
check(sp_set_bits(serial_port, 8));
|
||||||
check(sp_set_parity(serial_port, SP_PARITY_NONE));
|
check(sp_set_parity(serial_port, SP_PARITY_NONE));
|
||||||
check(sp_set_stopbits(serial_port, 1));
|
check(sp_set_stopbits(serial_port, 1));
|
||||||
check(sp_set_flowcontrol(serial_port, SP_FLOWCONTROL_NONE));
|
check(sp_set_flowcontrol(serial_port, SP_FLOWCONTROL_NONE));
|
||||||
puts("Connected.\n");
|
|
||||||
|
|
||||||
|
result =
|
||||||
|
check(sp_blocking_write(serial_port, "ping", strlen("ping"), timeout));
|
||||||
|
|
||||||
while (true) {
|
while (1) {
|
||||||
int pos = 0;
|
result = check(sp_blocking_read(serial_port, buffer, size, timeout));
|
||||||
|
|
||||||
while (pos < size) {
|
if (result == -1) {
|
||||||
result = check(sp_blocking_read(serial_port, buffer + pos, 1, timeout));
|
printf("Error reading from serial port\n");
|
||||||
|
break;
|
||||||
if (result == -1) {
|
} else if (result == 0) {
|
||||||
printf("Error reading from serial port\n");
|
printf("No more data\n");
|
||||||
break;
|
break;
|
||||||
} else if (result == 0) {
|
} else {
|
||||||
printf("No more data\n");
|
buffer[result] = '\0';
|
||||||
break;
|
printf("=====\n%s\n", buffer);
|
||||||
} else {
|
|
||||||
if (buffer[pos] == '\n') {
|
|
||||||
buffer[pos] = '\0';
|
|
||||||
break;
|
|
||||||
} else
|
|
||||||
pos++;
|
|
||||||
}
|
|
||||||
|
|
||||||
puts(buffer);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
free(buffer);
|
free(buffer);
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Helper function for error handling. */
|
/* Helper function for error handling. */
|
||||||
|
Loading…
Reference in New Issue
Block a user