当前位置: 首页 > news >正文

C#学习笔记(一)

C#学习笔记(一)

    • 简介
    • 第一章 上位机开发环境之 VS 使用和.NET 平台基础
      • 一、安装软件
      • 二、创建项目
      • 三、第一个Hello world
      • 四、解决方案与项目
      • 五、Debug 和 Release 的区别
      • 六、代码的生产过程
      • 七、CLR的其它功能

简介

C# .NET工控上位机开发
在工控领域,C# .NET技术被广泛用于构建上位机软件,它以其强大的功能、易用性和高效的性能成为了开发者的重要工具。本文将详细探讨C# .NET在工控上位机开发中的应用,以及相关的核心知识点。

一、C#语言基础
C#是一种面向对象的编程语言,由微软公司开发,主要用于.NET Framework平台。它的语法简洁明了,支持类型安全和垃圾回收,是开发工业控制应用的理想选择。学习C#时,需要掌握类、对象、接口、继承、多态等面向对象概念,以及异常处理、委托和事件等特性。

二、.NET Framework与.NET Core
.NET Framework是微软的开发框架,包含了大量的库和服务,如Windows Forms、WPF、ASP.NET等,为C#应用程序提供运行环境。而.NET Core是跨平台的开源版本,同样支持C#开发,且具有更小的体积和更高的性能。在工控上位机开发中,根据项目需求和目标平台可以选择合适的.NET版本。

三、Windows Forms
Windows Forms是.NET Framework中的一个组件,用于创建桌面应用程序,特别适合开发工控上位机界面。通过Windows Forms,开发者可以利用各种**控件(如按钮、文本框、图表等)**设计用户界面,并实现与硬件设备的交互。

四、数据通信与协议
工控上位机通常需要与PLC、传感器、驱动器等硬件设备进行数据交换,这就涉及到了串口通信(RS-232、RS-485)、TCP/IP网络通信、CAN总线等协议。C#提供了丰富的类库,如System.IO.Ports命名空间下的SerialPort类用于串口通信,System.Net命名空间下的Socket类用于网络通信,方便开发者实现不同协议的通信功能。

五、实时数据处理
在工控系统中,实时性是非常关键的。C# .NET允许开发者使用多线程和异步编程模型来处理实时数据,确保程序在处理大量数据时仍能保持响应。Task类和async/await关键字是实现异步操作的强大工具。

六、可视化和图表展示
工控上位机往往需要实时显示设备状态和生产数据,这需要用到数据可视化技术C# .NET的System.Windows.Forms.DataVisualization命名空间提供了丰富的图表控件,如Chart,可以用于绘制折线图、柱状图、饼图等,便于监控和分析工况。

七、数据库集成
很多工控系统需要存储和查询历史数据,这时可以利用C# .NET与SQL Server、MySQL、SQLite等数据库进行交互。ADO.NET是.NET Framework提供的数据库访问框架,支持连接池,能有效提高数据库操作的效率。

八、安全性与权限管理
工控软件往往涉及重要生产数据,因此安全性是不容忽视的。C# .NET提供了加密解密、身份验证、访问控制等安全机制,确保数据的安全。

九、部署与维护
C# .NET应用程序可以通过ClickOnce技术实现快速部署,用户只需点击一次即可完成安装。此外,Visual Studio提供了一整套的调试和测试工具,方便开发者进行程序的维护和优化。

C# .NET为工控上位机开发提供了强大的支持,从界面设计、数据通信到数据库集成和安全性管理,都有成熟的解决方案。开发者掌握这些核心知识点,就能高效地构建出功能完备、性能稳定的工控上位机软件。

第一章 上位机开发环境之 VS 使用和.NET 平台基础

一、安装软件

  1. 编程语言软件
    安装VS2019、SQLServer 数据库( SQL Server 2008 R2 Expresswith Advanced Services 版)(“SQLEXPRADV_x64_CHS)
  2. 上位机工具软件
    串口助手、Modbus 系列等这些软件非常多。

二、创建项目

打开 VS 开发工具,选择“创建新项目”→控制台程序,选“.NET Framework”。

三、第一个Hello world

在这里插入图片描述
Console:控制台

四、解决方案与项目

  • 从广义的角度看,比如你说我正在开发一个项目,通常把这个开发的项目,在 VS 的环境中就认为是一个解决方案。
    从狭义的角度看,解决方案中的一个部分就是一个“项目”。一个解决方案可以包含多个项目。
    在这里插入图片描述
    狭义上这些项目都是直接或间接有联系的。最终通过“添加引用”让这些项目关联到一起(后续学习添加引用)。

