Зоздал девайс на микроконтроллере со связью по UART
через minicom все работает. Однако мне надо написать программу на си для работы с девайсом.
После того как я пообщался с девайсом через minicom моя программа тоже нормально общается с девайсом.
Без предварительнго общения с девайсом по minicom моя программа отказывается общаться с девайсом.
вот прога:
#include <stdio.h> /* Стандартные объявления ввода/вывода */
#include <string.h> /* Объявления строковых функций */
#include <unistd.h> /* Объявления стандартных функций UNIX */
#include <fcntl.h> /* Объявления управления файлами */
#include <errno.h> /* Объявления кодов ошибок */
#include <termios.h> /* Объявления управления POSIX-терминалом */
int com;
char s[2];
int open_port(void){
int f;
f = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);
if (f == -1) perror("open_port: Unable to open /dev/ttyUSB0 - ");
else
{
fcntl( f, F_SETFL, 0 );//FNDELAY
struct termios options;
tcgetattr(f, &options);
cfsetispeed(&options, B4800);
cfsetospeed(&options, B4800);
options.c_cflag |= (CLOCAL | CREAD);
tcsetattr(f, TCSAFLUSH, &options);
options.c_cflag &=~CSIZE;
options.c_cflag |= CS8;
options.c_cflag &=~PARENB;
options.c_cflag &=~CSTOPB;
options.c_cflag &=~CSIZE;
options.c_cflag |= CS8;
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
//options.c_lflag |= (ICANON | ECHO | ECHOE);
}
return (f);
}
int main(void){
com = open_port();
while(1)
{
if( read( com, &s, 1 ) )
{
if(s[0] == 'a'){ write( com, "a", 1 ); printf("write\n\r"); }
if(s[0] == 'b'){ printf("ok\n\r"); break;}
}
}
getchar();
return 0;
}
что делать?
Просьба ознакомиться с правилами форума.Правила форума
1. Основные положения
1.4. Листинги и содержимое текстовых файлов следует добавлять в сообщение с помощью тега [spоiler]...[/spоiler], либо прикреплять к сообщению в виде отдельного файла.
Подправил.-- it0r