|
|
  |
скрипты Python Telit, Вопрос по написанию скриптов на Python для Telit |
|
|
|
Sep 29 2016, 06:54
|
Участник

Группа: Участник
Сообщений: 63
Регистрация: 22-12-08
Пользователь №: 42 674

|
Доброго времени суток! Писал скрипт для 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) #
|
|
|
|
|
Sep 29 2016, 07:50
|
Гуру
     
Группа: Админы
Сообщений: 2 736
Регистрация: 17-06-04
Из: Киев
Пользователь №: 48

|
Я поступал проще: Код # запускаем пользовательское приложение try: import user except: pass где user - это пользовательский скрипт user.pyo На try-exсept не обращайте внимания - это просто защита от глюков в пользовательском приложении
--------------------
Вам помочь или не мешать?
|
|
|
|
|
Sep 30 2016, 13:42
|
Участник

Группа: Участник
Сообщений: 63
Регистрация: 22-12-08
Пользователь №: 42 674

|
Спасибо за совет Я обнаружил что в строке 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 Но и это не помогает
|
|
|
|
|
Feb 5 2017, 09:49
|
Участник

Группа: Участник
Сообщений: 63
Регистрация: 22-12-08
Пользователь №: 42 674

|
Появилась необходимость сохранять данные в файле на SIM карте или в памяти модуля GSM. Позволяет скриптовый язык Python сохранять и и считывать файлы данных?
|
|
|
|
|
Feb 6 2017, 11:30
|
Гуру
     
Группа: Админы
Сообщений: 2 736
Регистрация: 17-06-04
Из: Киев
Пользователь №: 48

|
для примера работа с 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 Тут только чтение, как записывать думаю понятно будет
--------------------
Вам помочь или не мешать?
|
|
|
|
|
Feb 7 2017, 14:06
|
Участник

Группа: Участник
Сообщений: 63
Регистрация: 22-12-08
Пользователь №: 42 674

|
Спасибо, интересные идеи
|
|
|
|
|
Feb 7 2018, 12:07
|
Группа: Новичок
Сообщений: 3
Регистрация: 6-01-18
Пользователь №: 100 945

|
Цитата(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. Работу оплачу
|
|
|
|
|
Mar 13 2018, 06:35
|
Участник

Группа: Участник
Сообщений: 63
Регистрация: 22-12-08
Пользователь №: 42 674

|
Ув коллеги в процессе отлаживания скрипта под 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
Сообщение отредактировал csm7 - Mar 13 2018, 06:37
|
|
|
|
|
Mar 14 2018, 05:41
|

Знающий
   
Группа: Свой
Сообщений: 567
Регистрация: 19-01-11
Из: СПб
Пользователь №: 62 326

|
Цитата(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
|
|
|
|
|
Mar 19 2018, 16:33
|
Участник

Группа: Участник
Сообщений: 63
Регистрация: 22-12-08
Пользователь №: 42 674

|
Код Send: at+cpbf=+38067*******<cr><lf> at+cpbf=+38067******
+CPBF: 51,"+38067*******",145,"+38067*******"
OK По алгоритму все работает нормально. Проблема оказалась в том что когда трубка поднята нет возможности записывать номер в телефонную книгу Доброго времени суток Появился другой вопрос Как отослать СМС записанному в телефонной книге абоненту. Номер ячейки известен. а также известно ник этого номера в телефонной книге. Определять мобильный номер нет желания, где-то видел команду - отсылает СМС по номеру ячейки или по нику записанного в телефонной книге абонента
Сообщение отредактировал csm7 - Mar 19 2018, 16:47
|
|
|
|
|
Mar 20 2018, 07:27
|
Участник

Группа: Участник
Сообщений: 63
Регистрация: 22-12-08
Пользователь №: 42 674

|
Доброго времени суток! В модуле GL868 работает скрипт. Вопрос . Запустится ли при этом другой скрипт если придет СМС с кодом запуска скрипта типа Код AT#ESCRIPT="user.pyo";#execscr;\r И еще по ходу один вопрос. Работает скрипт - в какой-то момент он запускает другой скрипт. Возможно ли запускаемому скрипту передать параметры с работающего скрипта
Сообщение отредактировал csm7 - Mar 20 2018, 07:28
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|