上位机软件开发教程qt(上位机软件用什么语言开发)

软件开发 1083
今天给各位分享上位机软件开发教程qt的知识,其中也会对上位机软件用什么语言开发进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、中控室的上位机曲线怎么改

今天给各位分享上位机软件开发教程qt的知识,其中也会对上位机软件用什么语言开发进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

中控室的上位机曲线怎么改

第二课 FZHOP硬件版上位机教程-曲线图(CP1H版) 原创

2021-01-18 22:30:27

cxbmsdn

码龄14年

关注

大家好,今天我给大家讲解下FZHOP硬件版曲线图的使用方法。

曲线图是我们工控行业经常使用的一种数据显示对象,可以方便的让工程人员了解到设备采集数据的变化过程。

我们的FZHOP硬件版上位机工具也具备强大的曲线图展示能力,下面我就来给大家讲讲。

首先我们打开配置工具

打开配置工具

然后我们选择 曲线图配置 页面

曲线图配置

可以看到有一个默认的曲线图对象以及存在于我们的配置页面中,这个就是我们的PLC实时曲线对象,用于实时显示采集到的PLC数据。

接下来我们就要新增曲线图对象了,点击新增曲线图按钮

新增曲线图

这时候我们就获得了一个新的曲线图对象(新的绘图源__44ff,这个44ff是绘图源的ID),如图:

新的曲线图对象

新的绘图源__44ff这个曲线图的名称是不符合我们的需求的。。我们得把他改改。

我们双击这个名称就可以进入编辑模式了

进入编辑模式

进入编辑模式后,我们就可以输入我们想要的曲线图名称,比如:测试曲线图1

修改曲线图名称

有了曲线图对象,我们就可以开始给这个对象添加属性了。FZHOP的曲线图对象分为实时曲线和XY曲线两种。

实时曲线图的横坐标是时间轴,纵坐标是我们绑定的采样源数据,主要用来表达数据和时间的关系。我们默认配置的PLC实时曲线对象就是一个实时曲线图,它包含了我们采集的2路编码器数据和4路模拟量数据通道。

XY曲线图则是由用户自己根据需求,从绑定的采样源数据通道中选择2个通道,分别配置到X轴和Y轴中进行绘图。主要用来表达选择的2个通道数据之间的关系。

实时曲线图配置:

我们将测试曲线图1配置为一个实时曲线,并为其添加数据通道

啊。我们的曲线图新增后默认就是实时曲线模式,所以不用做更改。。

所以我们直接去添加通道吧。

直接点击添加曲线通道按钮,就可以给我们的曲线图添加数据通道了。

添加曲线通道

(PS:FZHOP的采样数据流我也做下简单说明吧。FZHOP首先通过设备数据采集的回调函数,获取最原始的采样数据,然后这些采样数据会流入到我们的数据源中,数据源会根据配置通道,对设备采样数据进行筛选和处理,然后导入到我们的采样源中。如果采样源配置为设备采样模式,那么采样源获取的数据就会直接传入到绑定的曲线图绘制通道中,如果采样源配置为程序采样模式,则会把不同设备的采集数据同步后,再传入到绑定的曲线图绘制通道中。简单来说就是 设备数据(原始数据)-数据源(数据处理)-采样源(数据同步)-绘图源(曲线图))

添加曲线通道1

可以看到我们添加了曲线通道后,默认的都是时间通道,这个时候,我们就需要去编辑我们的通道了。其实很简单,就是双击通道名称,然后在弹出的下拉菜单里选择需要显示的通道名称即可。通道名称是在我们的数据源配置页面进行命名的

好了现在我们就完成了一个曲线图的主要配置。至于其他的时间轴格式、时间轴范围、数值轴上下限我们都可以不用去管。因为曲线图本身会根据数据进行自适应。我们尽量用少的参数去实现用户的需求,降低开发难度。

到这里我们还不能直接看到我们的曲线图,为什么呢?因为FZHOP上位机程序是一个先配置,后操作的程序。我们已经在配置工具里设置好了参数,但是如果没有将参数生成到我们的运行程序参数配置文件里,那么运行程序是不会加载我们现在配置的数据的。所以要想看到我们的配置效果,我们得先点击生成按钮,将我们的配置数据生成到运行程序参数配置文件里。

