QT上位机开发(网络程序界面开发)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        传统的上位机对接方式还是以232、485、can为主,随着网络的发展,越来越多的设备都是以网络进行通信的。毕竟相比较之前,网络通信的方式太多了,设备之间仅需要交换机、路由器就可以通信,不需要放在一起。传统消费领域的网络通信,一般是电脑和电脑之间的通信。而工业领域,网络通信更多是设备和设备之间的通信,设备本身除了网络之外,还有其他用途的。比如,这个设备可能是做调度的,另外一个设备做数控的等等。

1、工业生产中的网络有哪几种形式

        这取决于设备本身是移动的机器人、pad设备,还是固定的作业设备。如果是机器人,或者是pad设备,那么在工厂车间内肯定要布置wifi信号,至于2.4g还是5g,可以根据自己的情况决定。当然,如果都是固定的生产设备,使用有线网络也是不错的选择。

2、使用udp还是tcp

        udp比较适合网络较差的作业环境,tcp适合网页较好的作业环境。当然,如果网络真的不算好,作为移动设备来说,自身的安全检测一定要非常到位才行。

3、网络协议如何写

        对于业务人员来说,网络协议越简单越好,最好是xmlrpc这种协议。客户设备如果已经有协议的,尽量让客户提供标准的sdk协议。如果客户自身也没有协议,那就约定一个简单的协议,比如http协议等等,用postman确定没问题了之后再进行写代码验证。

4、网络转换设备是什么情况

        由于上位机软件设备一般自带的接口数量是有限的,比如有限的232、485、can和usb。所以这个时候,如果上位机想扩展一下访问的设备数,但是没有对应的接口,这个时候网络转换设备就发挥作用了。网上有很多的网络转io、网络转232、网络转485设备,它们价格不贵,配置也很简单,使用起来十分方便。用户需要做的,就是把232/485报文转成网络报文,发送出去就好了。此外,接收也是一样。

5、网络sdk的选择

        在c++这一块,要编写c++网络代码,有三种选择。一种是使用windows network api编程;一种是使用boost编程;剩下来一种是使用qt专门的网络api编程。这方面,我倒是建议优先用boost和windows network api编程。前者有跨平台的优势,后者使用比较简单和方便,学会了就算不用qt也能自己写控制台程序。相比较而言,我倒是不建议选择qt网络编程,毕竟学会了只是用在qt平台而已,适用范围远远没有前两者那么广泛。

6、网络调试

        网络中出问题是很正常的,这个时候就要好好准备几个工具了。第一,使用ping命令验证是否在线;第二,使用pinginfoview查看丢包率;第三,使用postman查看http api接口收发是否ok;第四,也是运用最广泛的,那就是wireshark抓包大法,几乎可以解决所有的网络问题。

7、网络界面开发和验证

        如果对网络有兴趣,大家可以自己写一个server、client程序。两个程序用qt和designer把界面画出来,直接用windows network api写程序就可以了。而且,两个程序可以部署在同一台电脑上面,这样也能方便测试。这里先给出了server的参考设计界面,

        接着给出了client的参考设计界面。因为如果是client部分,其实稍微修改下即可,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/599809.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java练习题之List(ArrayList)集合练习

