Платежный сервис Единый кошелек

Автоматический перезапуск GSM модема

Автоматический перезапуск GSM модема


Главная        Инструкции        Драйвера        Скачать        Галлерея        О сайте

 

      С начала 2011 года активно использую на все своих терминалах скрипт, который при каждой загрузке проводит ресет модема и только после запускает платежную программу. Проходит это практически на всех модемах, хотя есть у меня и такие на которых работает примерно через раз. Недавно лег у нас Билайн (выключили за неуплату) несколько часов лежал, пока не проплатили. Из 70 штук, не поднялись только 12 штук. Есть разница: 70 терминалов за день объехать и перегрузить или 12 штук, хотя как по мне, так и эти 12 чтоб поднялись, было б неплохо. Но над этим еще предстоит поработать.

Основной скрипт перезагрузки модема есть практически во всех мануалах к любому модему, просто обычно эти мануалы написаны на инглыше и не каждый вчитывается. Сам по себе скрипт работать должным образом не станет, нужно подготовить почву. Использовать можно под любой платежкой, я запускал эту задачу только под виндовой системой. Под линухом думаю без проблем, только там несколько по иному происходит написание задачи.

Знакомьтесь, собственно сама команда: AT+CFUN=1,1 только в чистом виде толку от нее нет. Ее нужно передать на модем. Для этого используется команда echo и перенаправление на конкретный порт >COM3. Цельно команда выглядит так: echo AT+CFUN=1,1 >COM3

Но если запустить прямо сейчас команду, модем абсолютно никак на нее не отреагирует, и отключение интернет связи и закрытие программы платежки ничего не даст. Методом научного тыка, я допер что наилучший момент для момента ресета, включение терминала. И то чтоб все таки модем на это дело отреагировал, требуется открыть порт, сделать паузу, закрыть порт, сделать ресет. Ну а после я снова открываю порт и запускаю платежную систему. У меня 24Nonstop, с ними проще всего запустить этот процесс. Под открытием порта и его закрытием я имею ввиду - установить соединенить и разъединить. После модем становится внимательнее к посылаемым на него командам.  запуске. Листинг скрипта у меня выглядит вот так:

cmdow @ /DIS
cls
@echo off
title ЗАПУСК ПЛАТЕЖНОГО ТЕРМИНАЛА!
Color 02

regedit /S C:\DOG\scripts\shell.reg

echo.
echo Запуск терминала займет приблизительно минуту, подождите пожалуйста.
echo.

echo.
echo Шаг 1
echo.
rasdial internet >NUL
sleep 5 >NUL

echo.
echo Шаг 2
echo.

rasdial /DISCONNECT >NUL
sleep 5 >NUL

echo.
echo Шаг 3
echo.

echo AT+CFUN=1,1 >COM3
sleep 15 >NUL

echo.
echo Шаг 4
echo.

rasdial internet >NUL
sleep 5 >NUL

echo.
echo Шаг 5 - Запуск 24Nonstop
echo.

:respawn
C: >NUL
cd "C:\PCTerminal\" >NUL
PCTerminal.exe >NUL
goto respawn

Сразу поясню, если просто так вбить нужные команды и запустить скрипт, пока он будет исполнятся, любой прохожий сможет его просто закрыть нажав крестик закрытия окошка. В связи с этим, я использую маленькую программку с огромными возможностями cmdow. Скачайте ее и скопируйте в C:\WINDOWS\system32

cmdow @ /DIS - команда которая делает окошко командного сценария неприкасаемым )). Также можете скачать мой вариант shell в папку C:\DOG\scripts (если конечно пользуете, онный) не пользуете, тогда открываете блокнотом shell.reg и редактируете пути на свое усмотрение, хотя проще создать на диске C: папку DOG а в ней scripts и в нее выложить shell.reg. После того как скачаете и скинете в папку C:\DOG\scripts запустите shell.reg чтобы прописать новый запуск в реестр.

Color 02 - Цифры определяют цвет фона и текста. Сейчас это черный фон и зеленый текст.
 

Строка regedit /S C:\DOG\scripts\shell.reg - при каждом срабатывании скрипта, то есть при каждой загрузке терминала, будет заново и заново тихо и без вопросов прописывать содержимое shell.reg в реестр. Для подстраховки.

А так мы сообщаем клиентам, что до запуска терминала осталось немного и просим их подождать:

echo.
echo Запуск терминала займет приблизительно минуту, подождите пожалуйста.
echo.
 

Открываем порт: rasdial internet >NUL делаем паузу в пять сек sleep 5 >NUL  (чтоб воспользоваться sleep, его также нужно скачать и скопировать в C:\WINDOWS\system32)

Благодаря сообщениям о шагах, я знаю на каком этапе происходит запуск. Если мне позвонит коллега и скажет что терминал застрял на каком то определенном шаге, мне будет проще разобраться почему он не грузится дальше, чем если не будет никакой информации.

echo.
echo Шаг 2
echo.

rasdial /DISCONNECT >NUL - Закрываем порт.

echo AT+CFUN=1,1 >COM3 - загоняем команду в модем. >COM3 - это порт модема. Если у вас модем висит на другом порту, просто поменяйте цифру. SiemensMC35i на этом этапе проведет 4-5 равномерных зеленых моргания и после вернется в обычный режим. А FargoMaestro100 - на несколько секунд зависнет на красном светодиоде, и после так же начнет нормально подмигивать.

rasdial internet >NUL - для скорейшего запуска терминала, устанавливаем соединение сами и только после запускаем платежную систему:
echo.
echo Шаг 5 - Запуск 24Nonstop
echo.

:respawn
C: >NUL
cd "C:\PCTerminal\" >NUL
PCTerminal.exe >NUL
goto respawn

При помощи >NUL я закрываю от глаз конечного пользователя выполнение самих команд. Благодаря :respawn
в начале кода запуска платежки и goto respawn  в конце кода, при закрытии программы 24NonStop запуститься вновь.

Да есть и минус подобного запуска. Если при обычном запуске 24Nonstop терминал стартует за несколько сек, то в моем варианте запуск проходит дольше, примерно минуту или две. Все зависит от качества связи. Насколько быстро модем соединится. Но если модем любит подвисать, то данный способ очень выручает. А если это не один модем а много модемов?

Для запуска таким макаром, другой платежки в конце скрипта вместо строк:

C: >NUL
cd "C:\PCTerminal\" >NUL
PCTerminal.exe >NUL

достаточно прописать путь к своей платежной системе.

Здесь вы можете скачать сам скрипт и также положить его в папку C:\DOG\scripts

Ресет модема еще можно сделать при помощи специальной программкой DTR8X. Запускать ее нужно также из командного сценария: start /wait dtr8x /3 >NUL  - /3 - порт модема. Но в данном варианте при запуске на экран вылазит окошко программы, которое закрыть сможет любой и прикрыть доступ к нему уже сложнее. Но можно, например использовать баннер закрывающий весь экран на момент работы программки. Сейчас в свободное время я работаю над тем чтобы совместить стандартный скрипт и DTR8x результатом будет запуск программы быстрее и при этом стабильный перезапуск модема.

P.S. У меня gprs соединение называется internet, если у вас по другому, то в скрипте замените строки: rasdial internet >NUL на rasdial Название GPRS соединения >NUL

 


статья отредактирована 09 Октября 2011 г.