2025-09-30
C#
00

摘要


1. 读取功能

  • 同步读取
    • 单个地址读:允许用户读取指定地址上的数据。
    • 给定地址列表读:允许用户一次性读取多个指定地址上的数据。
    • 读全部:读取所有可用的数据项,通常用于初始化或状态监控。
  • 异步读取
    • 单个地址读:允许用户异步方式读取指定地址上的数据,以避免阻塞应用程序。
    • 给定地址列表读:通过异步操作,提高读取多个地址时的性能。
    • 读全部:同样以异步方式读取所有可用的数据项,用于高效的数据更新和监控。

2. 写入功能

  • 同步写
    • 单个写:将数据写入到指定的单个地址。
    • 多个写:将数据写入到多个指定地址,实现批量更新。
  • 异步写
    • 单个写:以异步方式写入数据至指定地址,提升响应速度。
    • 多个写:异步批量写入至多个地址,以提高写入性能并减小对应用程序主线程的影响。

3. 断开连接

  • 管理与 OPC DA 服务器的连接,确保能够安全断开,并进行必要的清理。

4. 连接服务器

  • 连接:负责与指定的 OPC DA 服务器建立连接。
  • 初始化属性:在建立连接后,初始化相关的通信属性和参数,以确保系统在使用时处于正常工作状态。
  • 绑定事件:将必要的事件处理程序绑定到 OPC DA 服务器事件,以处理数据变化、连接丢失等情况。

正文

image.png

2025-09-29
C#
00

摘要

OPC,全称OLE For Process Control,是一种工业标准,旨在解决不同供应商设备与应用程序之间的接口标准化问题。随着工业自动化和控制系统的不断发展,各种设备和应用程序不断涌现,其之间的通信变得越来越复杂。传统的设备和应用程序之间的通信主要依靠编程和调试,但这种方式效率低下、不灵活、成本高,也限制了应用程序的自由组合和开发。

OPC的出现正是为了解决这些问题。它采用一种简单的接口标准,允许不同的供应商设备和应用程序之间进行数据交换。通过使用OPC,应用程序可以自由地组合不同的设备和应用程序,从而实现更加灵活、高效和经济的工业自动化系统。

OPC标准包括一组接口规范和协议,可以被用于不同类型的设备和应用程序。OPC的接口规范包括以下几个部分:OPC控制器规范、OPC数据服务规范、OPC应用程序接口规范和OPC数据传输规范。这些规范提供了一种通用的接口,允许设备和应用程序之间进行数据交换。OPC的协议主要包括基于协议的和基于消息的两种方式。

基于协议的方式是通过协议规范定义的消息格式进行通信。每个设备和应用程序都可以使用OPC协议生成自己的消息格式,从而实现与其他设备和应用程序的通信。基于消息的方式则是通过定义消息的格式和目的地来进行通信。消息可以通过OPC服务器进行传输,服务器可以是本地的或者远程的。

OPC标准的实现依赖于OPC基金会,该基金会是一个非营利性的组织,致力于推广和发展OPC标准。基金会负责维护OPC标准,开发新的规范和协议,提供技术支持和培训等服务。OPC基金会的成员包括各种设备和应用程序的供应商、系统集成商、工程师和用户。

正文

利用驱动器的系统连接

image.png

利用 OPC 控制的系统组成

2025-09-29
C#
00

摘要

ADO.NET 是一组向 .NET Framework 程序员公开数据访问服务的类。 ADO.NET 为创建分布式数据共享应用程序提供了一组丰富的组件。 它提供了对关系数据、XML 和应用程序数据的访问,因此是 .NET Framework 中不可缺少的一部分。 ADO.NET 支持多种开发需求,包括创建由应用程序、工具、语言或 Internet 浏览器使用的前端数据库客户端和中间层业务对象。

ADO.net之间就有ADO,这个是一个COM组件,在VB6时代用的特别多,再就是现在还在用的vbs, 也在用这个。Connectiong、 Command、 Recordset和 Field

正文

基本结构

image.png

image.png

DataSet

2025-09-29
C#
00

摘要

Microsoft Windows 服务(过去称为 NT 服务)允许用户创建可在其自身的 Windows 会话中长时间运行的可执行应用程序。

这些服务可在计算机启动时自动启动,可以暂停和重启,并且不显示任何用户界面。 这些功能使服务非常适合在服务器上使用,或者需要长时间运行的功能(不会影响在同一台计算机上工作的其他用户)的情况。

正文

