Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
串行python到arduino_Python_Arduino_Serial Port_Pyserial - Fatal编程技术网

串行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

我想用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 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的问题吗?