簡體   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