關於安碩

【服務項目】

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

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

2019年8月26日 星期一

[筆記] 泓格 DCON 通信協定

DCON 是泓格科技自訂一個以 ASCII 字串為基礎,以類似 Modbus 一問一答機制去連線泓格自有的分散式 I/O 。





class DCON
    {
        public static string CheckSum(string Cmd)
        {
            string str = string.Empty;
            char[] CharArray = Cmd.ToCharArray();
            uint sum = 0x00;
  
            foreach (char chr in CharArray)
            {
                sum = sum + chr;
            }
            sum = sum & 0xff;
            str = Convert.ToString(sum, 16);
            return str;
        }
  
        public static bool Send(SerialPort _SerialPort, string Cmd)
        {
            if (!_SerialPort.IsOpen) return false;
            string str = Cmd + CheckSum(Cmd) + '\r';
            _SerialPort.Write(Cmd);
  
            return true;
        }
  
        public static bool Response(SerialPort _SerialPort, ref string Receive)
        {
            Receive = string.Empty;
  
            if (!_SerialPort.IsOpen) return false;
            try
            {
                _SerialPort.ReadTimeout = 3000;
                string Rev = _SerialPort.ReadTo("\r");
                string Sum = Rev.Substring(Rev.Length - 2);
                string Data = Rev.Substring(Rev.Length - 3);
                if (Sum != CheckSum(Data)) return false;
                Receive = Rev;
            }
            catch
            {
                return false;
            }
              
            return true;
        }
  
        public static bool HandShake(SerialPort _SerialPort, string Cmd, ref string Receive)
        {
            string str = string.Empty;
            if (!Send(_SerialPort, Cmd)) return false;
            if (!Response(_SerialPort, ref str)) return false;
            Receive = str;
            return true;
        }
  
    }

沒有留言:

張貼留言