Я работаю над роботом, который должен управлять с помощью беспроводной последовательной связи. Робот работает на микроконтроллере (путем записи файла .hex). Я хочу управлять им с помощью моего Linux (Ubuntu) ПК. Я новичок в программировании последовательного порта. Я могу отправить данные, но не могу прочитать данные.
несколько фрагментов кода, которые выполняются на микроконтроллере:
функция отправки данных
void TxData(unsigned char tx_data)
{ SBUF = tx_data; //Transmit data that is passed to this function
while(TI == 0); //wait while data is being transmitted
}
Я отправляю данные через массив символов data_array [i]
for (i=4;i<=6;i++)
{
TxData(data_array[i]);
RI = 0; //Clear receive interrupt. Must be cleared by the user.
TI = 0; //Clear transmit interrupt. Must be cleared by the user.
}
Теперь фрагмент кода из программы на C, работающей в Linux ...
> while (flag==0) {
> int res = read(fd,buf,255);
> buf[res]=0; /* set end of string, so we can printf */
> printf(":%s:%d\n", buf, res);
> if (buf[0]=='\0') flag=1;
}
Распечатывает значение res = 0 .
На самом деле я хочу прочитать данные по буквам , чтобы выполнить вычисления и принять дальнейшее решение. Есть ли другой способ сделать это? Пожалуйста, помогите, потому что я не могу приступить к проекту.
Примечание. Если кто-то может предложить хороший учебный материал (код) для программирования последовательных портов в Linux, это поможет мне.
Спасибо ....