五、Debug 和 Release 的区别

  • 概念上的不同
    Debug 的意思是调试
    Release 的意思发布,正式作为生产环境的应用软件。
  • 断点与调试
    Debug 在任何情况下,都可以打断点观察变量。可以打断点后让程序一行一行的执行。从而观察程序逻辑和变量的值。Release无法直接断点,并且观察数据可能存在不正确的情况。
  • 生成与优化
    Debug 所生成的文件,包含很多调试信息,生成的文件比较大。
    Release 不包含调试信息,生成的文件较小。项目结束最后使用 Release 发布。

六、代码的生产过程

.NET 平台在编译开发者所写的代码的时候,是通过两次编译完成的,这点和
其他的编程语言是有差别的
在这里插入图片描述
第一次编译是完成从源代码到微软中间语言 IL(Intermidiate Language)的编译**。第二
次编译**是从 IL 到机器码的编译。

  1. 第一次编译-代码到 IL 编译
    从图中我们可以看到在.NET 平台可以选择不同的开发语言,每一种开发语言都对应一个编译器,我们现在用的是 C#语言,当写完代码后,会通过 VS 中自带的 csc.exe这个可执行文件完成代码的编译,如果代码没有错误,就会生成对应的 exe 或 dll 文件。exe 文件我们称为可执行文件,也就是你双击可以直接运行的文件。dll 文件是动态链接库文件,这种文件一般都是作为项目的模块来使用,不能直接运行,否则会报错。
  2. 第二次编译-IL 到机器码的编译
    当启动编译好的文件exe的时候项目即可运行起来,其实在运行之前.NET 平台在操作系统上运行的JIT 的即时编译器(Just-In-Time Compilier),会把运行的“IL 中间语言代码”,再次根据当前所在的操作系统类型,编译成对应的机器码,最后才被计算机执行。但是这个过程是非常快,通常是感觉不到的。这样做的好处是针对不同的操作系统和计算硬件无需多次编译,对程序的部署带来很大方便。

七、CLR的其它功能

CLR(Common Language Runtime)也可以称为公共语言运行库。这个东西的作用在.NET 平台太重要了。

  1. 托管代码和非托管代码
    在这里插入图片描述
  • 非托管代码:通俗理解,就是你的程序代码直接运行到操作系统上,
    不用其他程序的干预。准确一点说,非托管代码就是针对特定操作系统而生成的 CPU 机器指令。
  • 托管代码:在 CLR 管理之下运行的程序指令代码(也就是 MSIL,微软中间语言代码)。
  1. 公共语言运行时的两个“管家”
    图中没有直接画出来的两个东西 CLS 和 CTS。
  • CLS(Common Language Specification)公共语言规范。它在 CLR 中主要是解决不同开发语言之间的语法规范问题。在.NET 平台上有 C#语言、VB.NET 等,这些不同开发语言开发的模块是可以直接相互使用而不需要做任何处理。如何做到呢?其中一半功劳是CLS来完成的。
  • CTS(Common Type System)通用类型系统。它在 CLR 中主要解决不同开发语言之间的数据类型差异。不同的开发语言在数据类型表示上是有差别的,比如在 C#中整形用 int 表示,在 VB.NET 中用Integer 来表示。
    在这里插入图片描述

相关文章:

C#学习笔记(一)

C#学习笔记(一) 简介第一章 上位机开发环境之 VS 使用和.NET 平台基础一、安装软件二、创建项目三、第一个Hello world四、解决方案与项目五、Debug 和 Release 的区别六、代码的生产过程七、CLR的其它功能 简介 C# .NET工控上位机开发 在工控领域&…...

MATLAB边缘检测

一、目的: 熟悉边缘检测原理,并运用matlab软件实现图像的canny边缘检测,体会canny边缘检测的优缺点。 二、内容: 编写matlab程序,实现对lena图像的边缘检测,输出程序运行结果。 三、原理或步骤&#x…...

Tortoise SVN 安装汉化教程(乌龟SVN)

1.首先下载 去官网下载 如果下载比较慢的,链接自取 https://pan.quark.cn/s/cb6f2eee3f90 2. 安装Tortoise SVN 无脑next到完成 最后到桌面右键 你就发现svn出来了,但是是英文的!!!! 像我这种英文不好的…...

深入了解Spring重试组件spring-retry

在我们的项目中,为了提高程序的健壮性,很多时候都需要有重试机制进行兜底,最多就场景就比如调用远程的服务,调用中间件服务等,因为网络是不稳定的,所以在进行远程调用的时候偶尔会产生超时的异常&#xff0…...

海南聚广众达电子商务咨询有限公司靠谱吗怎么样?