生成按钮

点击完生成按钮后我们就可以去运行程序看看效果了!!!

查看实时曲线

现在我们是不是就看到了我们刚才配置的曲线图呢!!配合FZHOP的实时动态布局功能,可以很方便的进行界面对象调整。

下面我们来看看XY曲线图配置。

XY曲线图配置:

我新增一个测试曲线图2对象,然后把它的模式配置为XY曲线,之后我把X通道配置为编码器1,把Y通道配置为模拟量1。

新增XY曲线

然后我们生成并运行看看效果!! 是不是很简单呢?我们的XY曲线库可以达到10万点的实时数据显示能力,这是个什么概念呢??按照现有的每秒100点的数据采集速度,我们的曲线图支持长达1000秒的数据写入时间。所以大家在设计自己的上位机程序的时候就不会有太多顾虑啦,直接在需要时启动曲线绘制,在测试结束时停止曲线绘制即可。

查看XY曲线图

之前忘了保存布局了。。。所以启动后界面没有变成前面配置的。。布局保存在菜单栏 布局菜单中

保存布局

defulat.Layout文件就是我们的程序启动布局文件,如果要让程序启动就显示当前布局,那么就把布局文件保存为这个文件就可以了

今天的课程就给大家介绍到这里啦,有没太清楚的同学可以加QQ群209783211,在里面提问我会详细解答哦。

打开CSDN APP,看更多技术内容

工业级串口Modbus数据绘制曲线及上位机监控软件DotTrend

