Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/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
如何用Python GUI控制Arduino程序?_Python_User Interface_Arduino_Pyqt_Pyqt5 - Fatal编程技术网

如何用Python GUI控制Arduino程序?

如何用Python GUI控制Arduino程序?,python,user-interface,arduino,pyqt,pyqt5,Python,User Interface,Arduino,Pyqt,Pyqt5,我需要帮助了解如何使用Python GUI控制Arduino程序。这是我的第一个涉及用户界面设计和Arduino的项目,所以我不知道从哪里开始这个任务。任何开始的提示或帮助都将不胜感激 Arduino程序提供给我,我关注的主要功能包括移动多个电机来控制平台。到目前为止,我已经使用PyQt5 GUI设计器创建了一个基本GUI,它允许在平台的x、y和z方向上移动 我首先想弄清楚如何执行一个简单的命令,例如首先使用Python GUI将平台设置为“主”位置(x、y和z值设置为0) 这是Arduino计

我需要帮助了解如何使用Python GUI控制Arduino程序。这是我的第一个涉及用户界面设计和Arduino的项目,所以我不知道从哪里开始这个任务。任何开始的提示或帮助都将不胜感激

Arduino程序提供给我,我关注的主要功能包括移动多个电机来控制平台。到目前为止,我已经使用PyQt5 GUI设计器创建了一个基本GUI,它允许在平台的x、y和z方向上移动

我首先想弄清楚如何执行一个简单的命令,例如首先使用Python GUI将平台设置为“主”位置(x、y和z值设置为0)

这是Arduino计划中的代码,我相信它与将平台设置为“主”位置有关:

void goHome(){  
  setPos(arr0);
  if (altech == 1) { moveDiffSpd(servo_pos, spdOld); }
  if (altech == 2) { moveBresenham(servo_pos, spdOld); }
  getSerPos0(servo_pos);
}

void presetHome(){ 
  setPos(arr0);
  // Return directly to HOME position
  for (int i=0; i<6; i++){
    if (Dynamixel.readPosition(i+1)!=servo_pos[i]) { 
Dynamixel.moveSpeedRW(i+1,servo_pos[i],spdOld);  }
  }
  Dynamixel.action();
  getSerPos0(servo_pos);
}
void goHome(){
setPos(arr0);
如果(altech==1){moveDiffSpd(伺服位置,spdOld);}
如果(altech==2){moveBresenham(伺服位置,spdOld)}
getSerPos0(伺服位置);
}
void presetHome(){
setPos(arr0);
//直接返回原位

对于(int i=0;i要启动dialog arduino python程序,必须使用python中的串行库,如下所示:

import serial
创建串行实例并将其打开后:

arduino = serial.Serial(port='COM3', baudrate=9600,timeout=0 );// adapt your serial number port
arduino.open()
您可以使用以下命令从arduino读取数据:(arduino使用Serial.print或Serial.println将数据发送到python

while arduino.inWaiting() > 0:
  message = arduino.read(1)
要将数据从python发送到arduino,可以使用write函数

arduino.write('x')
用flush清除串行缓冲区

arduino.flush()
最后关闭序列号:

arduino.close()

你已经有了开始的基础……

嘿,Ryan,正如你自己描述的那样:你想写一个“接口”。因此,你说,已经有了一个接口(按“H”可以做些什么),你只想把你的GUI放在该接口之上。所以,你已经明白了,你想发送那些“命令”从GUI.buttons。因此,尝试通过按钮onClick处理程序中的串行接口发送字符“H”。python中的串行通信非常简单。只需通过谷歌搜索即可:)祝你好运