Есть место оператора. На нем самописаная программка на Builderc++.
Идея. Контроллер посылает на комп по COM порту, каждые N секунд, определенные данные. На контроллере также организовал БД – утром оператор скачивает все то что происходило ночью.
Что получается: получаю на верхний уровень, то что приходит с контроллера каждый N секунд. Посылаю запрос – считываю архив.Вроде бы все Ок. Но это при прямом подключении через COM порт.
Что не получается: Естественно нужно все это делать удаленно. Пытаюсь делать это через модемы (Модемы GSMenforы и simensы). Соединяюсь. Все нормально. И получаю то что отсылает контроллер каждые N секунд. Не могу скачать архив. Судя по всему не доходит команда до контроллера.
Самое главное что опыта работы с модемами, портамии т.п. у меня увы нет. Уже долгое время я пытаюсь понять в чем проблема – но очевидно пока не дано.
Что делаю: ну из того что прочитал и наверное не так делаю. Ну для того чтобы что-то передать с диспетчера – нужно RTSустановить в логическую единицу. Потом следить за CTS– модем готов принимать или нет… Ну в чем, так сказать суть: что я уже не делал– никак не получается. Ну как подключаю напрямую через кабель – все ок.
Если есть время, помогите мне в этом вопросе. Буду рад любой помощи.
В идеале - подробно (для чайника) описать шаги. Что нужно установить, что сбросить, когда... и т.п.
Спасибо!!!!
P.S: Не судите строго....
А в кабеле сигналы квитирования есть? Для начала проверить используются ли сигналы квитирования вообще. Вы то как писали Сишную программу на билдере?
При экспериментах ни один чайник не пострадал
-----------
Плохому системному интегратору всегда OPC сервер мешает.
______________
Пишу на C++ за еду
Как вариант может быть так. Вы сигналы квитирования не используете (и правильно делаете). А модемчику вашему они нужны (это они зря так сделали) и получается , что модем не переключает направление прием/передача. Это просто предположение. Смотреть лучше всего какой нибудь программкой - терминалом, которая позволяет линии квитирования переключать. Или даже на линии квититрования тумблер повесить.
При экспериментах ни один чайник не пострадал
-----------
Плохому системному интегратору всегда OPC сервер мешает.
______________
Пишу на C++ за еду
Спасибо Valdза ответ.
Как я понимаю квитирование (возможно ошибочно) то использую.
При получении пакета, проверяется контрольная сумма. Если все хорошо - идет запрос на следующий пакет. Нет - повтор ошибочного.
Немного расскажу как я делаю.
Перед посылкой команду на считывания: 1. RTS ставлю в логическую единицу. DTR - в ноль.
2. Считываю CTS. Посылаю команду.
3. RTS и DTR наоборот.
Со стороны контроллера - аналогично.
Ха. А вот это все через модем то проходит? А зачем вообще квитирование используется? По моему оно не нужно вообще. По настоящему использование линий квитирования действительно необходимо в процессорнх платах, когда RTS-ом переключаем направление передачи во встроенном в плату драйвере RS485. Во всех остальных случаях на тех скоростях, что в приборчиках используются, непонятные попытки использовать квитирование приводят к страшной головной боли. Ну в некоторых случаях надо поуправлять модемом, тут уже такой случай рассматривался неск месяцев назад. Вам эти сигналы для управления модемом нужны?
При экспериментах ни один чайник не пострадал
-----------
Плохому системному интегратору всегда OPC сервер мешает.
______________
Пишу на C++ за еду
Просто когда связываются с управлением потоком надо очень внимательно заполнить структуру DCB и четко представлять как это будет работать. Возможен вариант что управление потоком у вас включено, а вы еще и ручками пытаетесь линии дергать и опрашивать. С другой стороны : если черех 0 модемный кабель с полным комплектом проводов работает, значит правильно написали или просто повезло. Но модем вовсе не обязан ваши сигналы квитирования через себя передавать; даже так: он их и не собирался передавать. Теоретически он их может как-то сам формировать и обрабатывать , а может и не обрабатывать. Надо разобраться, что надо вашему модему. Если ему квитация не нужна - не используйте ее. Если при этом не в состоянии внести изменения в программу на компе и в устройстве - просто затяните им CTS электрически на разъеме так, чтобы не тормозилась передача.
При экспериментах ни один чайник не пострадал
-----------
Плохому системному интегратору всегда OPC сервер мешает.
______________
Пишу на C++ за еду
Сигналы для управления модемом
убраны. Наверное, вся проблема в 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; // ?
Спасибо.
Просто дернул из работающей программы:
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++ за еду
Спасибо Vald.
Нет. Никак... (((
Скачал некую программку - CommTest. Точно такая картина.
Не переключается направление прием/передача.
Доброе время суток. Есть задача передача данных с adam-5510 на комп через gsm модем. проблема в том что никогда подобное не делал. могли бы скинуть или указать где можно взять образец программы для реализации данного задания.? заранее благодарен.
Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме