繁体   English   中英

C#中的动态类型加载

[英]Dynamic type loading in C#

我正在使用名为以太网工业协议(EIP)的协议,并使用它来发送和接收来自可编程逻辑控制器(PLC)的数据。

数据以十六进制值发送,最小2字节。 因此,当我询问存储在PLC的存储区中的内容时,我会得到一个2字节的十六进制值。

目前,我正在使用硬编码方法来解析返回的数据。 我正在查看的是能够使用配置文件或其他工具来告知字节串应该是什么样的功能。

假设我有3个温度读数和产品类型,这3个温度是浮点数,每个使用4个字节,产品类型是整数。 如果要更改它,则需要更改程序。

我应该继续阅读哪些内容才能在配置文件中进行更改,而不是重写应用程序? 我想说的是,我有x个这种类型的实例,然后程序应将其解析为该实例。

该程序将读取的所有数据保存到MySql数据库中。 这是对从PLC传入的值进行解析的代码的摘要。

Krakk = (BitConverter.ToUInt16(data, bIndex)); bIndex += 2;
Small = (BitConverter.ToUInt16(data, bIndex)); bIndex += 2;
Medium = (BitConverter.ToUInt16(data, bIndex)); bIndex += 2;
Large = (BitConverter.ToUInt16(data, bIndex)); bIndex += 2;

如果我使用配置文件,我想在以下几行中说:name,uint,size,然后程序应读取该内容。 因此,例如-> Krakk,uint16,2,然后程序将知道应该对此进行更改:Krakk =(BitConverter.ToUInt16(data,bIndex)); bIndex + = 2;

即使我认为您已经在回答自己,但是这是我的答案,其中包含一些细节:您可能需要使用以下四个属性创建一个新的自定义配置部分( 如何创建和访问自定义配置 ):

  1. ReadingName(接受字符串值,代表
    您想阅读的实例)。
  2. StartIndex(接受整数值,表示您从该索引开始读取实例的数据字节。)
  3. 长度(接受整数值并表示实例的数据字节数。)
  4. 数据类型。

在app.config文件中,应为每个要读取的实例添加一个部分,然后在程序中应读取这些值并采取相应的措施。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM