2016-09-27 32 views
6

MacOS'ta kod darbesi kullanarak cihaza bağlanıyorum ve bu kod 100 kez üzerinden 1 veya iki kez bağlantı kuracak ve yanıt vermiyor (zaman aşımı olmadığından). kere. Pyserial'ın seri çıktısını okumak güvenilir bir şekilde çalışmıyor

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")) 

nasıl bu liman tamamen ücretsiz ve kullanımı ve nasıl liman zorla özgür yaptıktan sonra serbest Tty bağlantı noktasının bayrakları ayarlamak için kullanılabilir olup olmadığını bulmak için fcntl vb gibi programları kullanmak söyleyebilir misiniz.

Bu çalışma tamamlandığında, her bir iş parçacığının satırlarda çıktı beklediği farklı aygıtları çalıştırdığı bu çok iş parçacıklıyı çalıştırmam gerekir. Bunun için herhangi bir öneri, bu durumda çalışır.

+0

Başvuru yaptığınız diğer uygulamanın farklı bir baud hızı vardır ve 1 durdurma biti kullanır. Seri bağlantı noktasından veri okumak için kullandığınız kodu postalayabilir misiniz? –

+0

Sadece soru güncellendi. Yanıt için teşekkür ederim. –

+1

Seri aygıtlarda readline() kullanmaktan kaçınmaya çalışıyorum, ilk olarak yeni bir satır karakteri aldığınızda bir şey yazıyor. Yani başka bir şey alınırsa, onu göremezsiniz. Bunun yerine aşağıdaki gibi bir şey kullanabilirsiniz: sys.stdout.write (ser.read (1)) sys.stdout.flush() –

cevap

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 

ser.close() işlevinin çağrılması .open() düzeltildi. Yaklaşık 200 kere test ettim ve şimdiye kadar hayal kırıklığına uğramadım. Şimdi çok iş parçacıklı olarak test ediyorum ve umarım bu da işe yarıyor.

Herkese teşekkürler.

İlgili konular