Просмотр полной версии : SMS-сообщения на модеме
Есть программа для работы с модемом ПМ01. Уже реализована отправка сообщений по списку в определенных ситуациях, а также прием сообщений. прием собщений крутится пока не придет сообщение на модем, то есть не появится строка +CMTI: "SM". Дальше получаю номер ячейки, счтываню сообщение. Все работает нормально, пока есть связь с модемом. Однако, если исчезает связь ПЛК и модема, а в это время приходят сообщения на модем, то когда востанавливается связь ПЛК и модема, то сигнала об SMS нет, то есть не получаю строку +CMTI: "SM". Каким образом узнать что есть SMS на модеме?
/*есть мысль просто прочитываить все ячейки и если они не пустые (а значит там есть непрочитанное СМС, так как прочитанные все удаляются AT+CMGD=), то считывать оттуда*/
Все спасает команда AT+CMGL. Считывает все непрочитанные сообщения на модеме.
Решение вроде верное. Если есть еще другие варианты, прошу сказать.
Прошу совета. Во вложении программа для работы с модемом ПМ01 и ПЛК110. Все работает пока, но сейчас встал вопрос как организовать дозвон до модема. То есть если мы сейчас в режиме ожидания, то дозвон до модема происходит и данные передаются. Если идет передача данных, то все остальные дождутся своей очереди и выполняться. Проблема возникает если на модем звонят во время например посылки СМС сообщений. Посылка прекращается и начинается передача данных. Хочется, чтобы вначале закончилась рассылка, а затем уже был ответ и передача данных.
В настройках конфигуратора ПЛК для модема есть такая строка как block incoming calls. yes - ответ на звонки, no - сам набирает с периодом. Но мне надо, чтобы он ждал звонка и отвечал, но отвечал лишь при условии, что сейчас он ничего не делает (не передает смс сообщения). То есть по сути я должен сам непосредственно им управлять (посылать команды ATA +++ ATH). Но по этому параметру bic он работает либо на ожидание, либо на самостоятельный звонок. Как можно решить проблему? Или можно только вручную все сделать, то есть самому еще дописать программу с использованием как раз ATA +++ ATH?
lara197a
30.03.2012, 12:05
ПОСТАВЬТЕ ВТОРОЙ МОДЕМ.
По одному опрашивайте, по другому посылайте тревожные сообщения.
Линия всегда будет свободна.
ПОСТАВЬТЕ ВТОРОЙ МОДЕМ.
По одному опрашивайте, по другому посылайте тревожные сообщения.
Линия всегда будет свободна.
Нет технической возможности так сделать. Поэтому приходиться программно решать вопросы.
Еще один вопрос. Модуль работает в текстовом режиме (пока). Все нормально в основное время, но иногда с порта при приеме смс вместо текста начинает приходить кодировка (последовательность цифр). Естественно приходящие таким образом сообщения игнорируются. Спасает лишь reset модема (да и то не всегда с первой попытки), после чего опять начинает идти текст. Хотелось бы узнать причину данного явления?
Евгений Сергеевич
03.04.2012, 18:29
Это происходит из-за того что СМС приходя не в текстовом формате а в цифровом PDU, так все СМС с русским текстом придут именно в этом формате, например реклама от оператора.
Программа для ПЛК110. Вроде работает (правда неоптимизирована). Отправляет, принимает, scada. Использована UNM.
Теперь хочется что-то подобное для ПЛК73/63. Я так понимаю, что вместо UNM использую стандартную syslibcom. Сам открыл, настроил. Отправил, принял в/из порт. comread, comwrite. Для scada жду ринг и беру трубку. Потом ложу ее. Вот здесь и загвоздка. Как понять когда ложить? Для 110 все было автоматом, а здесь как? Пока тупо жду 1минуту и ложу трубку, но ведь это не совсем верно.
Вот первый черновой вариант для 73/63. не проверен, не рабочий. Ход мысли верный или нет?
63/73. Вот такой вариант пока.
Хотелось бы немного прояснить ситуацию. То что на COM0 кодесис ругается я уже привык. Небольшой вопрос по SysComSetSettings. Выходная переменная булева. И если дать номер порта com0, то оттуда приходит invalid handle. Дальше есть вот такая строка:
IF res THEN
port_opened:=TRUE;
END_IF
По идее должно быть так. Ведь при успехе возвращается true (по документации), но true не вернулось. Можно сделать так:
IF NOT res THEN
port_opened:=TRUE;
END_IF
Тогда вроде порт открыт, но не совсем по документации. Вроде считаем, что он открылся независимо от реального возвращаемого значения. Как то нелогично получилось. Где-то здесь что-то я упускаю.
P.S. SFC нормально не мониторятся в CDS в данной программе у меня. CDS просто умирает на SFC в данной программе при работе с ПЛК.
Василий Кашуба
13.07.2012, 10:20
zaur, а какие библиотеки использовались для написания программы к ПЛК110?
Для 110 использовал библиотеку UNM. Использовал также функции и функц. блоки написанные или кем-то из пользователей или даже овеном самим - это например как раз decodebuf, exstractbuf, септеты, октеты. Где-то на форуме есть готовая программа, эти функции и фб взяты оттуда. Вообще эти все фб и ф-ции взятые нужны лишь для PDU. Если работать в текстовом режиме, то можно и без них обойтись спокойно.
Василий Кашуба
13.07.2012, 16:18
Просто при компиляции Кодесис ругается на decodebuf, а к какой библиотеке этот тип данных относится не помню :(
Тема с модемом и ПЛК63/73 была заброшена надолго, но вот опять сел за нее. Вот кусок программы для отправки в PDU режиме. До отправки все идет хорошо, но отправки нет. В pdu вроде конвертируется верно (брал эталонное сообщение, потом смотрел что пишу, совпадение было один в один), команда cmgs тоже вроде верная (брал эталонное сообщение, его длину знал заранее, проверял что пишу, совпадает), но отправки нет, ошибка. Все-таки где-то pdu конвертер не правильно себя ведет или проблема в другом. Кто может посмотрите и подскажите. Заранее спасибо.
P.S. Модем отвечает просто error, без каких-либо дальнейших идентификаторов ошибки.
Причина проблемы: строка формируется верно, но реально в порт почему-то посылается не вся строка, вот здесь и возникает ошибка формата. то есть часть строки отрезается при отправке по syscomwrite.
Проблемы разрешены. Вот он блок для отправки с 63/73. Тестовый вариант, вроде более менее стабильный.
Проблема была в "перестраховке", непонятно зачем слишком часто освобождал устройство, хотя надо это делать лишь один раз. Вроде теперь работает стабильно.
AEV12345
15.09.2014, 07:57
Доброе утро. А есть ли пример такой программы в свободном доступе? Больше всего интересует "Уже реализована отправка сообщений по списку в определенных ситуациях"
mixasik1984
29.09.2014, 08:51
здравствуйте подскажите как вы организовали "отправка сообщений по списку в определенных ситуациях"
у меня плк 100 +пм передача по сигналу первого входа нескольким абонентом происходит на ура , пробую по сигналу второго входа в место трех обонентов приходит 3 sms на один номер , использую библиотеку SmsOwenLib. и блоки Блок «OpenPort» захвата/освобождения интерфейса , Блок «FB_SMS_CFG» конфигурирования модема, Блок «FB_SMS_SR» отправки/ получения СМС, Блок «FB_SMS_SL» вспомогательный для отправки сообщения группе абонентов.
интересует вопрос по срабатыванию разных входов и отправки сообщений с разной текстовкой
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot