Передача данных через GSM модем |
Ответить |
Автор | |
Новичок Присоединился: 03 Сентябрь 2010 Online Status: Offline Публикации: 4 |
Опубликовано: 10 Сентябрь 2010 15:47 |
Доброго дня суток. Не смогли бы вы мне помочь в таком деле. Есть контроллер. Так крутится программка на С. Есть место оператора. На нем самописаная программка на Builder c++. Идея. Контроллер посылает на комп по COM порту, каждые N секунд, определенные данные. На контроллере также организовал БД – утром оператор скачивает все то что происходило ночью. Что получается: получаю на верхний уровень, то что приходит с контроллера каждый N секунд. Посылаю запрос – считываю архив. Вроде бы все Ок. Но это при прямом подключении через COM порт. Что не получается: Естественно нужно все это делать удаленно. Пытаюсь делать это через модемы (Модемы GSM enforы и simensы). Соединяюсь. Все нормально. И получаю то что отсылает контроллер каждые N секунд. Не могу скачать архив. Судя по всему не доходит команда до контроллера. Самое главное что опыта работы с модемами, портами и т.п. у меня увы нет. Уже долгое время я пытаюсь понять в чем проблема – но очевидно пока не дано. Что делаю: ну из того что прочитал и наверное не так делаю. Ну для того чтобы что-то передать с диспетчера – нужно RTS установить в логическую единицу. Потом следить за CTS – модем готов принимать или нет… Ну в чем, так сказать суть: что я уже не делал – никак не получается. Ну как подключаю напрямую через кабель – все ок. Если есть время, помогите мне в этом вопросе. Буду рад любой помощи. В идеале - подробно (для чайника) описать шаги. Что нужно установить, что сбросить, когда... и т.п. Спасибо!!!! P.S: Не судите строго.... |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 02 Октябрь 2007 Категория: Russian Federation Online Status: Offline Публикации: 427 |
|
А в кабеле сигналы квитирования есть? Для начала проверить используются ли сигналы квитирования вообще. Вы то как писали Сишную программу на билдере?
|
|
При экспериментах ни один чайник не пострадал
----------- Плохому системному интегратору всегда OPC сервер мешает. ______________ Пишу на C++ за еду |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 02 Октябрь 2007 Категория: Russian Federation Online Status: Offline Публикации: 427 |
|
Как вариант может быть так. Вы сигналы квитирования не используете (и правильно делаете). А модемчику вашему они нужны (это они зря так сделали) и получается , что модем не переключает направление прием/передача. Это просто предположение. Смотреть лучше всего какой нибудь программкой - терминалом, которая позволяет линии квитирования переключать. Или даже на линии квититрования тумблер повесить.
|
|
При экспериментах ни один чайник не пострадал
----------- Плохому системному интегратору всегда OPC сервер мешает. ______________ Пишу на C++ за еду |
|
Новичок Присоединился: 03 Сентябрь 2010 Online Status: Offline Публикации: 4 |
|
Спасибо Vald за ответ.
Как я понимаю квитирование (возможно ошибочно) то использую. При получении пакета, проверяется контрольная сумма. Если все хорошо - идет запрос на следующий пакет. Нет - повтор ошибочного. Немного расскажу как я делаю. Перед посылкой команду на считывания: 1. RTS ставлю в логическую единицу. DTR - в ноль. 2. Считываю CTS. Посылаю команду. 3. RTS и DTR наоборот. Со стороны контроллера - аналогично. |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 02 Октябрь 2007 Категория: Russian Federation Online Status: Offline Публикации: 427 |
|
Ха. А вот это все через модем то проходит? А зачем вообще квитирование используется? По моему оно не нужно вообще. По настоящему использование линий квитирования действительно необходимо в процессорнх платах, когда RTS-ом переключаем направление передачи во встроенном в плату драйвере RS485. Во всех остальных случаях на тех скоростях, что в приборчиках используются, непонятные попытки использовать квитирование приводят к страшной головной боли. Ну в некоторых случаях надо поуправлять модемом, тут уже такой случай рассматривался неск месяцев назад. Вам эти сигналы для управления модемом нужны?
|
|
При экспериментах ни один чайник не пострадал
----------- Плохому системному интегратору всегда OPC сервер мешает. ______________ Пишу на C++ за еду |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 02 Октябрь 2007 Категория: Russian Federation Online Status: Offline Публикации: 427 |
|
Просто когда связываются с управлением потоком надо очень внимательно заполнить структуру DCB и четко представлять как это будет работать. Возможен вариант что управление потоком у вас включено, а вы еще и ручками пытаетесь линии дергать и опрашивать. С другой стороны : если черех 0 модемный кабель с полным комплектом проводов работает, значит правильно написали или просто повезло. Но модем вовсе не обязан ваши сигналы квитирования через себя передавать; даже так: он их и не собирался передавать. Теоретически он их может как-то сам формировать и обрабатывать , а может и не обрабатывать. Надо разобраться, что надо вашему модему. Если ему квитация не нужна - не используйте ее. Если при этом не в состоянии внести изменения в программу на компе и в устройстве - просто затяните им CTS электрически на разъеме так, чтобы не тормозилась передача.
|
|
При экспериментах ни один чайник не пострадал
----------- Плохому системному интегратору всегда OPC сервер мешает. ______________ Пишу на C++ за еду |
|
Новичок Присоединился: 03 Сентябрь 2010 Online Status: Offline Публикации: 4 |
|
Сигналы для управления модемом убраны. Наверное, вся проблема в DCB. У меня было только: dcb.ByteSize = 8; dcb.Parity = NOPARITY; dcb.StopBits = ONESTOPBIT; dcb.BaudRate = CBR_9600; Посмотрите, пожалуйста, мою
структуру DCB. Нормально или нет. Что еще добавить, может? dcb.fBinary = true; dcb.fOutxCtsFlow = true; dcb.fOutxDsrFlow = true; dcb.fDtrControl
= DTR_CONTROL_ENABLE; // ? dcb.fDsrSensitivity
= false; // ? dcb.fTXContinueOnXoff
= false; // ? dcb.fNull =
false; dcb.fRtsControl = RTS_CONTROL_TOGGLE; // ? Спасибо. |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 02 Октябрь 2007 Категория: Russian Federation Online Status: Offline Публикации: 427 |
|
Просто дернул из работающей программы:
dcb->fBinary=TRUE;//
dcb->fParity=FALSE;
dcb->Parity=NOPARITY;
dcb->StopBits=ONESTOPBIT; dcb->ByteSize=8; dcb->fAbortOnError=FALSE;//
dcb->fNull=FALSE;// dcb->fOutxCtsFlow=FALSE;//
dcb->fOutxDsrFlow=FALSE;//
dcb->fDtrControl=DTR_CONTROL_DISABLE;//
dcb->fDsrSensitivity=FALSE;//
dcb->fOutX=FALSE;//
dcb->fInX=FALSE;//
dcb->fRtsControl=RTS_CONTROL_DISABLE;//
|
|
При экспериментах ни один чайник не пострадал
----------- Плохому системному интегратору всегда OPC сервер мешает. ______________ Пишу на C++ за еду |
|
Новичок Присоединился: 03 Сентябрь 2010 Online Status: Offline Публикации: 4 |
|
Спасибо Vald. Нет. Никак... ((( Скачал некую программку - CommTest. Точно такая картина. Не переключается направление прием/передача. |
|
Новичок Присоединился: 18 Март 2011 Online Status: Offline Публикации: 1 |
|
Доброе время суток.
Есть задача передача данных с adam-5510 на комп через gsm модем. проблема в том что никогда подобное не делал. могли бы скинуть или указать где можно взять образец программы для реализации данного задания.? заранее благодарен. |
|
Ответить |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |