Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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
如何将Python3中的整数(使用Tkinter中的scale)发送到Arduino并返回正确的整数_Python_Arduino - Fatal编程技术网

如何将Python3中的整数(使用Tkinter中的scale)发送到Arduino并返回正确的整数

如何将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

我的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.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。。。无论哪种方式,它都有助于确定问题所在。