我正在尝试从 python 串行端口发送一个简单的位到 arduino uno。
import time
import serial
ser = serial.Serial(
port=5,
baudrate=9600,
parity=serial.PARITY_ODD,
stopbits=serial.STOPBITS_TWO,
bytesize=serial.SEVENBITS
)
out=''
input=119
input= chr(input)
ser.write(input)
while ser.inWaiting() > 0: # reading input from the serial port
out += ser.readline()
if out != '':
print "output from arduino is:" + out# printing the output from the serial port
在Arduino中代码是这样的:
void serialEvent() // called every time a command is recieved on the serial port
{
unsigned char input;
input= Serial.read();
Serial.println(input,BIN);
}
119 的二进制表示为:01110111 这行代码的输出是-11110111 所以看来arduino如何将MST位(8位)从0更改为1。 知道为什么吗?是因为 Unicode 还是编码?感谢您的帮助!
最佳答案
行:
bytesize=serial.SEVENBITS
...建议您只能发送 7 位字节,因此 Arduino 将添加第 8 位。
只需丢弃 Arduino 代码中的第 8 位即可。
关于python - 发送到arduino uno的pyserial python中的MSB(最高有效位)已损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31898155/