Уведомления

Группа в Telegram: @pythonsu

#1 Март 20, 2014 14:15:18

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

PyUSB usbreset

День добрый.
Необходимо написать скрипт, который бы резетил модем после загрузки файла (под windows 7).
Подскажите с помощью PyUSB я смогу это сделать? (Честно 2 дня гуглил не нашёл) Или лучше использовать DevCon?
Для devcon'а решение нашел, но не хотелось бы вставлять костыли.
Спасибо.

Офлайн

#2 Март 20, 2014 18:42:28

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

PyUSB usbreset

Можно просто пользовать DevCon

devcon restart "USB\VID_16D5&PID_6501"
можно пользовать АТ команды, но не на каждом девайсе они работают
AT+WDWL
Примечание: Переключение в режим загрузки.
AT+CFUN=1
Примечание: Перезагрузка модема после заверше-ния обновления ПО.


15.44. Перезагрузка: +WRST
15.44.1. Описание
Данная команда перезагружает модуль через отрезок времени, опреде-ленный параметром <delay>.
15.44.2. Синтаксис
Синтаксис команды: AT+WRST =<mode>,<Delay>
Синтаксис ответа: +WRST: <Mode>,<Delay>,<RemainTime>

можно через winapi попробовать передернуть usbhub

Офлайн

#3 Март 21, 2014 09:27:38

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

PyUSB usbreset

sanodin, спасибо за помощь!!!
Я решил воспользоваться at-командами:

import serial
mod=serial.Serial("COM5",460800,timeout=5)
mod.write("AT+CFUN=1,1\r")
mod.close()
\r без этого команда не воспринималась модемом.
И на AT+CFUN=1 мы просто получаем ок, модем не перезагружается пока вот так не введем AT+CFUN=1,1. Это актуально для модема Huawei e392!

PS Я так и не понял, почему без \r не работает…

Отредактировано noob_saibot (Март 21, 2014 09:49:44)

Офлайн

#4 Март 21, 2014 17:50:28

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

PyUSB usbreset

Считывал смс таким кодом

#!/usr/bin/env python
import serial
 
port = serial.Serial('COM4',115200, timeout=1)
port.write('AT+CMGF=1\r\n')      #set text mode
port.write('AT+CSCS="UCS2"\r\n')#set encoding to UCS2
port.write('AT+CNUM\r\n')#number tel
port.write('AT+CMGL="ALL"\r\n')  #get all messages
 
def __decode(str):
    ustr = u''
    str = str.strip().replace('"', '')
    for i in range(len(str)):
        if not i % 4:
            ustr += unichr(int(str[i:i+4], 16))
    return ustr
 
gotmsg = False
 
while(1):
    line = port.readline()
    print line
    if line.startswith('+CMGL'):
        info = line.split(',')
        print 'message#%s from %s date %s time %s %s'     \
              %(info[0].split(':')[1], __decode(info[2]), \
 
info[4], info[5], __decode(port.readline()))
        gotmsg = True
    if gotmsg and line.startswith('OK'): break
но есть кем то написанный код по отправке и чтению смс с симки модема, прилагаю в архиве, и еще есть книга “AT-команды для разработчиков”

Отредактировано sanodin (Март 21, 2014 17:54:17)

Прикреплённый файлы:
attachment sms_modul_.zip (5,0 KБ)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version