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 集合描述正确的是(…

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

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

Mybatis缓存实现方式

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

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),另一个是解码器…

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

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

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…

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

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

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

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

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

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

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

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

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

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

LeetCode206链表反转

//我来理解一下运用递归求解 class Solution { public:ListNode* reverseList(ListNode* head) {//首先判断是否为最后一个元素if(head null|| head.next null){return head;//返回末尾元素}ListNode* receive;//此时进入循环的每一层都实现了temp接收head.next的结点进行…

详解bookkeeper AutoRecovery机制

引言小故事 张三在一家小型互联网公司上班,由于公司实行的996,因此经常有同事“不辞而别”,为了工作的正常推进,团队内达成了某种默契,这种默契就是通过某个规则来选出一个同事,这个同事除了工作之余还有额…

让人头痛事务问题到底要如何解决?

前言 正好前段时间我在公司处理过这个问题,我们当时由于项目初期时间比较紧张,为了快速完成业务功能,忽略了系统部分性能问题。项目顺利上线后,专门抽了一个迭代的时间去解决大事务问题,目前已经优化完成,并…

【2024最新版】Win11基础配置操作(磁盘分区、修改各种默认存储位置、安装软件操作)【释放C盘空间】

文章目录 一、硬盘分区0. 磁盘管理1. 压缩卷2. 新建简单卷向导 二、修改默认存储位置1. 保持新内容的地方a. 位置b. 操作 2. 快速访问六件套a. 位置b. 操作 三、安装软件0. 应用商店设置a. 设置中心b. 修改下载设置 1. 微信电脑版设置a. 下载b. 安装c. 聊天记录迁移与备份d. 存…

Charles的基础使用教程【Mac】

目录 1.安装 2.抓取https请求的前置操作 2.1安装证书: 2.2、SSL代理设置 3.Charles初识 1.安装 官网Charles下载安装即可,没有什么需要注意的地方 2.抓取https请求的前置操作 2.1安装证书: 未安装证书是这样的: 上述我们可…

《Linux C编程实战》笔记:创建线程

上一章是进程&#xff0c;这一章是线程 有关线程进程的概念之类的请自行学操作系统吧&#xff0c;书里都是偏实战应用的 线程创建函数pthread_create #include <pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine)…

设计循环队列——oj题622

. 个人主页&#xff1a;晓风飞 专栏&#xff1a;LeetCode刷题|数据结构|Linux 路漫漫其修远兮&#xff0c;吾将上下而求索 文章目录 题目要求&#xff1a;应该支持如下操作&#xff1a;示例&#xff1a;提示&#xff1a; 结构体定义队列的创建基本操作判断队列是否为空&#xf…

软件设计模式 --- 类,对象和工厂模式的引入

Q1&#xff1a;什么是软件设计模式&#xff1f; A&#xff1a;软件设计模式&#xff0c;又称设计模式。它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。综上&…