如何将Python3中的整数(使用Tkinter中的scale)发送到Arduino并返回正确的整数
我的Python 3代码:如何将Python3中的整数(使用Tkinter中的scale)发送到Arduino并返回正确的整数,python,arduino,Python,Arduino,我的Python 3代码: 从tkinter导入* 导入序列号 导入结构 ser=串行。串行('COM4',9600)#与端口建立连接 root=Tk() 根几何体('500x500+50+50') root.title('ARDIUNO LED滑块') ################################## def打印值(val): #struct.pack('>B',45)#尝试了这个方法,但没有成功 ser.write(str(val.encode()) 打印(ser.rea
从tkinter导入*
导入序列号
导入结构
ser=串行。串行('COM4',9600)#与端口建立连接
root=Tk()
根几何体('500x500+50+50')
root.title('ARDIUNO LED滑块')
##################################
def打印值(val):
#struct.pack('>B',45)#尝试了这个方法,但没有成功
ser.write(str(val.encode())
打印(ser.readline())
###############################
#请注意,要将from选项作为关键字参数传递,
#您需要添加一个尾随下划线(from是Python中的保留关键字)。
w=比例(根,从0到100,长度=400,方向=水平,命令=打印值)
w、 组件(侧=顶部,锚=S)
root.mainloop()
我的Arduino代码:这是在Uno上完成的Arduino代码
void setup(){
//将安装代码放在此处,以便运行一次:
Serial.begin(9600);
引脚模式(led,输出);//将引脚9声明为o/p
}
void循环(){
//将主代码放在此处,以便重复运行:
如果(Serial.available()>0){//在串行监视器中查找数据的可用性
data=Serial.read();//从串行监视器读取数据
//Serial.println(int(data));
串行写入(数据);
延迟(100);
}
}
我得到的错误是:
raisetypeerror('不支持unicode字符串,请将其编码为字节:{!r}'。格式(seq))
TypeError:不支持unicode字符串,请将其编码为字节:“10”
//即使是这种方法,在我的情况下,当我在python中创建串行时使用timeout=1 arg时,我也尝试了它没有帮助。我得到的输出是这样的///-->b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',但我希望返回相同的数字,指示您从python将val写入控制台,并准确地看到它想要什么发送到序列号。此外,串行通信在线也会带来麻烦,不确定SCALE是如何工作的。。但我认为每次移动滑块1像素时,python都必须经历发送和接收串行数据的非常缓慢的过程。这可能就是它挂起的原因。当滑块移动时,您应该设置一个变量(例如,将值推到堆栈上),并将该变量并行发送到串行连接。@jeffUK在prev命令中输入的hexa o/p如何,同时设置超时为1???如果打印(val)。。你会看到什么也被发送到arduino;如果您发送的是x00,那么它工作正常,问题在于python。。。无论哪种方式,它都有助于确定问题所在。