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