[英]Pyserial serial.write() doesn't work
我需要與 Arduino 通信。 做serial.readline()
來閱讀 Arduino 所說的工作正常。 做serial.write('something')
似乎沒有做任何事情。
有趣的是,如果我在控制台或命令行中編寫相同的代碼,它會按預期工作......
使用 Python 2.7。
蟒蛇代碼:
import time
import serial
# setup Arduino USB communication
try:
arduinoSerialData = serial.Serial('com3', 9600)
except: # not connected/damaged
pass
while True:
if arduinoSerialData.inWaiting() > 0:
arduinoSerialData.write('A')
arduinoSerialData.flush()
datastr = arduinoSerialData.readline()
print datastr
time.sleep(1)
我知道我有點太晚了,但今天我在 Pyserial 和 ESP32(一種類似於 arduino 的設備)上遇到了同樣的問題。 解決方案是為 pyserial 提供與 ESP32 中的串行接口相同的配置:
esp = serial.Serial("COM10", 115200)
esp.parity=serial.PARITY_EVEN
esp.stopbits=serial.STOPBITS_ONE
esp.bytesize=serial.EIGHTBITS
我發送這樣的命令:
arr = [32,2,0,4] #Decimal
esp.write(arr)
這是 ESP32 配置,以防您需要知道:
uart_config_t uart_config = {
.baud_rate = 115200,
.data_bits = UART_DATA_8_BITS,
.parity = UART_PARITY_EVEN,
.stop_bits = UART_STOP_BITS_1,
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE
};
uart_param_config(UART_PORT_NUM, &uart_config);
ESP 現在可以正確回顯命令,希望這能有所幫助。
嘗試在Python腳本中添加timeout參數,然后嘗試在while循環中設置您的主要arduino代碼step1:python
arduinoSerialData = serial.Serial('com3', 9600, 1)
將arduinoSerialData.flush()替換為:
arduinoSerialData.flushInput()
步驟2:Arduino:
void loop(){
while (Serial.available > 0){
// your main code
}
}
打開端口后放置time.sleep(2)
行,以便給Arduino時間重新啟動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.