關於安碩

【服務項目】

 自動化設備控制系統及機構設計
 PC Based 控制系統設計
 PLC 及 HMI 程式設計
 多軸運動控制
 機器視覺檢測系統設計
 資料收集及遠端監控
 設備電控電路設計及控制盤體配線
 機械手臂整合應用
 舊有設備整理及改善
 客製化程式開發
 IPC / 軸控模組 / IO 模組 代理

系統整合外包服務 E-mail: ling.ryan@gmail.com 歡迎來信連絡

2019年10月26日 星期六

[筆記] C# 的 模擬 C++ Union 方法

Modbus 通訊中針對暫存區作讀寫時必須將數值拆解成 4 個 Byte 後帶入訊息
這時使用 Union 可以簡單的轉換

using System.Runtime.InteropServices;

namespace ConsoleApplication1
{
    class Program
    {
        [StructLayout(LayoutKind.Explicit)]
        public struct Union
        {
            [FieldOffset(0)]
            public byte byte1;
            [FieldOffset(1)]
            public byte byte2;
            [FieldOffset(2)]
            public byte byte3;
            [FieldOffset(3)]
            public byte byte4;
            [FieldOffset(0)]
            public Int32 Value;
        }

        static void Main(string[] args)
        {
            Union a = new Union();

            a.byte1 = 0x00;
            a.byte2 = 0x01;
            a.byte3 = 0x00;
            a.byte4 = 0x00;
            Console.WriteLine("Union Value = " + a.Value.ToString());

        }
    }
}

沒有留言:

張貼留言