как правильно читать данные с ком-порта
- открываю порт:
fd = open(dev, O_RDWR | O_NOCTTY | O_NONBLOCK);
-ставлю флаги:
tcgetattr(fd, &options);
options.c_iflag &= ~(IGNBRK | IGNCR | INLCR | ICRNL | IUCLC | IXANY | IXON | IXOFF | INPCK | ISTRIP);
options.c_iflag |= BRKINT | IGNPAR;
options.c_oflag &= ~OPOST;
options.c_lflag = ~(ICANON | ISIG | ECHO | ECHONL | ECHOE | ECHOK);
options.c_cflag |= CS8 | CREAD | HUPCL | CRTSCTS;
options.c_cc[VMIN] = 0;
options.c_cc[VTIME] = 10;
cfsetospeed(&options, B38400);
cfsetispeed(&options, B38400);
tcsetattr(fd, TCSANOW, &options);
- чтение и запись:
int GetBlock (char *block, int len) {
int i;
i = read (fd, block, len);
return i;
}
void PutBlock (char *block) {
int len;
len = strlen (block);
write (fd, block, len);
}
- теперь если пытаюсь записать комманду "AT\r", то из порта считываю "AT\rOK", за тем если например запишу в порт "ATDT11111", то из порта уже считывается что то похожеена это:
AT
OK
ATDP11111
CONECT
==================================
хотелось бы читать только ответ или хотябы ответ с полседней командой. Может можно как нибудь сбрасывать буфер модема или как то еще побороть это?