python 串口连接 arduino 返回 b'x12'或者b'xff'

arduino 板发送到PC是可以的接受到。用PC发送到arduino 板上,然后arduino 再把接受消息返回到PC。PC打印出来。

arduino 板每次返回都不是正确数字。刚开始是python字符格式问题,很快解决。就是代码返回数据不正确。最后好了。附上正确代码。不知道是不是加载了Firmata这个库的原因。

#include <Boards.h>
#include <Firmata.h>
#include <FirmataConstants.h>
#include <FirmataDefines.h>
#include <FirmataMarshaller.h>
#include <FirmataParser.h>

String comdata = "";
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(2,OUTPUT);
}

void loop() {
//  Serial.println(Serial.available());
//  Serial.println("aaa");
   while (Serial.available() > 0)  
    {
        comdata += char(Serial.read());
        delay(2);
    }
    
    if (comdata.length() > 0)
    {
        Serial.println(comdata);
        comdata = "";
    }
//    else{
//      Serial.println("1111");
//      delay(100);
//     }

}

上图是arduino

import serial
import time


print("Trying...", "COM3")
arduino = serial.Serial("COM3", timeout=5)
i = 1
while i<16:

	arduino.write("akuloll".encode('utf-8'))

	# time.sleep(1)
	data_return = arduino.readline().strip().split()
	print(data_return)
	# print(data_return[0] == b'1111')
	# if data_return:
	if data_return:
		print(data_return)
		print('into else', data_return)
	else:
		pass
		# print(arduino.readline().strip().split())

	print('i=',i)
	i+=1

上面是python代码。

我电脑是com3口。

错误代码就不上传了。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,让我来回答你的问题。 首先,我们需要将ESP8266与Arduino连接起来。你可以将ESP8266的TX引脚连接Arduino的RX引脚,ESP8266的RX引脚连接Arduino的TX引脚。另外,还需要将ESP8266的地线连接Arduino的地线。 接下来,我们需要在Arduino中编写代码,以便通过硬串口与ESP8266进行通信。我们可以使用SoftwareSerial库将一个软串口连接Arduino的GRBL硬串口上。你可以按照以下代码进行修改: ```c++ #include <SoftwareSerial.h> SoftwareSerial espSerial(10, 11); // RX, TX void setup() { Serial.begin(115200); espSerial.begin(115200); } void loop() { if (espSerial.available()) { Serial.write(espSerial.read()); } if (Serial.available()) { espSerial.write(Serial.read()); } } ``` 在这个例子中,我们使用了SoftwareSerial库创建了一个名为espSerial的软串口,并将其连接Arduino的GRBL硬串口上。然后,在主循环中,我们检查软串口和硬串口上是否有可用数据。如果有,我们就把数据从一个串口传输到另一个串口。 接下来,我们需要在ESP8266中编写代码来接收Arduino发送的GRBL串口数据。你可以按照以下代码进行修改: ```c++ #include <SoftwareSerial.h> SoftwareSerial espSerial(2, 3); // RX, TX void setup() { Serial.begin(115200); espSerial.begin(115200); } void loop() { if (espSerial.available()) { Serial.write(espSerial.read()); } if (Serial.available()) { espSerial.write(Serial.read()); } } ``` 在这个例子中,我们使用了SoftwareSerial库创建了一个名为espSerial的软串口,并将其连接到ESP8266的RX和TX引脚上。然后,在主循环中,我们检查软串口上是否有可用数据。如果有,我们就把数据发送到ESP8266的串口上。 最后,你需要在ESP8266中使用AT指令将串口数据发送到网络上。具体的实现方式可以参考ESP8266的AT指令手册。 希望这个回答对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值