工业级串口Modbus数据绘制曲线及上位机监控软件DotTrend 1. 软件概述 DotTrend是一款全新设计开发的软件(原创),理论上可用于监控所有遵守Modbus标准协议的设备,便于开发、测试和服务人员获取设备数据并进行分析。本软件支持Modbus RTU(RS485...

继续访问

C#上位机源代码,采集西门子200smart温度数据并显示波形曲线

C#上位机源代码,采集西门子200smart温度数据并显示波形曲线,温度到达上限值或下限值进行报警提示。 采集的数据每天生成一个excel报表,全套源代码

继续访问

接收串口数据并进行处理和画图上位机软件

可以接收串口数据,将16进制转化10进制,并用列表显示所有数据的 应力和沉降量 在测试数据里,可以根据接收到的数据,显示所有数据的序号,选择相应的序号值,可以看出对应的 应力和沉降量。 计算出了 a0 a1 a2的系数 画出了图 实现了打开和保存功能。格式为txt文件,保存的是原始数据。 增加保存预览,完全 可以打印 到这里程序基本完成,但是还有好多需要完善的地方。 入门的可以看看

第四课 FZHOP硬件版上位机教程-曲线图-波峰波谷取值(CP1H版)

大家好,前面我们了解了FZHOP硬件版的动作步操作方法(不熟悉的同学可以先回去看看第三课),现在我们可以来继续我们的曲线图学习了 在工业应用控制中,我们经常需要对曲线的波峰或者波谷的峰值进行计算,用于和产品参数进行比对,以判断产品是否合格。 今天我们就来看看FZHOP硬件版如何实现这个操作吧。 首先我们启动应用程序 如图所示: 这里需要说明一下,我们的曲线操作都是针对XY曲线图对象进行的,所以我们以XY曲线图《测试曲线图2》进...

继续访问

VS上位机开发——曲线显示_柒壹漆的博客_visualstudio...

如:LineItem myCurve = myPane.AddCurve(“曲线1”, list1, Color.Red, SymbolType.Circle); 四、程序打包 在VS里面调试需要依赖VS的环境,但是我们做好的上位机实际运行的环境可能并没有安装VS,因此需要把调试好的软件打包成通用的...

继续访问

c#实现上位机数据采集的项目总结_不知今夕何夕的博客_上位机...

使用modbus协议,PLC基本不用写通讯程序,而上位机可以直接自己确认对方是否收到数据,再确认是否给对方重发一次。这个项目只要求采集数据,因为读取的频率高于数据变化,所以偶尔读不到都不影响,使用modbus就更合适了。

继续访问

读取串口数据并画实时曲线的VC++程序源码 上位机源码

读取串口数据并画实时曲线的VC++程序源码 上位机源码

上位机源码--读取串口数据并画实时曲线的vc++源程序

上位机源码--读取串口数据并画实时曲线的vc++源程序,自己做的一点小小的尝试,有实例代码,在vc6下编译通过希望对大家学习有帮助。

热门推荐 VS2015编写的MFC上位机,波特率可调,可动态显示曲线,可显示三维

近期做一个项目正好涉及MFC编写串口上位机,主要用于动态显示曲线和陀螺仪三维信息,想做飞思卡尔或者四旋翼的小伙伴可以借鉴一下,首先贴个结果图: 下面来简单讲解一下这个上位机的核心步骤: 1、首先新建一个串口通信的程序,网上的示例代码有很多,详细的教学文档下载: 2、自动搜索可用串口 ...

继续访问

C-V测试仪中上位机串口采集数据采集

if(fd.DoModal()==IDOK) { m_filename=fd.GetPathName(); CFile datafile; datafile.Open(m_filename,CFile::modeCreate|CFile::modeReadWrite); datafile.Write("编号 电压值 电容值/

继续访问

qt上位机,将下位机发送数据解码显示实时曲线

为同学写的上位机,用于调试参数,观察采集信息变化状态。

继续访问

第一课 FZHOP硬件版上位机简介(CP1H版)

大家好,今天我给大家推荐一款非常易用和强大的上位机产品,FZHOP硬件版(CP1H版)。 为什么叫CP1H版呢?其实就是基于欧姆龙CP1H-XA-40DT这款PLC而开发的上位机开发工具。 熟悉CP1H-XA-40DT这款PLC的朋友都知道,这个PLC非常的简单易用,且功能配置丰富。 这款PLC具备4路运动控制(100K脉冲输出和100K脉冲输入功能)、4路12000分辨率的模拟量采集功能(电压电流都能采)、2路模拟量输出控制、24路数字输入端口、16路数字输出端口,然...

继续访问

最新发布 第五课 FZHOP硬件版上位机教程-曲线图-拐点取值(CP1H版)

大家好,上次我们学习了曲线图波峰波谷取值算法,今天我们来学习下工控行业用得比较多的拐点取值。 好了废话少说,直接打开软件导入 《找拐点测试曲线.xlsx》 导入找拐点测试曲线 然后我们直接进入动作步界面,新建根节点和动作子节点 新建动作步节点 现在我们选中 节点 找拐点 然后点击鼠标右键,在右键菜单中选择编辑动作步,然后按如下步骤找到拐点取值功能指令:动作步编辑页面-模块选择-功能曲线-功能指令-...

继续访问

第三课 FZHOP硬件版上位机教程-动作步操作(CP1H版)

大家好,上期给大家介绍了FZHOP硬件版的曲线图功能,本来这期我打算讲解曲线图的一些应用方法,然后发现得先让大家学会动作步操作,才能继续后面的一些教学了。 那么我们就来了解下FZHOP硬件版的动作步如何操作吧 首先打开配置工具,然后运行我们的应用程序并切换到动作步界面 动作步界面里面会多了2个曲线图!!这是由于我们之前添加的曲线图,只对defulat.Layout文件进行了布局配置,而其他的布局文件没有对这2个曲线图进行配置,所以我们切换界面...

继续访问

C#写上位机中写曲线图的知识点(VS2019-WPF)

最近在写一个上位机,为了与下位机软件串口进行通信以及一些数据的形象显示,做到曲线图这一块的时候出现了一些问题,我用的是VS2019(个人不能吐槽VS2019新版本,因为平时也

上位机开发

就目前就业市场来看,不管上位机,还是下位机,应用程序领域的人才需求总是最大的。

做测试软件其实不一定需要用 c#,假如你对c/c++开发比较熟,那直接用 MFC 等写些

对话框应用就好了,测试软件不至于会太复杂。另外假如 c/c++ 通了,C#之类的不要

太简单。

对于做工作来说的话,除非你已经走在自己已经认准的那条道上了。否则你还是兵来将

挡,水来土掩的好。任何时候,有任何需要,你凭借自己的基础稍做学习都能立马上手。

还有一点,不是说你今天或者这几个月做了 c# ,后面几年时间你就必须得用它来吃饭了。

做c#的过程也许只是你长期职业追求中的一个插曲而已,对于增加知识面也有好处。

怎么学Qt,我的终极目标是用Qt编写一个上位机界面就行了,有没有高手指点下,怎么学,用什么书容易上手?

不知道 上位机界面 是什么东东. 我讲讲我学Qt, 我安装编译完库之后, 库里会有很多demo例子. 把那些例子跑跑, 浏览下我关心的功能的源代码. 然后自己想想自己需要的功能大概要用到哪些组件. 把那几个相关的例子和相关组件的文档仔细的看看, 就差不多可以写出来了.

假如你基础还不错的话, 可以参考下.

正点原子linux开发板怎么调试

ui

正点原子Linux开发板——Qt串口上位机实验

门牙会稍息

原创

关注

3点赞·53人阅读

前言:

最近在学习嵌入式qt开发,然后跟着教程编写了一个简单的串口上位机程序,在编写的时候还算比较顺利,但在调试的时候花了点功夫,折腾了一下午。最后还是理清了思路,解决了问题,特写此博客进行记录和总结。

串口上位机界面设计:

整个软件的界面我都是用ui来设计的,其实也可以用代码,但是想了想有好多布局相互嵌套比较麻烦。最后就使用了ui界面来设计。

ui界面设计

串口上位机程序功能设计:

然后像串口对象初始化,槽函数,一些逻辑关系都用代码来实现,头文件就只有一些变量、槽的定义。

头文件

#include "widget.h"

#include "ui_widget.h"

#include QMessageBox

Widget::Widget(QWidget *parent)

: QWidget(parent)

, ui(new Ui::Widget)

{

ui-setupUi(this);

//lcd屏的分辨率是1024X600

this-setFixedSize(QSize(1024, 600));

//new 一个QSerialPort对象

serialPort = new QSerialPort(this);

//通过foreach语句将windows或imx6ull可用串口识别出来,并添加至对应的下拉选择框

QStringList serialList;

foreach(const QSerialPortInfo info, QSerialPortInfo::availablePorts()){

serialList += info.portName();

}

ui-comboBox-addItems(serialList);

//设置串口的信号与槽

connect(serialPort, SIGNAL(readyRead()), this, SLOT(readData()));

}

Widget::~Widget()

{

delete ui;

}

void Widget::on_radioButton_clicked(bool checked)

{

//点击“打卡串口”button之后的一些串口配置操作,和一些逻辑关系

if(checked){

//设置串口端

serialPort-setPortName(ui-comboBox-currentText());

//设置波特率

serialPort-setBaudRate(ui-comboBox_2-currentText().toInt());

//设置停止位

serialPort-setStopBits(QSerialPort::StopBits(ui-comboBox_4-currentText().toInt()));

//设置数据位

serialPort-setDataBits(QSerialPort::DataBits(ui-comboBox_6-currentText().toInt()));

//设置校验位

switch(ui-comboBox_5-currentIndex()){

case 0:

serialPort-setParity(QSerialPort::Parity::NoParity);

break;

case 1:

serialPort-setParity(QSerialPort::Parity::EvenParity);

break;

case 2:

serialPort-setParity(QSerialPort::Parity::OddParity);

break;

case 3:

serialPort-setParity(QSerialPort::Parity::SpaceParity);

break;

case 4:

serialPort-setParity(QSerialPort::Parity::MarkParity);

break;

default:

break;

}

serialPort-setFlowControl(QSerialPort::NoFlowControl);

if(!serialPort-open(QSerialPort::ReadWrite)){

QMessageBox::about(this, "串口打开错误提示", "可能被占用了");

return;

}

//打开串口之后其他的选择按钮设置成不可用

ui-comboBox-setEnabled(false);

ui-comboBox_2-setEnabled(false);

ui-comboBox_4-setEnabled(false);

ui-comboBox_5-setEnabled(false);

ui-comboBox_6-setEnabled(false);

ui-radioButton-setText("关闭串口");

}

else{

serialPort-close();

ui-comboBox-setEnabled(true);

ui-comboBox_2-setEnabled(true);

ui-comboBox_4-setEnabled(true);

ui-comboBox_5-setEnabled(true);

ui-comboBox_6-setEnabled(true);

ui-radioButton-setText("打开串口");

}

}

void Widget::readData()

{

//将串口中的数据打印到textBrowser中

ui-textBrowser-insertPlainText(serialPort-readAll());

}

void Widget::on_pushButton_clicked()

{

//点击“发送”button之后,将textEdit中的内容写入串口

serialPort-write(ui-textEdit-toPlainText().toUtf8());

}

void Widget::on_pushButton_2_clicked()

{

//清屏操作

ui-textEdit-clear();

ui-textBrowser-clear();

}

登录后复制

在windows端编写好程序之后,将工程文件发送到ubuntu进行qmake、make最后通过scp将ARM的可执行文件发送到开发板,接下来就是验证了

我用的是正点原子出厂的系统,所以在验证的时候需要使用到一个串口来连接到开发板执行编写好的上位机程序,所以一个串口就被占用了,正点原子教程视频就用开发板的另一个串口来进行测试

正点原子教程测试方式

因为放假回了家,我也没有带太多的东西,usb转ttl模块放在了学校。所以我在想怎么就用一个串口来完成实验。困扰我的就是唯一的一个串口必须留个上位机,然后要怎么执行开发板上的串口上位机程序?最初我想到了可以使用网络通过Xshell远程连接到开发板就可以执行,唯一的串口就拿来验证。

解决完上位机软件怎么在imx6ull上执行的问题,接下来就是验证了。验证的时候又出现了一些问题,上位机软件不像想象的那样一边发数据,一边就接收对应的数据,而出现了一些imx6ull的信息,好像还可以输入命令,感到非常奇怪。

我以为我的软件有问题,就在windows上换了一个串口软件,结果还是出现了类似的情况

最后也是在不断猜想和测试之后找到了原因,就是应因为我在给开发板上电的时候接入了串口线,然后先打开了windows上的串口,然后就使用到了串口,导致就相当于有一个串口控制imx6ull开发板,像Xshell中通过串口连接开发板一样。然后我尝试在windows的上位机软件输入命令想打开一个qt程序,最后也是成功打开证实了猜想

执行./list命令打开了蛇姐list程序(qt程序的路径是/home/root/qt_project/list)

如果想要实现实验最初windows和imx6ull两个上位机互换数据的效果的话。要先通过windows中的上位机软件输入命令来打开imx6ull的上位机软件,这样相当于windows中的上位机连接的就是imx6ull的上位机了,而不是直接控制imx6ull了,之后就可以正常收发数据了。

总结:

学了qt快半个月了,这个串口上位机算是一个比较综合的练习了,结合了ui和代码设计。加上最后的调试也是收获颇多,如果有usb-ttl模块的话验证步骤就会更简单。

qt stm32上位机串口通信

1、首先,新建一个Qt项目:文件--新建文件。

2、然后,点击-- choose。

3、再然后,全部下一步到完成。

4、成功建立一个Qt:Widgets Application。

5、然后,新建一个管理SerialPort的类:右击项目名字--添加新文件--弹出。

6、选择C++ Class。点击:choose--弹出如下框: 并填写--点击下一步---点击完成。

想学习QT,用在机电设备方面的上位机,比如运动控制卡、图像采集卡等的编程,给点建议吧,谢谢!

个人感觉QT的执行效率不是特别高,如果用在上位机,对实时性要求比较高的场合还是不推荐使用的,一般采用qt都是因为可视化比较好,但是工程上一般要求控制品质和精度,光有外表华丽是不行的。

如果要学习qt,如果有一些MFC开发经验那就很容易入手,毕竟这种集成化开发环境都是大同小异的。如果没有经验,那么就从头学起吧,最好找一些有样例的教材,一步一步的学习,千万别着急,要脚踏实地,一步一步就可以实现你的梦想了!

关于上位机软件开发教程qt和上位机软件用什么语言开发的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

扫码二维码