在当今这个数字化浪潮席卷全球的时代,抖音电商以其独特的魅力成为了众多商家争相入驻的新蓝海。而在这片浩瀚的电商海洋中,如何找到一家既专业又可靠的合作伙伴,成为了众多商家心中的一大难题。今天,我们就来深入剖析一下海南聚广…...

Java的魔法世界:面向对象编程(OOP)是什么?

这个嘎嘎重要 面向对象编程(OOP)是让Java像玩具世界一样,把现实中的东西变成“对象”,然后让这些对象去互动。你可以想象OOP是Java的“魔法世界”,通过创建“对象”(Object),让它们有…...

软件测试笔记——接口测试

文章目录 一、概念1.接口测试流程2.URL3.HTTP协议4.RESTful5.案例介绍 二、Postman1.Postman软件2.登录接口调试-获取验证码3.登录接口调试-自动关联数据4.合同上传接口-提交请求数据5.提交参数查询6.批量执行7.接口用例设计8.断言8.参数化三、案例1.项目2.课程添加3.课程列表查…...

东方通 TongRDS V2 配置与开机自启指南及 Spring Boot 集成

东方通 TongRDS V2 配置与开机自启指南及 Spring Boot 集成 文章目录 东方通 TongRDS V2 配置与开机自启指南及 Spring Boot 集成一 简述二 配置 cfg.xml1 启用密码访问2 Spring Boot 连接 TongRDS 三 配置 TongRDS 开机自启1 配置 RdsCenter1)设置 RdsCenter.servi…...

在 VS Code 中调试 Tensor 形状不显示的问题及解决方案

文章目录 常见问题解决方案1. 定制类包装和 __repr__ 方法 解释如何应用总结 在使用 VS Code 调试 PyTorch 代码时,可能会遇到一个常见问题:调试时 variables 窗口中不显示 Tensor 的形状信息。这会使得调试时观察数据的结构变得不便,尤其是在…...

Linux 时间获取全面总结

1. 引言 在Linux操作系统中,获取时间是一个基本且重要的功能。本文旨在全面总结Linux系统中获取时间的方法,包括命令行工具和编程接口,帮助读者深入理解Linux时间管理的机制。 2. 命令行工具 2.1 date 命令 date 命令是Linux中最常用的命…...

SQL 自学:游标(Cursors)的理解与应用

在 SQL 中,游标(Cursor)是一种用于处理从数据库中检索出的多行数据的机制。它允许我们逐行地处理查询结果集,而不是一次性处理整个结果集。 一、游标是什么 游标可以看作是一个指向结果集的指针。通过游标,我们可以在…...

IO多路复用概述与epoll简介

