2017-08-24 2 views
2

私はEthernet Industrial Protocol(EIP)というプロトコルを使用しており、プログラマブルロジックコントローラ(PLC)からデータを送受信するために使用しています。C#による動的な読み込み

データは、16進値として送信され、2バイトサイズで送信されます。だから、私は何がPLCのメモリ領域に格納されているかを尋ねるときに、2バイトの16進値を戻します。

現在、私は戻って来るデータを解析するためのハードコーディングされたアプローチを使用しています。 私が見ているのは、設定ファイルなどを使用して、バイト列がどのように表示されるかを示す機能です。

3つの温度の読み取り値と製品タイプがあり、3つの温度が浮動小数点であり、1つの製品タイプが整数であるとします。 変更したい場合は、プログラムを変更する必要があります。

アプリケーションを書き換えるのではなく、設定ファイルなどでこれを変更するにはどうすればよいですか? 私はこのタイプの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; 

私は、configファイルを使用している場合は、私がのラインで何かを言いたい: 名、UINT、サイズおよびプログラムは、そのをお読みください。 したがって、 - > Krakk、uint16,2とすると、プログラムはこれを変更する必要があることを知ります。Krakk =(BitConverter.ToUInt16(data、bIndex)); bIndex + = 2;私はすでに自分で答えていると思いますが、ここではいくつかの詳細と私の答えですが

+0

あなたはこれがどのように動的である必要があるかはっきりしません。別のタイプを書いているのであれば、それでも "プログラムを変更しています"。なぜ型のインスタンス数*を指定したいのですか?複数のタイプを持つことは完全に合理的です。読み込むデータの種類ごとに1つのタイプがあります。これは問題ありません。あなたは、潜在的にどのタイプを使うかを言う設定ファイルを持つことができます。しかし、その後のタイプで何をやっているのかは本当にはっきりしないので、より具体的な情報を提供することは難しいです。 –

+0

現在、データベースに値を格納するだけで、各製品について収集されたデータを見ることができます。 将来的にできることを望むのは、新しいPLCを追加して、私がPLCから得るものをプログラムに伝え、そこから解析することです。 –

+0

さて、でも、私はあなたが構成したいと思うものはまだよく分かりません。たぶん、あなたが提供したい設定の例を与えることができ、それを実装しようとしているところまで... –

答えて

0

: 次のように4つのプロパティを持つ新しいカスタム構成セクション(How to Create and Access a Custom Configuration)を作成する必要があります。

  1. ReadingName (文字列値を受け入れ、読み取る
    インスタンスの名前を表します)。
  2. のstartIndex(整数値を受け取り、インスタンスのデータバイトの読み出しを開始そこから開始インデックスを表す。)
  3. 長さ(整数値を受け取り、インスタンスのデータバイトの数を表す。)
  4. データタイプ。

app.configファイルでは、読み込みたいインスタンスごとにセクションを追加し、プログラム内でこれらの値を読み取り、それに従って処理する必要があります。

+1

私はこれを調べて、それが私の必要なものかどうかを見ます。 私はちょっと私が欲しいものを知っているが、私の経験不足は現時点で途中にある。 –

関連する問題