C#学习笔记(一)

embedded/2024/10/23 16:02:23/

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 来表示。
    在这里插入图片描述

http://www.ppmy.cn/embedded/129853.html

相关文章

2024软件测试面试800题(答案+文档)

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、软件测试基础面试题 1、阐述软件生命周期都有哪些阶段? 常见的软件生命周期模型有哪些? 软件生命周期是指一个计算机软件从功能确定设计,到…

将两张图片的不同标记出来

差异过于细微,阈值设置不当:您的差异可能是颜色或位置的微小变化,当前的阈值和处理方式可能不足以检测到这些细微差异。 图像配准不够精确:由于两张图片内容高度相似,特征点匹配可能存在误差,导致图像对齐…

计算机视觉在疲劳检测中的应用

计算机视觉在疲劳检测中的应用 引言 随着科技的飞速发展,计算机视觉技术已经广泛应用于各个领域,其中疲劳检测是近年来备受关注的一个研究方向。疲劳检测旨在通过计算机视觉技术,实时分析个体的面部特征、动作以及生理信号等,判…

AnaTraf | 利用多点关联数据分析和网络关键KPI监控提升IT运维效率

目录 什么是多点关联数据分析? 多点关联数据分析的运用场景 监控网络关键KPI的重要性 典型的网络关键KPI 案例分析:利用多点关联数据分析和KPI监控解决网络性能问题 结语 AnaTraf 网络性能监控系统NPM | 全流量回溯分析 | 网络故障排除工具AnaTraf…

【LeetCode热题100】分治-归并

这篇博客记录了分治-归并的几道题目&#xff0c;包括排序数组、逆序对、计算右侧小于当前元素的个数、翻转对这几道题目。 //归并排序 class Solution {//创建一个全局变量&#xff0c;这样可以提高效率vector<int> tmp; public:void _sortArray(vector<int>&…

Maven--简略

简介 Apache旗下的一款开源项目&#xff0c;用来进行项目构建&#xff0c;帮助开发者管理项目中的jar及jar包之间的依赖&#xff0c;还拥有项目编译、测试、打包的功能。 管理方式 统一建立一个jar仓库&#xff0c;把jar上传至统一的仓库&#xff0c;使用时&#xff0c;配置…

系统性能优化——绑核

简要 绑核正如其名&#xff0c;将线程/进程绑定在一个或多个CPU核心。该技术可以使进程或线程在特定的处理器上运行&#xff0c;而不会被操作系统调度到其他处理器上。这里有两层含义。 如果线程被绑定在指定核心上&#xff0c;则只会在该核心上运行&#xff0c;即使其他核心…

ReactNative项目构建目录找不到问题解决

要检查你的 Expo 项目中 TypeScript 的配置&#xff0c;你需要查看 tsconfig.json 文件。这个文件位于项目的根目录&#xff0c;并且包含了 TypeScript 编译器的所有配置选项。以下是一些基本步骤来检查和理解你的 tsconfig.json 文件&#xff1a; 定位 tsconfig.json 文件&…