在创建和生成应用程序之后,可以通过运行命令行实用程序 InstallUtil.exe 并将该路径传递给服务的可执行文件来安装它。 然后,可以使用服务控制管理器 来启动、停止、暂停、恢复和配置服务。

服务生存期

服务可以三种基本状态之一存在:RunningPausedStopped。 该服务还可以报告挂起命令的状态:ContinuePendingPausePendingStartPendingStopPending

2025-09-29
C#
00

字符串

方法名称 & 描述
**public static int Compare( string strA, string strB )**比较两个指定的 string 对象,并返回一个表示它们在排列顺序中相对位置的整数。该方法区分大小写。
**public static int Compare( string strA, string strB, bool ignoreCase )**比较两个指定的 string 对象,并返回一个表示它们在排列顺序中相对位置的整数。但是,如果布尔参数为真时,该方法不区分大小写。
**public static string Concat( string str0, string str1 )**连接两个 string 对象。
**public bool Contains( string value )**返回一个表示指定 string 对象是否出现在字符串中的值。
**public static string Copy( string str )**创建一个与指定字符串具有相同值的新的 String 对象。
**public void CopyTo( int sourceIndex, char[] destination, int destinationIndex, int count )**从 string 对象的指定位置开始复制指定数量的字符到 Unicode 字符数组中的指定位置。
**public bool EndsWith( string value )**判断 string 对象的结尾是否匹配指定的字符串。
**public bool Equals( string value )**判断当前的 string 对象是否与指定的 string 对象具有相同的值。
**public static bool Equals( string a, string b )**判断两个指定的 string 对象是否具有相同的值。
**public static string Format( string format, Object arg0 )**把指定字符串中一个或多个格式项替换为指定对象的字符串表示形式。
**public int IndexOf( char value )**返回指定 Unicode 字符在当前字符串中第一次出现的索引,索引从 0 开始。
**public int IndexOf( string value, int startIndex )**返回指定字符串从该实例中指定字符位置开始搜索第一次出现的索引,索引从 0 开始。
**public int IndexOfAny( char[] anyOf )**返回某一个指定的 Unicode 字符数组中任意字符在该实例中第一次出现的索引,索引从 0 开始。
**public int IndexOfAny( char[] anyOf, int startIndex )**返回某一个指定的 Unicode 字符数组中任意字符从该实例中指定字符位置开始搜索第一次出现的索引,索引从 0 开始。
**public string Insert( int startIndex, string value )**返回一个新的字符串,其中,指定的字符串被插入在当前 string 对象的指定索引位置。
**public static bool IsNullOrEmpty( string value )**指示指定的字符串是否为 null 或者是否为一个空的字符串。
**public static string Join( string separator, string[] value )**连接一个字符串数组中的所有元素,使用指定的分隔符分隔每个元素。
**public int LastIndexOf( char value )**返回指定 Unicode 字符在当前 string 对象中最后一次出现的索引位置,索引从 0 开始。
**public int LastIndexOf( string value )**返回指定字符串在当前 string 对象中最后一次出现的索引位置,索引从 0 开始。
**public string Remove( int startIndex )**移除当前实例中的所有字符,从指定位置开始,一直到最后一个位置为止,并返回字符串。
**public string Remove( int startIndex, int count )**从当前字符串的指定位置开始移除指定数量的字符,并返回字符串。
**public string Replace( char oldChar, char newChar )**把当前 string 对象中,所有指定的 Unicode 字符替换为另一个指定的 Unicode 字符,并返回新的字符串。
**public string Replace( string oldValue, string newValue )**把当前 string 对象中,所有指定的字符串替换为另一个指定的字符串,并返回新的字符串。
**public string[] Split( params char[] separator )**返回一个字符串数组,包含当前的 string 对象中的子字符串,子字符串是使用指定的 Unicode 字符数组中的元素进行分隔的。
**public string[] Split( char[] separator, int count )**返回一个字符串数组,包含当前的 string 对象中的子字符串,子字符串是使用指定的 Unicode 字符数组中的元素进行分隔的。int 参数指定要返回的子字符串的最大数目。
**public bool StartsWith( string value )**判断字符串实例的开头是否匹配指定的字符串。
**public char[] ToCharArray()**返回一个带有当前 string 对象中所有字符的 Unicode 字符数组。
**public char[] ToCharArray( int startIndex, int length )**返回一个带有当前 string 对象中所有字符的 Unicode 字符数组,从指定的索引开始,直到指定的长度为止。
**public string ToLower()**把字符串转换为小写并返回。
**public string ToUpper()**把字符串转换为大写并返回。
**public string Trim()**移除当前 String 对象中的所有前导空白字符和后置空白字符。