Ejemplo 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);
     }
 }
Ejemplo n.º 2
0
 private void btnSend_Click(object sender, RoutedEventArgs e)
 {
     if (string.IsNullOrEmpty(tbPayLoad.Text))
     {
         return;
     }
     try
     {
         tbConsole.Text = DateTime.Now.ToString("h:mm:ss tt") + " Client: " + tbPayLoad.Text + "\n" + tbConsole.Text;
         SocketClientEx.Send(tbPayLoad.Text);
         tbPayLoad.Text = "";
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
     }
 }
Ejemplo n.º 3
0
 private void PLCGetTimer_Tick(object sender, EventArgs e)
 {
     try
     {
         //检测连接是否成功
         if (socPlc.IsConnected)
         {
             if (this.IsIpOrPortChange())
             {
                 socPlc.Disconnect();
                 this.ConnectToPlc();
             }
             if (socPlc.IsConnected)
             {
                 SetConnectState(ConnectResult.Success);
                 string senddata = ini.ReadIni("Config", "SendData");  //01 E8 00 00 00 06 01 03 9D 08 00 7C
                 if (senddata.Length != 24)
                 {
                     SimpleLogHelper.Instance.WriteLog(LogType.Info, "SendData:" + senddata + " Length: " + senddata.Length);
                 }
                 CharacterConversion cc = new CharacterConversion();
                 socPlc.Send(socPlc.ClientSocket, cc.HexConvertToByte(senddata));
             }
             else
             {
                 SetConnectState(ConnectResult.Fail);
             }
         }
         else
         {
             socPlc.NewMessageEvent -= SocPlc_NewMessageEvent;
             if (ConnectToPlc())
             {
                 SetConnectState(ConnectResult.Success);
             }
             else
             {
                 SetConnectState(ConnectResult.Fail);
                 SetConnectState(imgAutoRun, "0");
                 SetConnectState(imgCheckState, "0");
                 SetConnectState(imgErrorState, "0");
                 SetConnectState(imgWaitState, "0");
             }
         }
         //检测数据库连接状态
         if (!sql.TestConn)
         {
             if (ConnectToDataBase())
             {
                 this.txbCaiJiXinXi.Foreground = new SolidColorBrush(Colors.White); //红色表示与数据库没有连接成功
             }
             else
             {
                 this.txbCaiJiXinXi.Foreground = new SolidColorBrush(Colors.Red); //红色表示与数据库没有连接成功
             }
         }
     }
     catch (Exception ex)
     {
     }
 }
Ejemplo n.º 4
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;
            }
        }