List集合 习题: 1:完成以下填空: List 接口的特点是元素 有序 (有|无)顺序, 可重复 (可以|不可以)重复; 2:(List)关于List 集合描述正确的是(…

python的getattr和getattribute调用

1 python的getattr和getattribute调用 python类的属性包括类属性、实例属性, 类属性:直接在类顶层赋值,或通过类名.属性名值赋值; 实例属性:通过self赋值,或通过实例名.属性名值赋值; 类实例…

肠道炎症与年龄和阿尔茨海默病病理学相关:一项人类队列研究

谷禾健康 ​阿尔茨海默 研究表明,慢性低水平的炎症(“炎症衰老”)可能是年龄相关疾病的一个介导因素,而肠道微生物通过破坏肠道屏障可能会促进炎症。 虽然老化和阿尔茨海默病(AD)与肠道微生物群组成的改变有…

Mybatis缓存实现方式

文章目录 装饰器模式Cache 接口及核心实现Cache 接口装饰器1. BlockingCache2. FifoCache3. LruCache4. SoftCache5. WeakCache 小结 缓存是优化数据库性能的常用手段之一,我们在实践中经常使用的是 Memcached、Redis 等外部缓存组件,很多持久化框架提供…

SQLAlchemy快速入门

安装依赖 pip install sqlalchemy pip install pymysql创建数据库和表 # 创建数据库 drop database if exists sqlalchemy_demo; create database sqlalchemy_demo character set utf8mb4; use sqlalchemy_demo;# 创建表 drop table if exists user; create table user (id …

ClickHouse基础介绍

目录 前言 1、什么是clickhouse 2、OLAP场景的关键特征 3、列式存储更适合于OLAP场景的原因 4、clickhouse的独特功能 5、clickhouse的缺点 6、性能 6.1、单个大查询的吞吐量 6.2、处理短查询的延迟时间 6.3、处理大量短查询的吞吐量 6.4、数据的写入性能 前言 11月…

Keras实现seq2seq

概述 Seq2Seq是一种深度学习模型,主要用于处理序列到序列的转换问题,如机器翻译、对话生成等。该模型主要由两个循环神经网络(RNN)组成,一个是编码器(Encoder),另一个是解码器…

C++——list容器放入赋值,交换与大小操作

1. list 赋值和交换 功能描述: 给list容器进行赋值,以及交换list容器 函数原型: 1.assign(beg, end); //将[beg, end)区间中的数据拷贝赋值给本身 2.assign(n, elem); //将n个elem拷贝赋值给本身 3.list& operator(const list &lst);//重载等…

Dart调用JS对10000条定位数据滤波

使用Dart调用JS,还是为了练习跨语言调用; 一、编写对应的JS代码 平时在开发时不推荐将算法放在JS里,我这里是简单的做一下数据过滤; 首先生成一些随机定位数据,在实际开发中可以使用真实数据; // 随机定…

git 常用命令 提交commit

提交一个commit git status test.txt 查看 指定文件test.txt 的状态 git add test.txt 添加 指定文件test.txt 到暂存区 git commit test.txt -m "commit msg" 提交 指定文件test.txtgit status …

汽车信息安全--芯片厂、OEM安全启动汇总(1)

目录 1.芯驰E3安全启动 2.STM32 X-CUBE-SBSFU 3.小米澎湃OS安全启动 4.小结 我在前篇文章里详细记录了车规MCU信息安全设计过程关于网络安全架构的思考过程,从芯片原厂、供应商、OEM等角度思考如何建立起完备的信任链; 不过这思考过程仅仅只是一家之言,因此我又对比了国…

vmware虚拟机安装esxi7.0步骤

一、安装准备 1、下载镜像文件 下载链接:https://pan.baidu.com/s/12XmWBCI1zgbpN4lewqYw6g 提取码:mdtx 2、vmware新建一个虚拟机 2.1 选择自定义 2.2 选择ESXi对应版本 2.3 选择稍后安装操作系统 2.4 默认选择 2.5 自定义虚拟机名称及存储位置 2…

forEach方法跳出循环

在for循环中,跳出循环有两种模式: break、continue;但是在forEach中,使用break或者continue都会报错;使用return在forEach不起作用,循环会继续执行,貌似充当了continue的角色。 forEach方法的机…

MyBatis学习二:Mapper代理开发、配置文件完成增删改查、注解开发

前言 公司要求没办法,前端也要了解一下后端知识,这里记录一下自己的学习 学习教程:黑马mybatis教程全套视频教程,2天Mybatis框架从入门到精通 文档: https://mybatis.net.cn/index.html Mapper代理开发 目的 解决…

Jenkins分布式实现: 构建弹性和可扩展的CI/CD环境!

Jenkins是一个流行的开源持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)工具,它通过自动化构建、测试和部署过程,帮助开发团队更高效地交付软件。Jenkins的…

element ui弹窗在别的弹窗下方,优先级不高的问题

在弹窗的标签中加入append-to-body即可解决该问题&#xff1b; <el-dialog:title"title":visible.sync"dialogVisible"width"60%":before-close"handleClose":close-on-click-modal"false"append-to-body > </el-…

Oracle sid和service_name(服务名)地址写法不同

文章目录 场景总结 场景 项目需要切换数据库&#xff0c;批量改完配置文件后发现怎么有的地址前有//&#xff0c;有的没有 &#xff0c;是不是哪里改错了 。 后来确认了下。 带// 的是使用service_name连接的方式&#xff0c;是没有错的。 1.使用service_name,配置方式&#…

a标签锚点链接 + 遇到的问题

目录 需求背景实现思路遇到的问题问题解决关于锚点链接其他问题 需求背景 页面左侧是一级、二级标题&#xff0c;页面右侧是一级、二级标题对应的内容点击左侧标题&#xff0c;锚点链接&#xff0c;右侧内容跳转到左侧标题对应的内容区域 实现思路 通过 a 标签 id 的方法实现…

嵌入式Linux之Ubuntu学习笔记(Makefile规则格式)

Makefile里面是由一系列的规则组成的&#xff0c;这些规则格式如下&#xff1a; 目标&#xff1a;依赖文件集合 命令1 命令2 …… 列&#xff1a; main&#xff1a;main.o input.o calcu.o gcc -o main main.o input.o calcu.o 命令列表中的每条命令必须以TAB键开始&am…

Mac——VsCode使用格式化工具进行整理和格式化

1. 打开VSCode编辑器。 2. 点击左下角⚙️图标&#xff0c;打开设置 3. 进入设置后&#xff0c;你会看到一个搜索框&#xff0c;在搜索框中输入 format on save 来查找相关设置项。 4. 在设置列表中找到 Editor: Format On Save 选项&#xff0c;勾选它以启用在保存文件时自动格…