Binarix FL-net Library for Windows

マニュアル>アプリケーション開発ガイド .NET編>データ型の変換

データ型の変換

FL-net通信.NETクラスライブラリには、データ型変換を容易にするFLAnyDataクラスが含まれています。FLAnyDataクラスは、.NET Frameworkの基本データ型、FLNodeInfo型(ノード情報)、またはFLLogData型(ログデータ)の何れかのデータを格納した後に、別の型で取り出すことができます。FLAnyDataクラスは、格納する時に全てのデータ型をバイト配列に変換します。そして、取り出す時は、指定されたデータ型にバイト配列を流し込みます。
コモンメモリは、UInt16型(16 ビット符号なし整数)の配列です。コモンメモリをUInt16型以外のデータ型で読み書きするには、データ型の変換が必要です。以下にFLAnyDataクラスを使用した型変換の例を示します。

例1-1

Int32型(32ビット符号付き整数)をコモンメモリ領域1の連続する2つのアドレスに書き込む。

C#

FLAnyData data = 0x12345678;          // dataは4バイト(2ワード)の大きさになる
flnet1.WriteC1(0, (ushort[])data);    // 0番地は0x5678、1番地は0x1234になる

VB.NET

Dim data As FLAnyData = &H12345678          ' dataは4バイト(2ワード)の大きさになる
flnet1.WriteC1(0, CType(data, UShort()))    ' 0番地は&H5678、1番地は&H1234になる

例1-2

コモンメモリ領域1の連続する2つのデータをInt32型(32ビット符号付き整数)に変換する。

C#

ushort[] buf = new ushort[2];    // 0番地と1番地のデータを読み込む
flnet1.ReadC1(0, buf);
                                 // ushort配列をintに変換する
FLAnyData data = buf;            // buf[0]=0x5678, buf[1]=0x1234 であれば
int n = (int)data;               // n=0x12345678 になる

VB.NET

Dim buf(1) As UShort             ' 0番地と1番地のデータを読み込む
flnet1.ReadC1(0, buf)
                                 ' UShort配列をIntegerに変換する
Dim data As FLAnyData = buf      ' buf(0)=&H5678, buf(1)=&H1234 であれば
Dim n As Integer = CInt(data)    ' n=&H12345678 になる

例2-1

文字列をシフトJISコードでコモンメモリ領域1の連続する7つのアドレスに書き込む。

C#

// シフトJISは半角1バイト、全角2バイトなので文字列の合計は14バイト(7ワード)の大きさになる
FLAnyData data = new FLAnyData("ABCDあいうえお", Encoding.GetEncoding("shift-jis"));
flnet1.WriteC1(0, (ushort[])data);    // 0~6番地に文字コードが書き込まれる

VB.NET

' シフトJISは半角1バイト、全角2バイトなので文字列の合計は14バイト(7ワード)の大きさになる
Dim data As New FLAnyData("ABCDあいうえお", Encoding.GetEncoding("shift-jis"))
flnet1.WriteC1(0, CType(data, UShort()))    ' 0~6番地に文字コードが書き込まれる

例2-2

コモンメモリ領域1の連続する7つのデータを文字列に変換する。

C#

ushort[] buf = new ushort[7];    // 0~6番地のデータを読み込む
flnet1.ReadC1(0, buf);
FLAnyData data = buf;            // シフトJISコードの文字列をString型に変換する
string str = data.ToString(Encoding.GetEncoding("shift-jis"));

VB.NET

Dim buf(6) As UShort           ' 0~6番地のデータを読み込む
flnet1.ReadC1(0, buf)
Dim data As FLAnyData = buf    ' シフトJISコードの文字列をString型に変換する
Dim str As String = data.ToString(Encoding.GetEncoding("shift-jis"))