Russian Qt Forum
Сентябрь 24, 2024, 16:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не могу получить ответ от модема...  (Прочитано 4132 раз)
zoro86
Гость
« : Апрель 23, 2010, 08:06 »

Есть модем Siemens MC35i... есть задача посылать на COM порт через который подключен модем AT команды...
Так вот я использую класс QSerialDevice 0.2.0 .. порт открывается с параметрами:
Код:
int MC35Acceptor::MC35_open()
{
    if (MyDevice->open(QIODevice::ReadWrite | QIODevice::Unbuffered)) {

        if (!MyDevice->setBaudRate(AbstractSerial::BaudRate19200)) {
            if(Debuger) qDebug() << "Set baud rate " <<  AbstractSerial::BaudRate19200 << " error.";
            return 0;
        };
        MyDevice->setCharIntervalTimeout(10);
        MyDevice->setDataBits(AbstractSerial::DataBits8);
        if(Debuger) qDebug() << "Serial device " << MyDevice->deviceName() << " open in " << MyDevice->openMode();

        if(Debuger) qDebug() << "= Defaults parameters =";
        if(Debuger) qDebug() << "Device name            : " << MyDevice->deviceName();
        if(Debuger) qDebug() << "Baud rate              : " << MyDevice->baudRate();
        if(Debuger) qDebug() << "Data bits              : " << MyDevice->dataBits();
        if(Debuger) qDebug() << "Parity                 : " << MyDevice->parity();
        if(Debuger) qDebug() << "Stop bits              : " << MyDevice->stopBits();
        if(Debuger) qDebug() << "Flow                   : " << MyDevice->flowControl();
        if(Debuger) qDebug() << "Char timeout, msec     : " << MyDevice->charIntervalTimeout();
        open_com = true;
    }
    else {
        open_com = false;
        if(Debuger) qDebug() << "Error opened serial device " << MyDevice->deviceName();
    }
}

скорость бит 19200, бит данных 8, четность нет, стоповые биты 1...

с такими же параметрами в Гипер Терминале он нормально отвечает на запросы...
 например на запрос
Код:
AT+CSQ
отвечает
Код:
 +CSQ: 11,99

OK

Тот же класс я использовал для написания протоков для принтеров и купюроприемника... вроде нормально работает... а вот с модемом не в понятии что посоветуете???
Записан
Friar
Гость
« Ответ #1 : Апрель 23, 2010, 08:25 »

Я смог к симену подключиться только на 115200.
Записан
zoro86
Гость
« Ответ #2 : Апрель 23, 2010, 09:11 »

Цитировать
Я смог к симену подключиться только на 115200.

Я это уже попробовал и все остальные скорости тоже... не подскажите на примере как вы реализовывали общение..?
Записан
Friar
Гость
« Ответ #3 : Апрель 23, 2010, 09:55 »

Код:
    wwserialEnum::PortSetting ps;
    ps.baudRate=AbstractSerial::BaudRate115200;
    ps.dataBits=AbstractSerial::DataBits8;
    ps.flowControl=AbstractSerial::FlowControlHardware;
    ps.parity=AbstractSerial::ParityNone;
ps.stopBits=AbstractSerial::StopBits1;

modem->openSerialPort(comPort,ps)

А из св-в модема, модем опрашивается?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #4 : Апрель 23, 2010, 09:56 »

zoro86,

Цитировать
например на запрос
Код:

AT+CSQ

отвечает
Код:

 +CSQ: 11,99

OK


как формировали запрос? как получали ответ? код в студию
Записан

ArchLinux x86_64 / Win10 64 bit
zoro86
Гость
« Ответ #5 : Апрель 23, 2010, 10:12 »

Я это вообще то через стандартный Гипер терминал отправлял.. это для примера что сам модем работает нормально,,,
 но почему через мою прогу  ответа от него ни ни.. Непонимающий
Записан
zoro86
Гость
« Ответ #6 : Апрель 23, 2010, 10:16 »

Код:
wwserialEnum::PortSetting ps;
    ps.baudRate=AbstractSerial::BaudRate115200;
    ps.dataBits=AbstractSerial::DataBits8;
    ps.flowControl=AbstractSerial::FlowControlHardware;
    ps.parity=AbstractSerial::ParityNone;
ps.stopBits=AbstractSerial::StopBits1;

modem->openSerialPort(comPort,ps)

Это вы какой класс используете?? Friar
Записан
Friar
Гость
« Ответ #7 : Апрель 23, 2010, 10:53 »

Это обертка над QSerialDevice 0.2, сделано для того, чтобы можно было сменить QSerialDevice на любой другой класс более менее безболезненно.
Записан
zoro86
Гость
« Ответ #8 : Апрель 23, 2010, 11:02 »

Блин я тут FlowControlHardware параметр не поставил... ща вроде ответил ERROR дело пошло... Смеющийся всем спасибо..
Записан
Friar
Гость
« Ответ #9 : Апрель 23, 2010, 11:13 »

не за что! а еррор, видимо, потому что конец строки забыли добавить!
« Последнее редактирование: Апрель 23, 2010, 11:15 от Friar » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.107 секунд. Запросов: 23.