您好!欢迎光临工博士商城

优傲机器人代理

产品:83    
联系我们
UR优傲机器人联系方式
  • 联系人:邹工 
  • 电话:13122496309
  • 邮件:zoulei@gongboshi.com
  • 手机:13122496309
新闻分类
首页 > 优傲机器人新闻中心 > UR5机器人学习之TCP/IP通讯--UR协作机器人
优傲机器人新闻中心
UR5机器人学习之TCP/IP通讯--UR协作机器人
发布时间:2022-07-22        浏览次数:883        返回列表
 ***近因为项目原因在研究UR机器人,主要是通过PC上位机与UR通讯,采用TCP/IP通讯的方式,PC上位机通过发送UR脚本指令实现控制机器人和操作机器人。
 
IP地址:可以根据UR机器人控制终端读取到IP地址
 
端口:端口取30001或者30002或者30003,(本实验使用的是30002端口)
 
脚本指令可以直接从官网下载,也可以从相关CSDN帖子材料中获得,或者联系我QQ:476596998
 
服务器:UR5
 
客户端:PC上位机
 
注意事项:
 
1、连接好时,URScript 程序或命令以清晰文本形式在每一个 socket 端口发送。每行均以“\n”结束。在编程的时候务必确定***终发送的文本中的格式为:命令(参数)\n
 
本人是以QT5.6来编写的上位机程序:如下所示:
 
界面:
 
 
 
mainwindow.cpp文件:
 
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "qmessagebox.h"
#include "qhostaddress.h"
#include "qbytearray.h"
#include "qpalette.h"
 
#pragma execution_character_set("utf-8")
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    Init();
}
 
MainWindow::~MainWindow()
{
    delet ui;
}
 
void MainWindow::Init()
{
    mysocket = new QTcpSocket(this);
    ui->comboBox_Protocol->insertItem(0,"TCPSever");
    ui->comboBox_Protocol->insertItem(1,"TCPClient");
    ui->pushButton_DisLink->setDisabled(true);
 
 
    connect(ui->pushButton_Link,SIGNAL(clicked(bool)),this,SLOT(do_pushButtonLink_clicked(bool)));
    connect(ui->pushButton_DisLink,SIGNAL(clicked(bool)),this,SLOT(do_pushButtonDisLink_clicked(bool)));
    connect(ui->pushButton_SendData,SIGNAL(clicked(bool)),this,SLOT(do_pushButtonSendData_clicked(bool)));
    connect(ui->pushButton_ClearReceive,SIGNAL(clicked(bool)),this,SLOT(do_pushButtonClearReceive_clicked(bool)));
    connect(ui->pushButton_ClearSend,SIGNAL(clicked(bool)),this,SLOT(do_pushButtonClearSend_clicked(bool)));
}
 
 
void MainWindow::do_pushButtonClearSend_clicked(bool)
{
    ui->textEdit_SendField->clear();
}
 
void MainWindow::do_pushButtonClearReceive_clicked(bool)
{
    ui->textEdit_ReceiveField->clear();
}
 
 
void MainWindow::do_pushButtonSendData_clicked(bool)
{
    if(ui->textEdit_SendField->toPlainText().isEmpty())
    {
        return;
    }
 
    QString sendText = ui->textEdit_SendField->toPlainText()+"\n";
    mysocket->write(sendText.toLocal8Bit());
 
    ui->textEdit_ReceiveField->append(sendText);
    ui->textEdit_SendField->clear();
}
 
 
void MainWindow::do_pushButtonDisLink_clicked(bool)
{
    mysocket->disconnect();
    mysocket->close();
    ui->pushButton_DisLink->setDisabled(true);
    ui->pushButton_Link->setDisabled(false);
}
 
void MainWindow::do_pushButtonLink_clicked(bool)
{
    if(ui->lineEdit_IPAddr->text().isEmpty())
    {
        QMessageBox::information(this,"提示:","IP地址不能为空");
        return;
    }
    if(ui->lineEdit_Port->text().isEmpty())
    {
        QMessageBox::information(this,"提示","端口号不能为空");
        return;
    }
 
    myIPAddress = (QHostAddress)ui->lineEdit_IPAddr->text();
    myIPPort = ui->lineEdit_Port->text().toUInt();
 
    mysocket->connectToHost(myIPAddress,myIPPort);
    if(!mysocket->waitForConnected())
    {
        QMessageBox::information(this,"提示:","连接失败,请重新连接》》》");
        return;
    }
 
    ui->pushButton_Link->setDisabled(true);
    ui->pushButton_DisLink->setDisabled(false);
    connect(mysocket,SIGNAL(readyRead()),this,SLOT(do_mysocket_readyRead()));
    connect(mysocket,SIGNAL(connected()),this,SLOT(do_mysocket_connected()));
 
}
 
void MainWindow::do_mysocket_connected()
{
    ui->pushButton_Link->setBackgroundRole(QPalette::Window);
}
 
void MainWindow::do_mysocket_readyRead()
{
    QByteArray receiveText = mysocket->readAll();
    ui->textEdit_ReceiveField->append(QString("获得的字节数:%1").arg(mysocket->bytesAvailable()));
    ui->textEdit_ReceiveField->append(QString("所获得的数据:"+receiveText.tohe().toUpper()));
 
    //QByteArray receiveLine = mysocket->readLine(1024);
    //ui->textEdit_ReceiveField->append((QString)receiveLine.tohe());
    //ui->textEdit_ReceiveField->append("\n");
}
 
mainwindow.h文件:
 
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include
#include "qtcpsocket.h"
#include "qhostaddress.h"
 
 
 
#pragma execution_character_set("utf-8")
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
public://设定全局变量:
    QTcpSocket *mysocket;
    QHostAddress myIPAddress;
    quint16 myIPPort;
 
 
public://设定全局函数:
    void Init();
 
 
 
public slots:
    void do_pushButtonLink_clicked(bool);
    void do_mysocket_readyRead();
    void do_pushButtonDisLink_clicked(bool);
    void do_pushButtonSendData_clicked(bool);
    void do_pushButtonClearSend_clicked(bool);
    void do_pushButtonClearReceive_clicked(bool);
    void do_mysocket_connected();
 
 
private:
    Ui::MainWindow *ui;
};
 
#endif // MAINWINDOW_H
 
main.cpp文件
 
#include "mainwindow.h"
#include
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
 
    return a.exec();
}
工程文件:URClient.pro
 
#-------------------------------------------------
#
# Project created by QtCreator 2019-09-06T15:53:17
#
#-------------------------------------------------
 
QT       += core gui network
 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
TARGET = URClient
TEMPLATE = app
 
 
SOURCES += main.cpp\
        mainwindow.cpp
 
HEADERS  += mainwindow.h
 
FORMS    += mainwindow.ui
 
发送的命令实例:
 
movej([0.244,-2.25,-0.89,-3.19,0,0],a=0.1,v=0.1,t=0,r=0)
 
注意:以上实例中“\n”已经被内嵌入程序中,可以去程序中查找
————————————————
更多详情:UR协作机器人



 

联系热线:13122496309 联系人:邹工 联系地址:上海市宝山区富联一路98弄6号

技术和报价服务:星期一至星期六8:00-22:00 优傲机器人代理

返回
顶部