Найти - Пользователи
Полная версия: PyUSB usbreset
Начало » Python для новичков » PyUSB usbreset
1
noob_saibot
День добрый.
Необходимо написать скрипт, который бы резетил модем после загрузки файла (под windows 7).
Подскажите с помощью PyUSB я смогу это сделать? (Честно 2 дня гуглил не нашёл) Или лучше использовать DevCon?
Для devcon'а решение нашел, но не хотелось бы вставлять костыли.
Спасибо.
sanodin
Можно просто пользовать 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
noob_saibot
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 не работает…
sanodin
Считывал смс таким кодом
#!/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-команды для разработчиков”
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB