Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Telit GL868-DUAL и Python (проблемы запуска скрипта)
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
xoz
Всем привет!
Достался мне модуль на GL868-DUAL, задача написать на питоне определенный скрипт.
Вроде все понятно и не сложно, написано и отлажено на PythonWin и даже работает.
Но когда заливается в сам модуль начинает происходить странное. Скрипт не хочет запускатся в большинстве случаях, и что странно модуль пытается по видимому запустить скрипт но что то происходит и отваливается. А файл скрипта остаётся занятым, то есть его невозможно удалить, получается только после перезапуска модуля и до попытки запуска скрипта. При перезапуске модуля несколько раз, скрипт иногда запускается.
Мне кажется есть какие то ограничения в движке питона на Телите, но вполне возможно что проблема в коде.
У кого есть опыт с этими модулями посоветуйте что нибудь.
Минимальный код при котором это происходит в приложении.
mempfis_
Цитата(xoz @ Aug 17 2012, 14:10) *
Мне кажется есть какие то ограничения в движке питона на Телите, но вполне возможно что проблема в коде.
У кого есть опыт с этими модулями посоветуйте что нибудь.
Минимальный код при котором это происходит в приложении.



На питоне тяжело писать т.к. можно не заметить ошибку до тех пор, пока она не возникнет.
Поэтому каждую процедуру необходимо внимательно отлаживать.
Типичные ошибки это вызов методом, которые не существуют,
использование переменных, которые не были объявлены и инициализированы (напр res.find('.') а res ранее нигде не обявлялся)
неверные индексы числовых массивов,
использование неподдерживаемых свойств (питон-вин прекрасно работает с float, а интерпретатор в модеме не поддерживает его)

Попытайтесь локализовать место возникновения ошибки.
Можно отправлять с помощью SER тестовые сообщения если это не будет мешать работе того протокола, который вы пытаетесь реализовать.
Можно использовать
Код
try:
  какое-либо действие
except:
вываливание из-за ошибки (напр. послать сообщение)


Просто замечание
Код
Код
def CRC(data):
    sum = 0
    for i in range(1, len(data)):
        sum = sum + ord(data[i])
    sum = sum % 256
    return sum


будет работать медленне чем
Код
def CRC(data):
    sum = 0
    dlen = len(data)
    for i in range(1, dlen):
        sum = sum + ord(data[i])
    sum = sum % 256
    return sum
xoz
Спасибо за ответ
буду пробовать дальше
smalcom
ещё распространена ошибка - запуск на модуле искохников(*.py) - это очень долго, в первый раз. добавлю от себя процедурку, которая помогает искать ошибки вылета, т.к. не всегда есть возможность включить отладочную консоль

Код
import sys

LTime = 0
try:
    import MOD
    import mymodule
    LTime = MOD.secCounter()
    mymodule.main()
except:
    mFd = open('dus-' + str(LTime), 'wb')
    mFd.write(str(sys.exc_info()[0]) + '\r\n')
    mFd.write(str(sys.exc_info()[1]) + '\r\n')
    tb = sys.exc_info()[2]
    while tb != None:
        mFd.write('\r\n--->>>\r\nLineNum: ' + str(tb.tb_lineno))
        mFd.write('\r\n' + str(tb.tb_frame.f_code))
        mFd.write('\r\n' + str(tb.tb_frame.f_locals))
        tb = tb.tb_next
    mFd.flush()
    mFd.close()
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.