2017-03-23 95 views
0
import serial 

arduino = serial.Serial('COM12', 9600, timeout = .1) 
arduino_data = [] # declare a list 

while True: 
    data = arduino.readline() 
    if data: 
     arduino_data.append(data) # Append a data to your declared list 
     print arduino_data 

我不知道什麼時候沒有更多的新線從Arduino方面,我怎麼能跳出while循環?pyserial當它是行結束時停止while循環

while True: 
    data = arduino.readline() 
    if data: 
     arduino_data.append(data) # Append a data to your declared list 
     print arduino_data 
     break 

它只適用於1行。

+0

[存儲環路自Arduino的側進行後的序列值(的可能的複製http://stackoverflow.com/questions/42942673/storing-serial-value-after環路是從arduino端完成的) – abhinav

+0

你有一個非常短的超時時間。你確定這是合適的價值嗎?目標是否每秒產生至少10行?我認爲@CaveMike有正確的想法。 –

回答

1

等待它沒有任何數據超時,那麼你知道它已經完成。

例如:

import serial 

arduino = serial.Serial('COM12', 9600, timeout = .1) 
while True: 
    data = arduino.readline() 
    if data: 
     arduino_data.append(data) # Append a data to your declared list 
     print(arduino_data) 
    else: 
     break 
+0

顯然我已經嘗試過了。它根本不起作用。第一次迭代直接打破了,甚至沒有等待閱讀。 – Greg

+1

您的代碼在休息之前缺少其他代碼。如果您已經用其他方法嘗試過,則意味着在數據準備就緒之前第一次讀取完成。要進行調試,請嘗試更大的超時。現在,你有它在100毫秒。嘗試1秒或5秒。根據您要與之通話的設備以及觸發它發送數據的方式,可能需要更多時間來發送數據。 – CaveMike

+0

哦邁克,你是如此的輝煌!所以現在我的擔心是休息之後,程序將停止,我該如何重新啓動它? – Greg