0

我正在处理索尼爱立信的gm29

数据表说,插入电源不足以打开调制解调器。它说:

  • 激活 RS232 控制线 DTR,高电平 > 0.2s。

我正在用 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 或其他一些东西?或者,很容易,我错过了什么?

提前致谢。


好吧,这让我发疯了。线索是电源“坏了”,或者更好的是,它可以用测试仪进行良好的测试,但是插入调制解调器,一些电线会移动并且不带电压......

无论如何感谢您的回答,标记为正确的'因为它是:D

4

1 回答 1

4

我在这里发生了几件事。

1) 规范说 DTR 低电平有效,因此您可能需要将truefalse值交换为setDTR(),这取决于谁在这里感到困惑。

2)您DTR在唤醒调制解调器后设置为假。这告诉调制解调器脱机,并忽略所有输入,直到它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 回答