Esempio n. 1
0
 private void ConnectToClient()
 {
     ini.WriteIni("Config", "IP", this.txtIP.Text);
     sockClient = new SocketClientEx();
     sockClient.NewMessageEvent += SockClient_NewMessageEvent;
     if (sockClient.Connnect("2404", this.txtIP.Text))
     {
         AddLog("连接成功" + this.txtIP.Text);
         AddLog("发送:" + "680407000000");
         sockClient.Send(sockClient.ClientSocket, sockClient.StringConvertToByte("680407000000"));
     }
     else
     {
         AddLog("连接失败" + this.txtIP.Text);
     }
 }
Esempio n. 2
0
        private void SockClient_NewMessageEvent(System.Net.Sockets.Socket socket, byte[] Message)
        {
            timerCount = 0;
            string receiveData = MathHelper.ByteToHexStr(Message);

            AddLog("接收数据:" + receiveData);
            switch (receiveData.ToUpper().Substring(2, 2))
            {
            case "04":
                switch (receiveData.ToUpper())
                {
                case "68040B000000":
                    sockClient.Send(sockClient.ClientSocket, sockClient.StringConvertToByte("680e0000000064010600010000000014"));
                    break;

                case "680443000000":
                    sockClient.Send(sockClient.ClientSocket, sockClient.StringConvertToByte("680483000000"));
                    break;

                case "680483000000":
                    this.timer.Stop();
                    break;

                default:
                    break;
                }
                break;

            default:
                string leixingbiaoshi = receiveData.ToUpper().Substring(12, 2);
                int    sendcount      = MathHelper.HexToDec(receiveData.ToUpper().Substring(6, 2) + receiveData.ToUpper().Substring(4, 2));
                sendcount += 2;
                if (sendcount == 65534)
                {
                    sockClient.Send(sockClient.ClientSocket, sockClient.StringConvertToByte("680e0000000064010600010000000014"));
                    return;
                }
                string backdata = MathHelper.DecToHex(sendcount.ToString()).PadLeft(4, '0');
                backdata = "68040100" + backdata.Substring(2, 2) + backdata.Substring(0, 2);
                sockClient.Send(sockClient.ClientSocket, sockClient.StringConvertToByte(backdata));
                AddLog("S帧: " + backdata);
                if (receiveData.ToUpper().Substring(2, 2) == "0E")
                {
                    return;
                }
                switch (leixingbiaoshi)
                {
                case "01":         //遥信
                    int    xinxitishuliang = GetXinXiTiShuLiang(receiveData.ToUpper().Substring(14, 2));
                    int    address         = GetXinXiTiAddr(receiveData.ToUpper().Substring(24, 4));
                    string baowen          = receiveData.ToUpper().Substring(30, xinxitishuliang * 2);
                    this.WriteToSetIni(xinxitishuliang, address, baowen);
                    break;

                case "0D":                                              //遥测
                    if (receiveData.ToUpper().Substring(16, 2) == "03") //传输原因:自发
                    {
                        int count = MathHelper.HexToDec(receiveData.ToUpper().Substring(14, 2));
                        WriteToSetIni(count, receiveData.ToUpper().Substring(24, count * 8 * 2));
                    }
                    break;

                default:           //电度
                    break;
                }
                break;
            }
        }