串行python到arduino
我想用python向我的arduino发送串行数据(串行python到arduino,python,arduino,serial-port,pyserial,Python,Arduino,Serial Port,Pyserial,我想用python向我的arduino发送串行数据('a') arduino上的接收代码如下: char inChar = (char)Serial.read(); if(inChar=='a'){ //do stuff } 当从arduino串行终端发送字符“a”时,它工作。 但是,当从Python2.7(代码见下文)发送时,rx led闪烁,但不会执行to stuff(即inChar=='a'为false)。 我什么都试过了,但解决不了这个问题 Pyton代码: import se
'a'
)
arduino上的接收代码如下:
char inChar = (char)Serial.read();
if(inChar=='a'){
//do stuff
}
当从arduino串行终端发送字符“a”时,它工作。
但是,当从Python2.7(代码见下文)发送时,rx led闪烁,但不会执行to stuff
(即inChar=='a'
为false)。
我什么都试过了,但解决不了这个问题
Pyton代码:
import serial
ser = serial.Serial('/dev/ttyUSB0',9600)
ser.write('a')
编辑:
ser.write(b'a')
也不起作用你可以在这里看到我的决定=>
将firebox作为fb导入
serPort=fb.findDevice(“刺激器”)
如果(serPort):
数据=[]
数据。追加(“”)
fb.发送消息(serPort,数据)
你可以在这里看到我的决定=>
将firebox作为fb导入
serPort=fb.findDevice(“刺激器”)
如果(serPort):
数据=[]
数据。追加(“”)
fb.发送消息(serPort,数据)
当您看到Rx灯闪烁但arduino似乎没有接收数据时,我会检查两件事:
1) 确保arduino在从python主机发送数据之前有足够的时间设置和启动串行通信。您可以在Serial.begin
语句之后包含导致板载LED以独特模式闪烁的代码,然后启动python代码。(LED详细信息:)
2) 确保通信设置正确。您可能希望显式设置所有参数,以便知道它们是什么,并确保电缆两端的参数相同。例如,在arduino上:
// set up Serial comm with standard settings
Serial.begin(9600,SERIAL_8N1);
Serial.flush();
然后在python代码中:
bytesize=8
parity='N'
stopbits=1
timeout=3
ser = serial.Serial(port_name, baudrate=9600, bytesize=bytesize, parity=parity, stopbits=stopbits, timeout=timeout)
另外,如果您可以将数据从arduino发送到python主机,那么您就知道您的通信设置是正确的。当您看到Rx灯闪烁但arduino似乎没有接收数据时,我会检查两件事: 1) 确保arduino在从python主机发送数据之前有足够的时间设置和启动串行通信。您可以在
Serial.begin
语句之后包含导致板载LED以独特模式闪烁的代码,然后启动python代码。(LED详细信息:)
2) 确保通信设置正确。您可能希望显式设置所有参数,以便知道它们是什么,并确保电缆两端的参数相同。例如,在arduino上:
// set up Serial comm with standard settings
Serial.begin(9600,SERIAL_8N1);
Serial.flush();
然后在python代码中:
bytesize=8
parity='N'
stopbits=1
timeout=3
ser = serial.Serial(port_name, baudrate=9600, bytesize=bytesize, parity=parity, stopbits=stopbits, timeout=timeout)
另外,如果您可以将数据从arduino发送到python主机,那么您就知道您的通信设置是正确的。添加
ser.flush()
在ser.write('a')之后的末尾
或
ser.close()
引用以确保数据发送到端口。添加
ser.flush()
在ser.write('a')之后的末尾
或
ser.close()
请参阅以确保将数据发送到端口。感谢您的回复。然而,这并没有解决我的问题
在尝试了几乎所有可以想象的解决方案后,我修复了它。在打开端口和发送/读取之间,需要延迟-至少对于我的raspberry
所以这是可行的:
import serial
import time
ser = serial.Serial('/dev/ttyUSB0',9600) #opening the port
time.sleep(1) #wait 1s
ser.write('a') #write to the port
谢谢你的回复。然而,这并没有解决我的问题
在尝试了几乎所有可以想象的解决方案后,我修复了它。在打开端口和发送/读取之间,需要延迟-至少对于我的raspberry
所以这是可行的:
import serial
import time
ser = serial.Serial('/dev/ttyUSB0',9600) #opening the port
time.sleep(1) #wait 1s
ser.write('a') #write to the port
类似的问题也得到了回答,看看这是否正确helps@warl0ck我已经读过这篇文章了,但它没有帮助在末尾添加ser.flush()
,或者ser.close()
引用以确保数据是正确的sent@black下次提供一个最小的、可重复的问题示例,因为有时候,某些代码行出现的上下文对于重现和识别问题很重要,而且在根本没有上下文的情况下也是如此helps@warl0ck我已经读过这篇文章了,但它没有帮助在结尾添加ser.flush()
,或者ser.close()
参考以确保数据正确无误sent@black下次请提供一个最小的、可重复的问题示例,因为有时某些代码行出现的上下文对于再现和识别问题很重要,而且在根本没有上下文的情况下也是如此。事实上,这看起来像垃圾邮件,似乎无法回答此线程中的问题,也无法清楚地识别和解决问题中的问题。请编辑您的答案,以提供更多关于如何解决OP问题以及他如何在具体案例中使用它的详细信息。我没有时间写更多详细信息。事实上,这看起来像垃圾邮件,似乎无法回答此线程中的问题,也无法清楚地识别和解决问题中的问题。请编辑您的答案,提供更多关于如何解决OP问题的详细信息,以及他如何在具体案例中使用它。我没有时间写更多详细信息。我感谢您的评论。24小时后回顾我的答案,它不是很好:(我没有关于终止字符行为的引证,我在复习笔记时遇到了一个类似的问题,我没有使用python,我在使用Java。我将编辑我的答案。很好,我删除了我的评论,因为它不再适用。你能重现OP的问题吗?我感谢你的评论。24小时回顾我的答案ter,这不是很好:(我没有关于终止字符行为的引用,并且回顾了我遇到的类似问题的注释,我没有使用python,我使用Java。我将编辑我的答案。好的,我删除了我的注释,因为它不再适用。你能够重现OP的问题吗?