jenya7 0 20 мая, 2019 Опубликовано 20 мая, 2019 · Жалоба Я в режиме Debbuger->Simulator вывожу информацию наружу printf ("block = %d \n", block); но окно ''Terninal I\O''. В этом же окне внизу есть Input. Я пытаюсь принять строку с Input - scanf( "%128[^\r]", input_str); или chr = getchar(); но это все блокирующие функции. как можно принять строку в симуляторе? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 20 мая, 2019 Опубликовано 20 мая, 2019 · Жалоба Tools->Options, TerminalIO, Keyboard( Buffer/Direct ) Попробуйте. Может директ скидывает в поток каждый байт, а "буфер" будет ждать строку + \r Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 20 мая, 2019 Опубликовано 20 мая, 2019 · Жалоба 1 hour ago, k155la3 said: Tools->Options, TerminalIO, Keyboard( Buffer/Direct ) Попробуйте. Может директ скидывает в поток каждый байт, а "буфер" будет ждать строку + \r код останавливается и ждет ввода и в Direct и в Buffered. а я хочу чтоб он бежал. пришел чар - положил в буфер и дальше бежит. эмуляция прерывания как в UART. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 20 мая, 2019 Опубликовано 20 мая, 2019 · Жалоба на PC для консольного "прозрачного" ввода используется kbhit() - наличие в буфере введенного символа. Если да - читаем getch(); Посмотрите в IAR исходник getchar.c ( да и read.c write.c termio.s43 ). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 20 мая, 2019 Опубликовано 20 мая, 2019 · Жалоба 1 hour ago, k155la3 said: на PC для консольного "прозрачного" ввода используется kbhit() - наличие в буфере введенного символа. Если да - читаем getch(); Посмотрите в IAR исходник getchar.c ( да и read.c write.c termio.s43 ). странно. в исходниках чтение не блокирующее. kbhit() нет в IAR, это как раз то что надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 44 20 мая, 2019 Опубликовано 20 мая, 2019 · Жалоба в getchar.c зовётся _low_level_get() который и блокирует, ищите его исходники, смотрите из какого буфера он берет данные и отдельно проверяйте его на наличие данных перед тем как звать getchar. вот и будет вам kbhit(). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 20 мая, 2019 Опубликовано 20 мая, 2019 · Жалоба 2 hours ago, jenya7 said: странно. в исходниках чтение не блокирующее. kbhit() нет в IAR, это как раз то что надо. Там в getchar() поминается что-то касаемо редактирования (в шапке) и сама ф-я содержит цикл. Проверьте что блокировка не на этом цикле. в вызове _low_level_get() - проверьте (через disasm) что возвращается именно байт. Если слово - то (могобыть) в старшем байте может быть флаг "поток пуст" и работа без блокировки. Я прототипа ф-ии не нашел, какой формат возврата. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться