Parsování AT příkazů z USB modemu

Radek Strnad

Parsování AT příkazů z USB modemu
« kdy: 16. 05. 2011, 19:59:51 »
Dobrý den,

píšu skript, který má zjistit na základě příkazu AT+COPS? zjistit ID sítě, ke které je USB modem připojený a následně vybrat správné APN, přihlašovací jméno a heslo. Jiná možnost není, protože např. O2 UK a T-Mobile UK používají modemy, které mají stejné device ID 12d1:1001. Má někdo zkušenosti s získávání odpovědí AT příkazů z usbserial zařízení a následného zpracování bashem? Při zavolání echo "AT" > /dev/ttyUSB0 a následně zavolání cat /dev/ttyUSB0 mi zůstane výpis catu viset. Díky předem za pomoc

Radek Strnad


Re: Parsování AT příkazů z USB modemu
« Odpověď #1 kdy: 16. 05. 2011, 20:16:08 »
Ahoj, zkusil bych se podivat sem http://wiki.openmoko.org/wiki/Manually_using_GSM

Re: Parsování AT příkazů z USB modemu
« Odpověď #2 kdy: 16. 05. 2011, 20:43:53 »
Obsluha sériové linky v BASHi není nejjednodušší, protože je potřeba do jednoho souboru najednou zapisovat i z něj číst. Pokud se to dělá postupně, soubor se mezitím zavře a nefunguje jak by mělo.
Doporučuji to řešit nějakým vyšším jazykem, dovolil jsem si třeba malinkatý kousek v Pythonu 3 s pomocí PySerial:
Kód: [Vybrat]
#!/usr/bin/env python3

import serial

portname = '/dev/ttyUSB0'
command = 'AT+COPS?'

with serial.Serial(portname, timeout=2) as port:
    port.write('{0}\r'.format(command).encode('ascii'))
    port.readline() # Read back command
    result = port.readline().decode('ascii').strip()

print(result)

Re: Parsování AT příkazů z USB modemu
« Odpověď #3 kdy: 17. 05. 2011, 12:02:26 »
Diky moc za pomoc. Uz jsem to napsal pomoci Ruby a SerialPort gemu (http://ruby-serialport.rubyforge.org/). Preci jen jsem v nem vic kovanejsi, nez v Pythonu.

Radek