哈喽上位机(上位机开发指南)

article/2025/9/26 16:01:02

在这里插入图片描述

哈喽,上位机!

-------上位机开发指南

作者:Robert Zhang
本博客以一个程序猿的角度解答了:
- 有关上位机开发的疑惑
- 上机软件开发需要学习哪些知识
- 开发一个完整商业软件所需的技术与实现方法
- 怎样美化软件,那些漂亮的软件是怎样做出来的
- 一个软件的组成结构以及背后的设计思想,而不是讲控件怎样使用

序言

回想当初自己从懵懵懂懂的状态到现在可以独立开发一个完整可用的商用软件,开发过程中遇到了很多疑问,也走了很多弯路。到现在积累了一些实际开发经验,因此想把这些经验沉淀下来写一下有关“上位开发经验”的博客。从而帮助初学者少走弯路并且快速提高专业技术水平。
写作本博客主要原因是在市场上几乎找不到专门针对上位机开发相关的书籍,只有零星的博客可以参考。当然如果说特定平台的电脑软件开发的书籍倒是挺多,比如“C#开发快速入门”之类的书籍,但是主要讲的都是c#开发平台提供的库和系统函数的使用细节。这些书籍并没有站在一个PC软件的的整体高度上来讲开发一个商业软件所需要的构架经验和实现技术细节。导致实际开发还是一头雾水。

因此本博客从数据通信、协议制定、UI设计与特殊控件定制、软件构架、数据结构与内存模型设计、配置文件与工程文件的读写、多线程、数据库、网络http请求等几个角度来介绍来开发一个完整商业软件所需要用到的经验与技术。

