الاتصال التسلسلي. إرسال DTR بالطريقة الصحيحة؟

StackOverflow https://stackoverflow.com/questions/2357610

  •  23-09-2019
  •  | 
  •  

سؤال

أنا أتعامل مع أ GM29 بقلم سوني إريكسون.

ال ورقة البيانات يقول أن توصيل الطاقة لا يكفي لتبديل المودم. انها تقول:

  • تفعيل خط التحكم RS232 DTR ، مرتفع لـ> 0.2s.

أنا أكتب بعض الاختبارات في بيثون ، لكن:

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

هل كانت مفيدة؟

المحلول

هناك العديد من الأشياء التي تحدث لي هنا.

1) تقول المواصفات إن DTR منخفضة ، لذلك قد تحتاج إلى تبديل true و false القيم ل 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 ربما هو اسم سيء لاتصالك التسلسلي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top