Есть много хороших ответов о том, как читать с stdin
в python, но я просто не могу найти ничего о чтении отдельных символов вместо целых строк. Позвольте мне объяснить:
Мне нужно прочитать информацию, отправленную arduino через последовательный порт, который перенаправляется на стандартный ввод. Эта информация обрабатывается и сохраняется в текстовом файле. Я написал программу на Arduino, чтобы я мог изменить способ отправки информации. План состоял в том, чтобы отправить информацию с начальным (<
) и конечным символом (>
), чтобы она выглядела следующим образом: <height:2342>
Также будет записано много не относящихся к делу данных, поэтому я решил использовать вышеупомянутую форму, чтобы скрипт на python мог обнаружить соответствующую информацию и захватить ее.
Мой скрипт на python будет проверять каждый символ отдельно на наличие начального символа <
, в идеале, в том виде, в котором он был введен, и затем собирать информацию до получения >
. Я попытался получить ввод, используя inputchar = sys.stdin.read(1)
. Но проблема здесь в том, что это читается с stdin
навсегда, пока не будет захвачен символ новой строки (\n
), а затем вернет первый введенный символ.
Я хочу, чтобы эта функция возвращала введенный символ сразу после его отправки на stdin
, а не ожидала перехода на новую строку. Как мне этого добиться?
Платформа: Raspberry Pi Zero W, Raspbian Jessy, Python 2.7
Я знаю, что мог бы использовать inputline = sys.stdin.readline()
и изменить программу Arduino для отправки новой строки после информации. Затем проанализируйте всю строку (которая может быть очень длинной) и извлеките информацию. Но я не думаю, что это был бы чистый способ сделать это.
Обновление через последовательный порт: К сожалению, я не могу получить доступ к последовательному порту напрямую из python, потому что есть второй скрипт python, который должен записывать в последовательный порт. Поскольку только один может получить доступ к порту, решение состоит в том, чтобы перенаправить последовательный порт на stdin
и stdout
. См. Мой вопрос Доступ к одному последовательному порту с двумя скриптами Python