From 343553741c3586013d506b74e6546b6315470d7a Mon Sep 17 00:00:00 2001 From: tianjialong Date: Mon, 17 Apr 2023 19:46:08 +0800 Subject: [PATCH] update --- cpp/a.out | Bin 60152 -> 60336 bytes cpp/main.cpp | 61 +++++++++++++++++++++++++++++++++++++++++++++++++---------- cpp/uart.cpp | 2 +- 3 files changed, 52 insertions(+), 11 deletions(-) diff --git a/cpp/a.out b/cpp/a.out index c42e6c4cbef05bdea839b729c52b06c8ac8487ec..1ec3e0d3f1376f0ab226adc0b6cb669eb4c91109 100755 GIT binary patch delta 15481 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 CW67BS delta 14335 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 0) { + g_uart.send((char *)arg, g_rec_len); + g_rec_len = 0; + } + usleep(1000); + } +} + +void *thread_uart_receive(void *arg) { + while (1) { + if (g_rec_len == 0) { + g_rec_len = g_uart.receive((char *)arg, 128); + } + usleep(1000); + } +} int main(int argc, char *argv[]) { - int rec_len; - char buffer[128]; + char share_buffer[128]; + + pthread_t pid1, pid2; + pthread_attr_t *pthread_arr1, *pthread_arr2; + pthread_arr1 = NULL; + pthread_arr2 = NULL; if (argc != 3) { cout << "input error,please input ttyS and baudrate" << endl; - return 0; + return -1; + } + + if (g_uart.open(argv[1], argv[2]) < 0) { + cout << "open uart error" << endl; + return -2; + } else { + cout << "open uart success" << endl; } - g_uart.open(argv[1], argv[2]); + if (pthread_create(&pid1, pthread_arr1, thread_uart_send, (void *)&share_buffer) != 0) { + cout << "create uart send thread error" << endl; + return -3; + } else { + cout << "create uart send thread success" << endl; + } + + if (pthread_create(&pid2, pthread_arr2, thread_uart_receive, (void *)&share_buffer) != 0) { + cout << "create uart receive thread error" << endl; + return -4; + } else { + cout << "create uart receive thread success" << endl; + } while (1) { - rec_len = g_uart.receive(buffer, sizeof(buffer)); - if (rec_len > 0) { - g_uart.send(buffer, rec_len); - memset(buffer, 0, sizeof(buffer)); - } - usleep(1000); + usleep(100000); } + + pthread_join(pid1, NULL); + pthread_join(pid2, NULL); return 0; } diff --git a/cpp/uart.cpp b/cpp/uart.cpp index 9cb3c92..0bc3305 100644 --- a/cpp/uart.cpp +++ b/cpp/uart.cpp @@ -35,7 +35,7 @@ int Uart::open(string path, string ratestr) { } if (s_baudratemap.find(ratestr) == s_baudratemap.end()) { - return -1; + return -2; } m_rate = ratestr;