pyserial和Arduino的串口通讯问题

一、问题起因

在尝试网上N多种Arduino和pyserial的串口通讯的过程中,电脑发送命令给Arduino后,串口始终接收不到来自Arduino的数据,偶然翻到一篇英语教程时,看到一个带了双端代码的教程,索性试了一下,发现竟然通讯成功了,教程原帖:原文

二、解决方式

待定思路:有可能是这种方式发送数据需要串口初始化一下,而这需要一定时间,所以一个Python端中来一个sleep非常重要,目前测试nano板子需要至少2秒,mega2560需要1秒左右。

三、源码

Python端代码:

import serial
from time import sleep

# 注意换端口和波特率
ser = serial.Serial(port="COM5", baudrate=9600)

sleep(2) # 就是这里解决了通讯失败的问题!!!!!!!!!

write_len = ser.write(b'1') #板子上的灯会亮,改成0会灭

output = ser.readline(ser.inWaiting())
print(output)

ser.close()

Arduino代码:

int incomingData;

void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite (LED_BUILTIN, LOW);
  Serial.write("Press the button to control LED (Message from Arduino");
}

void loop() {
  while (Serial.available()) {
    incomingData = Serial.read();
    if (incomingData == '1') {
      digitalWrite (LED_BUILTIN, HIGH);
      Serial.write("LED Turned ON");
    }
    if (incomingData == '0') {
      digitalWrite (LED_BUILTIN, LOW);
      Serial.write("LED Turned OFF");
    }
  }
}
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值