2010-03-01 4 views
0

Я имею дело с gm29 от Sony Ericsson.Последовательная связь. Отправка DTR в правильном направлении?

datasheet говорит, что включение питания недостаточно для включения модема. В нем говорится:

  • активировать управляющую линию RS232 DTR, высокий для> 0,2 с.

Я пишу некоторые тесты в питона, но:

#!/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

+0

Вы говорите: «не работает» ... как вы это заключаете? Является ли строка DTR не изменением состояния, или просто, что ожидаемый конечный результат не возникает? Можете ли вы подключить мультиметр, чтобы наблюдать напряжение на выходной линии DTR относительно GND (земля), когда вы вызываете 'setDTR()'? При использовании оборудования всегда важно изолировать проблему от программного обеспечения или аппаратного обеспечения, чтобы избежать бесплодных угадываний в неправильных областях. –

+0

Я выясняю, что он не работает. Couse led не загорается :) Я собираюсь сделать какой-то тест и сообщить вам. –

ответ

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 вероятно плохое имя для последовательного соединения.

Смежные вопросы