pynqmbのuart.c/uart.hを編集してuart_readline()関数を実装する
実装は以下を参考にした:
ZYBO / Pmod / UART > PmodからUART接続してみた (UARTLITE使用)
https://qiita.com/7of9/items/d93d24766bd8ff13631a
https://github.com/shohei/PYNQ/commit/d14d5b5203b0fa252b583899943171bc8d47eb63
void uart_readline(uart dev_id, char* read_data){ unsigned int ReceivedCount = 0; while (1) { ReceivedCount += XUartLite_Recv(&xuart[dev_id], read_data + ReceivedCount, 1); if (read_data[ReceivedCount - 1] == '\n') { break; } } }
テストコード
200msのDelayを入れないと、改行まで受信できないらしい(https://qiita.com/7of9/items/d93d24766bd8ff13631a)
uart uart_dev0 = uart_open(1,0); char *hoge = "*"; uart_write(uart_dev0, hoge, 1); usleep(200000); char foo[] = "input something: "; uart_write(uart_dev0, foo, strlen(foo)); usleep(200000); char moge[100]; uart_readline(uart_dev0, moge); char foo1[] = "\r\nyou received: "; uart_write(uart_dev0, foo1, strlen(foo1)); usleep(200000); uart_write(uart_dev0, moge, strlen(moge)); usleep(200000);