Код: Выделить всё
char s[]="RING";
if(!strcmp(rx_buffer,s)) putsf("ATA\r");Код: Выделить всё
char s[]="RING";
if(!strcmp(rx_buffer,s)) putsf("ATA\r");Код: Выделить всё
memset(rx_buffer,0,100);Работать напрямую с rx_buffer - не следует, ведь он хранит не строку, а данные циклического буфера - начало строки в нем не по адресу rx_buffer[0], а где угодно внутри.dm211 писал(а):http://www.hardlock.org.ua/soft/cvavr/index.html
Мне бы кто ответил..
Код: Выделить всё
char s[]="RING";
char m[5];
// Прерывание по приему символа в регистр UDR
interrupt [USART_RXC] void usart_rx_isr(void)
{
......
m[i]=getchar();
i++; if(i==5)i=0;
if(!strcmp(m,s)){putsf("ATA\r");}
}Код: Выделить всё
if(!strcmp(m,s)){putsf("ATA\r");m[0]='0';} // также m[0]='\0'; , m[0]=' ';Код: Выделить всё
typedef struct{
char flag; // признак "активности"
char cmd[]; // строка-команда
}t_searchКод: Выделить всё
t_search array[3] = {
{1,"RE"}, {1,"RU"}, {1,"ST"} // для команд RESET, RUN и STOP хватит анализа первых 2 символов
};
Код: Выделить всё
array[i].flag = array[i].str[1] == ch;Код: Выделить всё
array[i].flag = array[i].flag && (array[i].str[2] == ch);Yellow Tiger писал(а):Прерывание помещает приходящие символы в буфер, getch() - достает их оттуда, а gets() - вызывает getch() (помещая результат в строку) пока не получит из неё символ конца строки. И всех делов.