Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Непонятки при работе с com портом 
V
    Опции темы
Bugoga
  Дата 5.9.2007, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 12.7.2007

Репутация: нет
Всего: нет



Есть программка:

Код

#include <stdio.h>
#include <termios.h>
#include <errno.h>
#include <fcntl.h>
#include <strings.h>
#include <string.h>

#define BAUDRATE B19200

int main (void) {
    int fd;
    struct termios oldtio, newtio;
    char buffer[255];
    char *bufptr;
    int n;
    int nbytes;
    int tries;

    fd = open ("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);
    if (fd < 0) {
        perror ("open_port: Unable to open /dev/ttyS0 - ");
        exit (-1);
    }
    else
        fcntl (fd, F_SETFL, 0);

    tcgetattr (fd, &oldtio);

    bzero (&newtio, sizeof (newtio));

    cfsetospeed (&newtio, B19200);
    cfsetispeed (&newtio, B19200);
        
    newtio.c_cflag |= (CRTSCTS | CLOCAL | CREAD);
    newtio.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
    newtio.c_oflag &= ~OPOST;
    newtio.c_cflag &= ~PARENB;
    newtio.c_cflag &= ~CSTOPB;
    newtio.c_cflag &= ~CSIZE;
    newtio.c_cflag |= CS8;
    newtio.c_iflag &= ~(IXON | IXOFF | IXANY);
    newtio.c_cc[VMIN] = 0;
    newtio.c_cc[VTIME] = 10;

    tcsetattr (fd, TCSANOW, &newtio);

    for (tries = 0; tries < 3; tries++) {
        if (write (fd, "AT\r", 3) < 3) {
            perror ("write: ");
                continue;
        }

        bufptr = buffer;
        while ((nbytes = read (fd, bufptr, buffer + sizeof (buffer) - bufptr - 1)) > 0) {
            bufptr += nbytes;
            if (bufptr[-1] == '\n' || bufptr[-1] == '\r')
                break;
        }

        *bufptr = '\0';
        
        printf ("%s", buffer);
        if (strncmp (buffer, "OK", 2) == 0)
            printf ("Modem OK\n");
        else
            printf ("Modem not OK\n");
    }
}


Она пишет в модем команду AT и читает вывод.
В buffer, если все пучком, должно положится "OK" и вывестись строка
 "Modem OK". Но почемуто в бефереоказавается еще и слово AT.
Содержимое буфера: AT\r\nOK\r\n.
Почему так происходит и как исправить?
PM MAIL   Вверх
maxim1000
Дата 5.9.2007, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



может, у модема эхо включено (когда он повторяет на выходе всё, что приходит к нему на вход)?


--------------------
qqq
PM WWW   Вверх
Bugoga
Дата 5.9.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 12.7.2007

Репутация: нет
Всего: нет



Флаг ECHO разрешает эхо вводимых символов, но я же его снимаю. Если это не то, ток как можно отключить эхо?
PM MAIL   Вверх
maxim1000
Дата 5.9.2007, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



обычно, ATE0 выключает, ATE1 включает


--------------------
qqq
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0405 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.