Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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 3.x Arduino Python 3脚本_Python 3.x_Serial Port_Arduino_Pyserial - Fatal编程技术网

Python 3.x Arduino Python 3脚本

Python 3.x Arduino Python 3脚本,python-3.x,serial-port,arduino,pyserial,Python 3.x,Serial Port,Arduino,Pyserial,我正在尝试使用Python3脚本来控制Arduino Mega。这是一个简单的脚本,可以从键盘上提取一行代码,并通过Arduino将其回显。我从一个可以工作的Python2脚本开始。我似乎无法获取我发回的字符,这可能是一个格式问题 这是格式问题吗?unicode到ASCII问题? 如何使用Python3和pySerial读取/写入二进制/十六进制数据和ASCII文本? 欢迎为Python新手提供任何建议 Python 3脚本: import serial import time ser = s

我正在尝试使用Python3脚本来控制Arduino Mega。这是一个简单的脚本,可以从键盘上提取一行代码,并通过Arduino将其回显。我从一个可以工作的Python2脚本开始。我似乎无法获取我发回的字符,这可能是一个格式问题

这是格式问题吗?unicode到ASCII问题? 如何使用Python3和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);
  }
}
输入: 敏捷的红狐

输出:

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

字节(var.encode('ascii'))
似乎没有必要,只需使用
.encode()
方法或
字节()
函数,两者都不需要。您还可以对接收到的数据使用
.decode()

异常
serial.SerialTimeoutException
与读取无关


在Arduino代码中,尝试使用发送回数据。

您收到消息时,他们只是打印代码点,而不是字符。ASCII 84是
T
,104是
h
,101是
e
。您知道返回ASCII的语法吗?