串行通信。正确发送DTR?

2024-05-10 07:50:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我在处理索尼爱立信的一个gm29

datasheet表示,插上电源不足以打开调制解调器。上面写着:

  • 启动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或者其他什么东西?或者,很容易,我是不是遗漏了什么?

提前谢谢。


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

无论如何,谢谢你的回答,标记为正确的“couse it was:D


Tags: importtrue调制解调器usrserialrs232sleepsocket
1条回答
网友
1楼 · 发布于 2024-05-10 07:50:44

我在这里发生了几件事。

1)规范指出DTR处于低活动状态,因此可能需要将truefalse值交换为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可能是串行连接的坏名称。

相关问题 更多 >