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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【AI 大模型】智能时代的核心驱动力

1. 引言📜1.1 AI大模型的崛起与影响力🌟1.2 本文的研究目的与结构🧐 2. AI大模型的基础概念与技术原理📚2.1 定义与核心特征🎯2.2 深度学习架构基础🧠2.3 大规模数据训练的重要性📊2.4 模型优化…

15分钟学Go 实战项目一:命令行工具

实战项目一:命令行工具 1. 引言 命令行工具是开发者常用的工具之一,它可以帮助用户通过命令行界面对程序进行控制和交互。在这节中,我们将创建一个简单的命令行工具,以帮助你理解Go语言的基本语法和如何处理命令行输入。在这个过…

HarmonyOS NEXT 应用开发实战(六、组件导航Navigation使用详解)

在鸿蒙应用开发中,Navigation 组件是实现界面间导航的重要工具。本文将介绍如何使用 Navigation 组件实现页面跳转及参数传递,确保你能轻松构建具有良好用户体验的应用。 当前HarmonyOS支持两套路由机制(Navigation和Router)&…

Dongle Sentinal在Jenkins下访问不了的问题

背景: 工作站部署的jenkins的脚本无法正常打包,定位后发现是本地获取不了license,但是使用usb over network的远程license都能获取并正常打包 分析: 获取不了license的原因是本地无法识别dongle。根据提供信息,之前…

力扣76~80题

题76(困难): 分析: 这道题其实不难,但是是我做最久的了,我居然去用res去接所有可能得值,然后再求长度导致空间暴力,我还以为是我queue的问题。。。 最后用暴力求解解的&#xff0c…

Apache Seata Raft模式配置中心

本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 Apache Seata Raft模式配置中心 title: Seata Raft模式配置中心 author: 蒋奕晨-清华大学&…

Vue是一套构建用户界面的渐进式框架,常用于构建单页面应用

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把手教你开发炫酷的vbs脚本制作(完善中……) 4、牛逼哄哄的 IDEA编程利器技巧(编写中……) 5、面经吐血整理的 面试技…

HCIE-Datacom题库_11_IPsecVPN【17道题】

一、单选题 1.IPsecSA(SecurityAssociation,安全联盟)有两种生成方式,分别是手工方式和IKE自动协商方式,以下关于这两种方式的描述中,错误的是哪一项? 手工方式和IKE方式建立的SA都支持动态刷新 IKE方式建立的SA,其生存周期由…

传奇架设GEE引擎数据库服务器提示:拒绝未授权ip连接服务器的解决办法

今天一个新手GM遇到一个问题,他有一个GEE引擎的传奇版本,数据库服务器提示:拒绝未授权ip连接服务器:222.186.50.212、111.162.159.87 1.189.121.156、14.204.122.13、1.189.141.27等等,出于担心服务器是否有异常&#…

【VUE安装本地自定义capacitor插件以及打包成安卓APK过程】

capacitor插件创建使用过程 1. 初始化一个vue项目2.安装capacitor依赖3.自动化创建插件4. 实现功能后构建插件,插件目录下生成dist文件夹5. vue项目中安装插件6. vue项目中使用接口7. 构建vue项目8.构建为安卓项目9.打包APK1. 初始化一个vue项目 过程省略,本案例用的vue3+ty…

AI编译器与TVM

由于AI芯片的特殊性和高度定制化,为了兼容硬件的多样性,AI模型必须能被高效地映射到各种AI芯片上。AI编译器将深度学习框架描述的AI模型作为输入,将为各种AI芯片生成的优化代码作为输出。AI编译器的目标是通过编译优化的方法将深度学习框架产…

onlyoffice docker启用jwt并生成jwt

一、说明 本文是docker教程,linux/win的安装版本也类似,只需要修改配置文件中的secrt就可以了【Configuring JWT for ONLYOFFICE Docs - ONLYOFFICE】 二、正文开始 docker启动时候如果不想使用jwt,加上参数-e JWT_ENABLEDfalse就可以了&…

AI驱动的支持截图或线框图快速生成网页应用的开源项目

Napkins.dev是什么 Napkins.dev是一个创新的开源项目,基于AI技术将用户的截图或线框图快速转换成可运行的网页应用程序。项目背后依托于Meta的Llama 3.1 405B大型语言模型和Llama 3.2 Vision视觉模型,结合Together.ai的推理服务,实现从视觉设…

Centos7安装ZLMediaKit

https://github.com/ZLMediaKit/ZLMediaKit 一 获取代码 git clone https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit git submodule update --init git submodule update --init 命令用于初始化和更新 Git 仓库中的子模块(submodules)。这个命令…

AI劳动力崛起:人将面临失业危机?

场景 第一眼看到这个网站的时候,AI员工官网(好像是部署在美国),我觉得很好奇,真的可以让AI替代人类完成工作吗?替代到什么程度呢?能以自然语言直接驱动吗? 正好手上在做爬虫项目&am…

X射线衍射(X-ray Diffraction,XRD)小白版

文章目录 实验过程原理晶体构成X射线波长diffraction 干涉效应 Braggs Law晶体间距d散射角度θ半波长λ/2公式 公式名称由来应用设备 实验过程 In the X-ray experiment , a sample is placed into the center of an instrument and illuminated with a beam of X-rays. 在X射…

Debug-029-el-table实现自动滚动分批请求数据

前情提要 最近做了一个小优化,还是关于展示大屏方面的。大屏中使用el-table展示列表数据,最初的方案是将数据全部返回,确实随着数据变多有性能问题,有时请求时间比较长。这里做的优化就是实现列表的滚动到距离底部一定高度时再次请…

Python语法结构(二)(Python Syntax Structure II)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

Shell编程-函数

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 我们前面学习了那么多命令,以及涉及到部分逻辑判断的问题。从简单来说,他就是Shell编程,…

在Xshell中查看日志文件详情

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把手教你开发炫酷的vbs脚本制作(完善中……) 4、牛逼哄哄的 IDEA编程利器技巧(编写中……) 5、面经吐血整理的 面试技…