реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> скрипты Python Telit, Вопрос по написанию скриптов на Python для Telit
csm7
сообщение Sep 29 2016, 06:54
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 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) #



Go to the top of the page
 
+Quote Post
Nixon
сообщение Sep 29 2016, 07:50
Сообщение #2


Гуру
******

Группа: Админы
Сообщений: 2 671
Регистрация: 17-06-04
Из: Киев
Пользователь №: 48



Я поступал проще:
Код
# запускаем пользовательское приложение
try:
    import user
except: pass
где user - это пользовательский скрипт user.pyo
На try-exсept не обращайте внимания - это просто защита от глюков в пользовательском приложении


--------------------
Вам помочь или не мешать?
Go to the top of the page
 
+Quote Post
csm7
сообщение Sep 30 2016, 13:42
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 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 Но и это не помогает
Go to the top of the page
 
+Quote Post
csm7
сообщение Feb 5 2017, 09:49
Сообщение #4


Участник
*

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



Появилась необходимость сохранять данные в файле на SIM карте или в памяти модуля GSM. Позволяет скриптовый язык Python сохранять и и считывать файлы данных?
Go to the top of the page
 
+Quote Post
smalcom
сообщение Feb 5 2017, 16:16
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 287
Регистрация: 26-06-07
Пользователь №: 28 718



да
Go to the top of the page
 
+Quote Post
Nixon
сообщение Feb 6 2017, 11:30
Сообщение #6


Гуру
******

Группа: Админы
Сообщений: 2 671
Регистрация: 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
Тут только чтение, как записывать думаю понятно будет


--------------------
Вам помочь или не мешать?
Go to the top of the page
 
+Quote Post
csm7
сообщение Feb 7 2017, 14:06
Сообщение #7


Участник
*

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



Спасибо, интересные идеи
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th March 2017 - 05:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.01396 секунд с 7
ELECTRONIX ©2004-2016