由于本博客主要讲软件构架和特定技术的实现,因此建议读者阅读本博客的同时,阅读一本关于面向对象语言的书籍(C++或C#),以及阅读一本关于数据结构的书籍。当然本书中对所用到的技术都作了说明,便于读者理解。

为了方便读者把本博客内容快速应用到实际开发中,本博客的所有例子都包括了一份Qt平台的实现代码和一份C#winForm开发平台的实现代码。

注:本博客目前在创作阶段,将持续更新章节到本博客。

Robert Zhang
2020/01/30


http://chatgpt.dhexx.cn/article/wdjg9vmR.shtml

相关文章

C#上位机开发常遇问题

C#上位机开发常遇问题 C#引用C动态库/静态库静态库动态库 unsafe和fixed关键字的应用unsafefixed Path类的使用写在结尾 最近完成了一个小项目的开发,在开发中遇到了一些问题,我感觉这些问题其他人在开发的时候也会遇到,所以我在这边总结一下…

C# 三菱PLC上位机开发环境搭建

一、安装软件 用到两个三菱的软件: 1. MX Component(下载地址 也可以直接在官网上搜索,注意MX后面有空格) 用于连接PLC 2. GX Works2(下载地址 用GX Works3也行) 这个软件主要是电气做PLC编程&#xf…

USB上位机开发

上位机开发采用图形化界面,使用C#语言进行开发。调用C编写的Dll动态库,实现与STM32进行USB通信的目的。 首先,编写Dll动态库。 开发环境采用VS2017,语言C 将lusb0_usb.h和libusb.lib文件拷贝到工程目录下。 libusb-win32-bin-…

Matlab上位机开发

Matlab上位机开发 1 了解上位机1.1 上位机的作用1.2 常用上位机开发方式1.2.1 Windows上位机(基于串口通信)1.2.2 Android上位机(基于网络通信) 1.3 教程概况1.3.1 C#上位机开发教程1.3.2 IoT App开发1.3.3 Matlab上位机开发 2 He…

C# | 上位机开发新手指南(一)概述

C#上位机开发新手指南(一)概述 文章目录 C#上位机开发新手指南(一)概述前言学习C#编程基础熟悉上位机开发相关知识选择合适的开发环境熟练掌握C#编程技巧掌握常用控件的使用方法学习与硬件通讯的方法最后 前言 C#,是微…

上位机开发流程

提示:本文为学习记录,若有错误,请联系作者,虚心受教。 文章目录 前言一、上位机是什么?二、开发步骤1.了解需求2.分析需求3.设计软件模块4.测试软件5.交付及维护软件 总结: 前言 没有人可以真正理解另一个…

上位机开发(怎么开发上位机)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 要开发上位机,主要还是看具体的用途是什么。比如说,是不是负责烧入固件;是不是调制参数;是不是监控;是不是系统控制、是不是仿真等等。当然,不管是什么样的上位机开发,有一些…

VS上位机开发——串口助手

VS上位机开发——串口助手 目录 VS上位机开发——串口助手一、新建项目二、控件布局三、编写程序1、端口更新函数2、启动窗口加载函数3、"打开串口"按键回调函数4、"清除接收"按键回调函数5、"发送"按键回调函数6、串口接收函数7、定时器中断回调…

C++刷题笔记(4)——leetcode209、904

题目1:209.长度最小的子数组 暴力解法 解题思路: 用两个for循环,外层for循环负责做子序列的起点,内层for循环负责遍历数组,寻找符合条件的子序列 然后外层for循环移动子序列的起点,继续再数组中寻找新的符…

904. 水果成篮(c++)

滑动窗口&#xff1a; class Solution { public:int totalFruit(vector<int>& fruits) {int max_len 0;int left 0;unordered_map<int,int>mp;for(int right 0; right < fruits.size();right){mp[fruits[right]];while(mp.size() > 2){mp[fruits[lef…

904-线程池项目死锁问题分析

死锁问题 1、在ThreadPool的资源回收&#xff0c;等待线程池所有线程退出时&#xff0c;发生死锁问题&#xff0c;导致进程无法退出 我们的资源回收代码如下&#xff1a; //线程池析构 ThreadPool::~ThreadPool() {isPoolRunning_ false;notEmpty_.notify_all();//等待线程…

ORACLE 错误 904

错误原因&#xff1a; Oracle 版本中IMP和EXP的兼容问题。 我这里是因为本机上的oracle版本高于服务器上的oracle版本 解决办法&#xff1a; 安装和服务器同版本的10g客户端&#xff0c;在命令窗口化中切换到10g客户端的bin目录下面进行导入就ok了。 为什么要切换呢&#xf…

leetcode:904. 水果成篮

题目来源 leetcode&#xff1a;904. 水果成篮 题目描述 题目解析 题意 题意从任意位置开始&#xff0c;若最多只能收集两种水果&#xff0c;问最多能收集多少个水果。 这道题目可以理解为求只包含两种元素的最长连续子序列&#xff0c;和leetcode&#xff1a;159.最多有两个…

2022-7-8 Leetcode 904.水果成篮

错误的代码&#xff1a; class Solution { public:int totalFruit(vector<int>& fruits) {int start 0;int end 0;set<int> myset;int len 0;for (; end < fruits.size(); end){myset.insert(fruits[end]);if (myset.size() > 2 && start &l…

【LeetCode】图解 904. 水果成篮

904. 水果成篮 904. 水果成篮 你正在探访一家农场&#xff0c;农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示&#xff0c;其中 fruits[i] 是第 i 棵树上的水果 种类 。 你想要尽可能多地收集水果。然而&#xff0c;农场的主人设定了一些严格的规矩&#xf…

LeetCode_904 水果成篮

1、题目&#xff1a;水果成篮 你正在探访一家农场&#xff0c;农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示&#xff0c;其中 fruits[i] 是第 i 棵树上的水果 种类 。 你想要尽可能多地收集水果。然而&#xff0c;农场的主人设定了一些严格的规矩&#xff0c…

力扣第904题

一、题目&#xff1a;904. 水果成篮 二、题目解析&#xff1a; 题目解析&#xff1a;题目不太好理解&#xff0c;通俗解释一下&#xff0c;可以把数组中的每个元素理解成一个树&#xff0c;元素值理解成那种类型的果树&#xff0c;比如:[3,3,3,1,2,1,1,2,3,3,4] 我们可以认为1…

LeetCode 904. 水果成篮

904. 水果成篮 题目&#xff1a;你正在探访一家农场&#xff0c;农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示&#xff0c;其中 fruits[i] 是第 i 棵树上的水果 种类 。 你想要尽可能多地收集水果。然而&#xff0c;农场的主人设定了一些严格的规矩&#xf…

力扣(LeetCode)904. 水果成篮(C语言)

一、环境说明 本文是 LeetCode 904题 : 水果成篮&#xff0c;使用c语言实现滑动窗口哈希集合。测试环境:Visual Studio 2019 二、代码展示 //滑动窗口哈希表&#xff0c;一次遍历O(n) //难点&#xff1a;如何用判断边界的移动时机,应该可以自己实现。 //right和left不一定相…

(解决方案) Visual Studio 2019 连接 SQL Server 2019 数据库时,数据库版本为904无法打开,此服务器支持852版及更低版本的问题

我在做课设程序时连不上数据库&#xff0c;提示数据库版本太高。即使在数据库设置里把兼容性改到2016(852版)仍然无法连接&#xff0c;网上找的解决方法也不成功&#xff0c;自己摸索了一番找到了解决方法。具体是直接连接数据库的服务器&#xff0c;而不是连接数据库本身&…