我正在处理索尼爱立信的gm29。
datasheet表示插上电源不足以打开调制解调器。它说:
我正在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 it:D
答案 0 :(得分: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
可能是您的串行连接的错误名称。