Иар 4.11 и STDIN & STDOUT грабли... + Не мудрствуя лукаво STDIN и STDOUT перенаправил в UART.
Кстати не в аппнотах ни в доках на иар, ни где нет описания этого механизма, впрочем..
функция getchar() и putchar() юзаемая и в printf/scanf в результате
попадает на __read () __write(), благо описание нашёл по поиску ...
переписал на хендлы STDOUT и STDERR вывод в уарт , здесь всё запиписечно и функционирует... однако с __read() полный пЭ.
во первых
вот такая конструкция
int __read(int h, unsigned char *buf, int size )
{
char chsize = 0;
unsigned char Byte;
if ( h == stdin ){
// printf ("__read(,,%d)",size);
// разкоментировав строку мы получаем байт с уарта с задержкой на 1
// тоесть 1 передаём 'Q' результат getсhar () = 0х00
// 2 передаём 'W' результат getсhar () = 'Q'
// убрав printf Ни чего не считываем далее там ниже...
for (;;--size) {
while(!readUART(&Byte)); /// await
*buffer++ = Byte;
chsize++;
}
return chsize;
} else
return ERR;
}
main () {
....
char _b;
while (1){
_b = getchar(); // здесь трабл , gets (char * ) тоже ни когда не возвращается... по \n
putchar(_b);
}
....
}
К сожалению жтаг не прикручивал , исходников всей цепочки getchar -> getc(FILE*, BYTE) ->... хз -> __read() нет....
что делать ?
где граблю искать ?
Сенькс...
ЗЫ не конечно отказаться от getchar() putchar () можно, но как же с редиректом файлового чтения / записи быть, функция должна работатть
2. чтение из уарта проверено - пропусков / ошибок нет....
-
- Читаем ARM IAR C/C++ Compiler reference guide на странице 56 - implementing low-level character guide. vmp(84 знак., 26.08.2005 16:41, )