データ型の変換
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"))