Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2013, 16:06   #1
qZED
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 26
По умолчанию Алгоритмом для опроса GSM модема

Здравствуйте. Помогите пожалуйста с алгоритмом опроса GSM модемов.
Вот какая суть: научился принимать смс и звонки - для одного модема. Хотелось бы сейчас понять как можно реализовать работу с несколькими модемами.
Думаю как то так:
Создать несколько потоков(по числу модемов).
ОбъектМодем1: Проверить СМС. Проверить входящий голосовой звонок.
ОбъектМодем2: Проверить СМС. Проверить входящий голосовой звонок.
Может у кого есть идеи?
qZED вне форума Ответить с цитированием
Старый 03.05.2013, 16:29   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...собственно, а чего вы еще хотите? Вы сами выдали вариант - в потоках. Вот и приступайте, делаете буфер для своих AT команд и последовательно перебираете запросы с ожиданием ответа, дальше парсите (но это у вас уже все сделано, сами знаете).
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 03.05.2013, 16:35   #3
qZED
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 26
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
...собственно, а чего вы еще хотите? Вы сами выдали вариант - в потоках. Вот и приступайте, делаете буфер для своих AT команд и последовательно перебираете запросы с ожиданием ответа, дальше парсите (но это у вас уже все сделано, сами знаете).
Здравствуйте. Спасибо Вам за ваши статьи. Я как раз по ваше коду и разбирался с СМС.

Дак вот думаю, мне нужен массив COM портов + чтобы они опрашивались в разных потоках - наверное как то так. И возникает вопрос: пришла команда RING - следовательно поток где опрашивались СМС - приостановить, а новый поток который будет работать с голосом - запустить...

Последний раз редактировалось qZED; 03.05.2013 в 16:43.
qZED вне форума Ответить с цитированием
Старый 03.05.2013, 17:07   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...именно так.

1- создаете столько потоков, сколько обнаружите модемов. Обнаружить можно перебором портов через реестр или соответствующей ветки через SetupAPI, пример кстати есть в блоге программистов. Что это дает? Это дает универсальность вашей программе, которая динамически сама будет узнавать сколько модемов поддерживают ее (а проверить это можно опять же AT-командами).
2- в каждом потоке читаете буфер заданного COM-порта и по наличию данных делаете соответствующую реакцию. Если это RING, то посылаете AT-команду для идентификации номера звонящего, если это входящая SMS, то читаете ее и выводите туда - куда вам потребуется (то ли визуально в некую пользовательскую таблицу, то ли невизуально сохраняете ее в файл).

Думаю, что запускать новый поток смысла нет, ведь если вы приостановили некий поток для совершения определенных действий, то пока они не завершатся, скажем проиграть речевое сообщение, поток будет ждать. После проигрывания сообщения, поток запускаем заново.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 03.05.2013 в 17:09.
raxp вне форума Ответить с цитированием
Старый 03.05.2013, 18:40   #5
qZED
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 26
По умолчанию

А как правильно переопределить метод?
Код:
TComPortActions = class
  public
    class procedure ComPortRxChar(Sender: TObject; Count: Integer);
  end;

class procedure TComPortActions.ComPortRxChar(Sender: TObject; Count: Integer);
begin
    // Читаем данные
end;

Comport[I].OnRxChar := TComPortActions.ComPortRxChar;
Так правильно будет?
qZED вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
GSM модуль для МК из Nokia N73 iukash Компьютерное железо 21 17.10.2016 20:45
перехват обращения к СОМ-порту и инициализация GSM модема Biker_reg67 C/C++ Сетевое программирование 9 18.12.2012 08:54
Ищу компоненту ActiveX для отправки SMS с GSM-модема Вадим Мошев Свободное общение 9 17.08.2011 14:37
Компоненты для GSM Traffic и SMS mlab Компоненты Delphi 0 06.01.2008 13:39