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); } }
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); } }
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) { } }
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; } }