diff --git a/uart.cpp b/uart.cpp index 098e9c6515dc64ff25c1cb26707cf8be96b943c7..8846998a3d5d26c13a328a6c6c14a3b0dd4768ba 100644 --- a/uart.cpp +++ b/uart.cpp @@ -5,6 +5,7 @@ #include <wiringSerial.h> #include <wiringPi.h> +#include <conio.h> #include <iostream> using namespace std; @@ -15,6 +16,9 @@ const char TURN_OFF[] = "Turn Led Off"; int main(int argc, char const *argv[]) { int fd = serialOpen("/dev/ttyS0", 9600); + + char buffer[26]; + int i = 0; if (fd == -1 || wiringPiSetup() == -1) { printf("UART PAS OK\n"); @@ -22,34 +26,24 @@ int main(int argc, char const *argv[]) } serialPrintf(fd, TURN_ON); - delay(1000); - int response; - - while (true) { - if (serialDataAvail(fd)) { - response = serialGetchar(fd); - break; - } - } - cout << response << endl; - printf("%c\n", response); + while (serialDataAvail(fd) > -1) { + buffer[i++] = serialGetchar(fd); + if (i == 25) break; + } + buffer[i] = '\0'; + printf("%s\n", buffer); + + delay(2000); serialPrintf(fd, TURN_OFF); + + while (serialDataAvail(fd) != 26) { } - delay(200); - - while (true) { - if (serialDataAvail(fd) > 0) { - cout << serialDataAvail(fd) << endl; - for (int i = 0; i < serialDataAvail(fd); i++) - { - response = serialGetchar(fd); - } - break; - } + for (i = 0; i < 26; i++) + { + buffer[i] = serialGetchar(fd); } - - cout << response << endl; + cout << buffer << endl; serialClose(fd);