Arduino Python3 脚本

2024-02-03

我正在尝试使用 Python3 脚本来控制 Arduino Mega。这是一个简单的脚本,用于从键盘获取一行并通过 Arduino 回显它。我从一个可用的 Python 2 脚本开始http://petrimaki.wordpress.com/2013/04/28/reading-arduino-serial-ports-in-windows-7/ http://petrimaki.wordpress.com/2013/04/28/reading-arduino-serial-ports-in-windows-7/。我似乎无法获取发回的字符,这可能是格式问题。

这是格式问题吗? unicode 转 ASCII 问题? 如何使用 Python 3 和 pySerial 读取/写入二进制/十六进制数据和 ASCII 文本? 欢迎对 Python 新手提出任何建议。

Python 3 脚本:

import serial
import time

ser = serial.Serial('COM8', 9600, timeout=0)
var = input("Enter something: ")
print(var)
ser.write(bytes(var.encode('ascii')))
while 1:
    try:
        print(ser.readline())
        time.sleep(1)
    except ser.SerialTimeoutException:
        print(('Data could not be read'))

Arduino代码:

int incomingByte=0;

void setup() {
  // Open serial connection.
  Serial.begin(9600);
}

void loop() {
  if (Serial.available() > 0) {
    // Read the incoming byte.
    incomingByte = Serial.read();

    // Echo what you got.
    Serial.print("I got: ");
    Serial.println(incomingByte);
  }
}

输入: 敏捷的红狐

Output:

b''
b'I got: 84\r\n'
b'I got: 104\r\n'
b'I got: 101\r\n'

等等。


bytes(var.encode('ascii'))似乎没有必要,只需使用.encode()方法或bytes()功能,两者都不需要。您还可以使用.decode()关于您收到的数据。

例外情况serial.SerialTimeoutException is 写入超时时引发 http://pyserial.sourceforge.net/pyserial_api.html#serial.SerialTimeoutException,与读书无关。

在 Arduino 代码中,尝试使用串行.write() http://www.arduino.cc/en/Serial/Write将数据发送回来。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Arduino Python3 脚本 的相关文章

随机推荐