Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: скрипты Python Telit
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
csm7
Доброго времени суток!
Писал скрипт для GL868 на Python Алгоритм следующий Основной скрипт настраивает модуль запускает монитор событий и переводит его в режим малого энергопотребления. Когда приходит входящий звонок монитор событий должен запустить следующий скрипт. Монитор событий срабатывает а скрипт не запускается. Может кто поможет Привожу код где в нем ошибка?

Код
import MOD
import MDM
import SER
import sys

SER.set_speed('115200','8N1')

class SerWriter:
    def __init__(self):
        SER.set_speed('115200','8N1')

    def write(self,s):
        SER.send(s+'\r')

sys.stdout = sys.stderr = SerWriter()

def checkNetwork():
    MOD.sleep(20)
    REC_TIME = 200
    for _ in range(10):
        MDM.send('AT+CREG?\r',0)
        res = MDM.receive(REC_TIME)
        if (res.find('0,1')!=-1): return 1
        else: MOD.sleep(50)
    return 0


print "Start"
MDM.send('AT+CLIP=1\r',0)


MDM.send('AT#ENAEVMONI=0\r',0) # clear all evants
MDM.send('AT#ENAEVMONICFG=3,1,2\r',0) #
MDM.send('AT#EVMONI="RING",0,1,1\r',0) #Ring 1-th timeout 2 minute
a = MDM.send('AT#EVMONI="RING",0,0,"AT#ESCRIPT="runRING.pyo";AT#EXECSCR"\r',0) # Запуск скрипта по обработке входящего звонка
print "runRING.py Ok " + str(a)
MDM.send('AT#EVMONI="RING",1\r',0)
MDM.send('AT#ENAEVMONI=1\r',0) # set all evants
#MDM.send('AT&W\r',0)
print "MONI = Ok " + str(a)


runRING.pyo
Код

import MOD
import MDM
import sys


MDM.send('AT\r',5) #



Nixon
Я поступал проще:
Код
# запускаем пользовательское приложение
try:
    import user
except: pass
где user - это пользовательский скрипт user.pyo
На try-exсept не обращайте внимания - это просто защита от глюков в пользовательском приложении
csm7
Спасибо за совет
Я обнаружил что в строке
a = MDM.send('AT#EVMONI="RING",0,0,"AT#ESCRIPT="runRING.pyo";AT#EXECSCR"\r',0) # Запуск скрипта по обработке входящего звонка
указано две команды "AT#ESCRIPT="runRING.pyo";AT#EXECSCR", которые должны выполнятся по срабатыванию монитора событий Однако наличие скобок "runRING.pyo" нарушает конструкцию В документации вместо скобок советуют использовать символ \22 Но и это не помогает
csm7
Появилась необходимость сохранять данные в файле на SIM карте или в памяти модуля GSM. Позволяет скриптовый язык Python сохранять и и считывать файлы данных?
smalcom
да
Nixon
для примера работа с SIM:
Код
# КЛАСС РАБОТЫ С НАСТРОЙКАМИ В SIM карте
class CCfg:
    def __init__ (self):
        try:
            # установили хранилище для телефонной книги на SIM карту
            CMD('AT+CPBS="SM"\r', 10)
            # ожидаем готовность SIM карты (фейковое чтение)
            while 1:
                res = CMD('AT+CPBR=50\r', 10)
                if (res[len(res) - 1] != 'ERROR'):
                    break
                else:
                    MOD.sleep(1)
        except:
            pass
    # функция чтения переменной из SIM карты
    def getvar (self, index):
        data = ''
        try:
            res = CMD('AT+CPBR=' + str(50 + index) + '\r', 10)
            if (res[0].find('+CPBR: ' + str(50 + index)) != -1):
                data = res[0].split('"')[1]
        except:
            pass
        return data
    # функция записи переменной на SIM карту
    def setvar (self, index, data):
        return CMD('AT+CPBW=' + str(50 + index) + ',' + str(data) + '\r', 10)


и пример с файлами:
Код
# ЧТЕНИЕ ИЗ ФАЙЛА КОНФИГУРАЦИИ ПАРАМЕТРОВ GPRS И FTP
def GET_CFG ():
    apn = ext = ftp = ''
    try:
        # открываем файл конфигурации программы обновления
        cfg = open('boot.cfg', "r")
        apn = cfg.readline().replace('\r\n', '')
        ext = cfg.readline().replace('\r\n', '')
        ftp = cfg.readline().replace('\r\n', '')
        cfg.close()
    except: pass
    # возвращаем параметры программы обновления
    return apn, ext, ftp
Тут только чтение, как записывать думаю понятно будет
csm7
Спасибо, интересные идеи
energostart
Цитата(csm7 @ Sep 29 2016, 07:54) *
Доброго времени суток!
Писал скрипт для GL868 на Python Алгоритм следующий Основной скрипт настраивает модуль запускает монитор событий и переводит его в режим малого энергопотребления. Когда приходит входящий звонок монитор событий должен запустить следующий скрипт. Монитор событий срабатывает а скрипт не запускается. Может кто поможет Привожу код где в нем ошибка?

Код
import MOD
import MDM
import SER
import sys

