2016-09-27 18 views
6

Tôi đang kết nối với thiết bị bằng cách sử dụng mã thổi trên MacOS và trong số 100 lần mã này sẽ kết nối chỉ 1 hoặc 2 lần và không trả lời (vì không còn thời gian chờ) thơi gian.Đọc đầu ra nối tiếp từ Pyserial không hoạt động đáng tin cậy

ser = serial.Serial(port="/dev/xyz",timeout = None, baudrate=115200, parity = serial.PARITY_NONE, bytesize = serial.EIGHTBITS, stopbits = serial.STOPBITS_ONE) 

def exitSer(ser): 
    print("Closing") 
    ser.close() 

atexit.register(exitSer, ser) 

if ser.is_open: 
    time.sleep(2) 
    while(1): 
     print(ser.readline().decode("utf-8")) 

Ông có thể xin vui lòng cho tôi biết làm thế nào để sử dụng chương trình như fcntl vv để tìm thấy nếu cổng này là hoàn toàn miễn phí và có sẵn để sử dụng và làm thế nào để thiết lập cờ tty của cảng để giải phóng sau khi thực hiện giải phóng cổng buộc.

Khi công trình này hoạt động, tôi phải chạy đa luồng này trong đó mỗi luồng đang chạy các thiết bị khác nhau mong đợi đầu ra trong dòng. Bất kỳ đề xuất cho rằng chỉ trong trường hợp này hoạt động.

+0

Ứng dụng khác mà bạn tham chiếu có baudrate khác và sử dụng 1 bit dừng. Bạn có thể đăng mã mà bạn sử dụng để đọc dữ liệu từ cổng nối tiếp không? –

+0

Chỉ cần cập nhật câu hỏi. Cảm ơn bạn đã phản hồi. –

+1

Tôi cố gắng tránh sử dụng readline() trên các thiết bị nối tiếp, vì nó lần đầu tiên viết một cái gì đó khi bạn nhận được một ký tự dòng mới. Vì vậy, nếu bất cứ điều gì khác được nhận, bạn sẽ không nhìn thấy nó. Thay vào đó bạn có thể sử dụng một cái gì đó như: sys.stdout.write (ser.read (1)) sys.stdout.flush() –

Trả lời

0
def startSerial(tty_id): 
    ser = serial.Serial(port = tty_id, timeout = None) 
    ser.close() 
    ser.open() 
    if ser.isOpen(): 
     print(ser.portstr, ":connection successful.") 
     return ser 
    else: 
     return False 

Gọi ser.close() trước .open() đã sửa nó. Tôi đã thử nghiệm nó khoảng 200 lần và tôi đã không được dissappointed cho đến nay. Tôi đang thử nghiệm nó bây giờ trong multithreaded và hy vọng rằng các công trình quá.

Cảm ơn mọi người.

Các vấn đề liên quan