0

ソニー・エリクソンのgm29を扱っています。

データシートによると、電源を差し込むだけではモデムのスイッチを入れるのに十分ではありません。それは言います:

  • RS232 制御ライン DTR をアクティブにし、0.2 秒以上ハイにします。

私はPythonでいくつかのテストを書いていますが、:

#!/usr/bin/env python                                                                                         

import serial
from time import sleep

socket = serial.Serial('/dev/ttyS0',
                       baudrate=9600,
                       bytesize=serial.EIGHTBITS,
                       parity=serial.PARITY_NONE,
                       stopbits=serial.STOPBITS_ONE,
                       timeout=1,
                       xonxoff=0,
                       rtscts=0
                       )
socket.setDTR(True)
sleep(3)
socket.setDTR(False)
try:
    while True:
        socket.write('AT'+chr(13));
        sleep(1)
        print "Reading"
        print socket.readlines()
except:
    socket.close()

動作しません... 他の方法で DTR を高くする方法はありますか? minicom か何か他のものとしましょう。または、簡単に、何か不足していますか?

前もって感謝します。


わかりました、それは私を怒らせていました。手がかりは、電源供給業者が「壊れた」か、それよりも良い、テスターでのテストでうまく機能しますが、モデムに接続すると、一部のワイヤが動き、電圧が伝わりません...

とにかく答えてくれてありがとう、正しいとマークされた 'couse :D

4

1 に答える 1

4

ここで私にはいくつかのことが起こります。

1) 仕様では、DTR はアクティブ ローであると記載されているため、ここで混乱している人によっては、trueとのfalse値をに交換する必要がある場合があります。setDTR()

2)DTRモデムをスリープ解除した後、false に設定しています。これにより、モデムがオフラインになり、再びオフラインになるまですべての入力を無視するように指示trueされます。次のことを試してください。

import serial
from time import sleep

conn = serial.Serial('/dev/ttyS0',
                     baudrate=9600,
                     bytesize=serial.EIGHTBITS,
                     parity=serial.PARITY_NONE,
                     stopbits=serial.STOPBITS_ONE,
                     timeout=1,
                     xonxoff=0,
                     rtscts=0
                     )
# Wake Modem
conn.setDTR(True)
sleep(3)
conn.setDTR(False)

sleep(5)

# Start talking
conn.setDTR(True)
try:
    while True:
        conn.write('AT'+chr(13));
        print conn.readline() # readlines() will probably never return.
finally:
    conn.close()

3)socketはおそらくシリアル接続の名前として不適切です。

于 2010-03-01T20:31:32.660 に答える