SER.set_speed('115200','8N1')

class SerWriter:
    def __init__(self):
        SER.set_speed('115200','8N1')

    def write(self,s):
        SER.send(s+'\r')

sys.stdout = sys.stderr = SerWriter()

def checkNetwork():
    MOD.sleep(20)
    REC_TIME = 200
    for _ in range(10):
        MDM.send('AT+CREG?\r',0)
        res = MDM.receive(REC_TIME)
        if (res.find('0,1')!=-1): return 1
        else: MOD.sleep(50)
    return 0


print "Start"
MDM.send('AT+CLIP=1\r',0)


MDM.send('AT#ENAEVMONI=0\r',0) # clear all evants
MDM.send('AT#ENAEVMONICFG=3,1,2\r',0) #
MDM.send('AT#EVMONI="RING",0,1,1\r',0) #Ring 1-th timeout 2 minute
a = MDM.send('AT#EVMONI="RING",0,0,"AT#ESCRIPT="runRING.pyo";AT#EXECSCR"\r',0) # Запуск скрипта по обработке входящего звонка
print "runRING.py Ok " + str(a)
MDM.send('AT#EVMONI="RING",1\r',0)
MDM.send('AT#ENAEVMONI=1\r',0) # set all evants
#MDM.send('AT&W\r',0)
print "MONI = Ok " + str(a)


runRING.pyo
Код

import MOD
import MDM
import sys


MDM.send('AT\r',5) #



Требуется помощь в коррекции скрипта для Telit GL868. Работу оплачу
csm7
Ув коллеги в процессе отлаживания скрипта под GL868-DUAL V3 (AT+CGMR 16.01.181) обнаружил, что не работает команда
CODE
MDM.send('AT+CPBW=50,' + str(abonent) + ',145,smsNum\r', 15)


Согласно документации переменные str(abonent) и smsNum должны находиться в кавычках (") Пробовал всячески прописать кавычки но пока безрезультатно

При вожу функцию в которой сбоит эта команда Может не в команде дело а в задержках
CODE
def findCall(self):
out = 0
while (1==1):
res = MDM.receive(10)
if (res.find('+CLIP:') != -1):
abonent = res.split('"')[1]
MDM.send('AT+CPBF=' + str(abonent) + '\r', 0)
res = MDM.receive(1)
if (res.find('ERROR') == -1):
MDM.send('ata\r', 1)
SER.send('Connenct ' + str(abonent) + '\r\n')
#MDM.send('AT+CPBW=50,' + str(abonent) + ',145,smsNum\r', 15)
res = MDM.receive(30)
SER.send(str(res))
out = 1
else:
MDM.send('ath0\r', 2)
SER.send('Disconnect\r\n')
out = -1
break
return out
molecul
Цитата(csm7 @ Mar 13 2018, 09:35) *
Ув коллеги в процессе отлаживания скрипта под GL868-DUAL V3 (AT+CGMR 16.01.181) обнаружил, что не работает команда
CODE
MDM.send('AT+CPBW=50,' + str(abonent) + ',145,smsNum\r', 15)


Согласно документации переменные str(abonent) и smsNum должны находиться в кавычках (") Пробовал всячески прописать кавычки но пока безрезультатно

При вожу функцию в которой сбоит эта команда Может не в команде дело а в задержках
CODE
def findCall(self):
out = 0
while (1==1):
res = MDM.receive(10)
if (res.find('+CLIP:') != -1):
abonent = res.split('"')[1]
MDM.send('AT+CPBF=' + str(abonent) + '\r', 0)
res = MDM.receive(1)
if (res.find('ERROR') == -1):
MDM.send('ata\r', 1)
SER.send('Connenct ' + str(abonent) + '\r\n')
#MDM.send('AT+CPBW=50,' + str(abonent) + ',145,smsNum\r', 15)
res = MDM.receive(30)
SER.send(str(res))
out = 1
else:
MDM.send('ath0\r', 2)
SER.send('Disconnect\r\n')
out = -1
break
return out

+CPBF ищет не номер (который вы получаете из +CLIP), а имя из телефонной книги, соответственно вы никогда не попадете в ветку с +CPBW
csm7
Код
Send: at+cpbf=+38067*******<cr><lf>
at+cpbf=+38067******

+CPBF: 51,"+38067*******",145,"+38067*******"

OK


По алгоритму все работает нормально. Проблема оказалась в том что когда трубка поднята нет возможности записывать номер в телефонную книгу


Доброго времени суток Появился другой вопрос Как отослать СМС записанному в телефонной книге абоненту. Номер ячейки известен. а также известно ник этого номера в телефонной книге. Определять мобильный номер нет желания, где-то видел команду - отсылает СМС по номеру ячейки или по нику записанного в телефонной книге абонента
csm7
Доброго времени суток!

В модуле GL868 работает скрипт. Вопрос . Запустится ли при этом другой скрипт если придет СМС с кодом запуска скрипта типа
Код
AT#ESCRIPT="user.pyo";#execscr;\r


И еще по ходу один вопрос.
Работает скрипт - в какой-то момент он запускает другой скрипт. Возможно ли запускаемому скрипту передать параметры с работающего скрипта
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.