一、引言 在网络编程中,高并发的场景下处理大量连接请求是一项挑战。传统的阻塞式IO模型会让线程在等待数据的过程中陷入停顿,导致系统效率低下。为了解决这个问题,IO多路复用应运而生。它允许一个线程同时监听多个文件描述符(如…...

关于region_to_label算子的想法

1,定义:将区域进行编码 2,如何做到的:底层逻辑应该是paint_region。通过一个小的循环,按顺序将区域从灰度值1开始11的往上喷。 3,有什么作用:目前能用到的,是有字典的作用&#xff0…...

uni-app 实现好看易用的抽屉效果

在移动应用开发中,抽屉效果是一种常用的用户界面设计,它能有效地节省空间,同时提供导航和其他功能。本文将介绍如何在uni-app中实现一个好看且易用的抽屉效果,帮助你提升应用的用户体验。 一、什么是抽屉效果? 抽屉效…...

PowerShell 脚本 比较两文件差异(带粗狂进度条)并汇总输出

一上来就放代码 function Compare-FileHex {param ([Parameter(Mandatory$true)][string]$SourceFile,[Parameter(Mandatory$true)][string]$CompareFile,[Parameter(Mandatory$false)][string]$OutputFile,[Parameter(Mandatory$false)][int]$BufferSize 1MB)function Forma…...

学习 UE5 的一些前置操作总结

随着 Unity, Godot 这些引擎都玩抽象,主动捅自己一刀后,UE5 的风头不可谓不盛,本着多学一点免得失业的思路方针,咱也研究了一下 UE5 引擎,然后发现想要开始使用 UE5 ,包含了很多前置操作,这里总…...

C#/.NET/.NET Core技术前沿周刊 | 第 10 期(2024年10.14-10.20)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。 欢迎投稿、推荐…...

Git 基本配置

目录 打开 Git Bash设置用户信息查看配置信息修改电脑名字为常用指令配置别名打开用户目录,创建 .bashrc 文件在 .bashrc 文件中输入如下内容:打开gitBash,执行 source ~/.bashrc 解决GitBash乱码问题打开GitBash执行下面命令${git_home}/etc…...

理工科考研想考计算机,湖南大学、重大、哈工大威海、山东大学,该如何选择?

C哥专业提供——计软考研院校选择分析专业课备考指南规划 计算机对理工科同学来说,还是性价比很高的,具有很大的优势! 一、就业前景广阔 高需求行业 在当今数字化时代,计算机技术几乎渗透到了各个领域,无论是互联网…...

使用langchain和大模型API提取QA的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于大模型算法的研究与应用。曾担任百度千帆大模型比赛、BPAA算法大赛评委,编写微软OpenAI考试认证指导手册。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。授权多项发明专利。对机器学…...

OpenClaw电商运营助手:Qwen2.5-VL-7B批量生成商品图文详情

OpenClaw电商运营助手:Qwen2.5-VL-7B批量生成商品图文详情 1. 为什么需要自动化商品详情生成 每次大促前,运营团队最头疼的就是商品详情页的批量更新。去年双十一前,我手动处理了200多个SKU的图文优化,连续加班一周后&#xff0…...

小白也能用!M2FP多人人体解析服务一键部署教程

小白也能用!M2FP多人人体解析服务一键部署教程 1. 什么是M2FP多人人体解析服务? M2FP(Mask2Former-Parsing)是目前业界领先的语义分割算法,专注于多人人体解析任务。它能精准识别图像中多个人物的不同身体部位&#…...

CoPaw多语言翻译效果展示:技术文档的中英互译质量评估

CoPaw多语言翻译效果展示:技术文档的中英互译质量评估 1. 引言 技术文档翻译一直是专业领域的痛点。传统翻译工具在处理计算机科学、医学等专业内容时,常常出现术语不准确、句式生硬、语境丢失等问题。最近测试了CoPaw这款多语言翻译工具,它…...

韩国 SEO 优化的常见误区有哪些

韩国 SEO 优化的常见误区有哪些 在全球数字化营销的浪潮中,搜索引擎优化(SEO)无疑是一个至关重要的环节。对于韩国企业而言,优化其网站在搜索引擎上的排名不仅能带来更多的流量,更能提升品牌的知名度和市场竞争力。在…...

从无人机抗风到机械臂消振:聊聊ESO(扩张状态观测器)在机器人里的那些实战用法

从无人机抗风到机械臂消振:ESO在机器人控制中的工程实践 当四旋翼无人机遭遇突风干扰时,传统PID控制器往往需要数秒才能恢复稳定姿态;而工业机械臂在高速运动时,末端执行器的振动误差可能高达毫米级——这些工程难题背后&#xff…...

C++与C混合编程:extern ‘C‘原理与实践指南

1. 揭开extern C的神秘面纱第一次看到extern C这个语法时,我和大多数C新手一样感到困惑。它看起来像是一个可有可无的修饰符,直到我在实际项目中踩了坑才明白它的重要性。记得那是一个跨平台的网络库项目,当我们尝试在C代码中调用一个C语言编…...

OpenClaw多通道管理:千问3.5-9B同时服务飞书与钉钉

OpenClaw多通道管理:千问3.5-9B同时服务飞书与钉钉 1. 为什么需要多通道管理? 上周三凌晨两点,我被手机连续震动吵醒——团队同时用飞书和钉钉给我发了紧急需求。半梦半醒间突然想到:既然OpenClaw能自动化处理消息,为…...

逻辑器件设计中的总线保持(Bus Hold)功能解析与实战案例

1. 总线保持功能的前世今生 第一次听说总线保持(Bus Hold)这个概念,还是在五年前的一个深夜。当时我负责的项目遇到一个诡异现象:设备在热插拔时,主控板经常无法检测到业务板的拔出动作。排查了整整三天,最…...

别再说AI懂你了!先搞清楚AI中的Context到底是什么(上篇)

你有没有遇到过这种情况——跟ChatGPT聊了五句话,第四句你说了“那个方案不行”,第五句它问“哪个方案?”。或者你让AI写一篇关于“苹果”的文章,它给你写了一整页水果种植技术,而你想说的是苹果公司。这就是AI中的Con…...

探索MATLAB/Simulink下风光储电解制氢与氢燃料电池系统仿真模型

MATLAB/Simulink风光储电解制氢与用氢燃料电池系统仿真模型(风光伏耦合电解槽制氢和PEM燃料发电 附参考文献 电解槽和燃料电池都有水热管理模型 光储电解制氢模型,电解槽恒功率制氢,光伏风机耦合PEM制氢,电解槽与燃料电池&#xf…...