Packet CreatePacket(byte net, byte id, UInt16 oc, byte[] content) { Packet p = new Packet(); p.TargetDeviceID = id; p.TargetSubnetID = net; p.OriginalDeviceType = 64000; p.OriginalDeviceID = 254; p.OriginalSubnetID = 254; p.OperationCode = oc; p.Content = content; p.FixHeader(); p.FixLength(); return (p); }
private void tmrSendKey_Tick(object sender, EventArgs e) { if (WaitingForResponse) { log(LogTypes.MissKeyResponse, "@_@"); SystemSounds.Exclamation.Play(); faili = true; } if (chbPing.Checked) { Packet p = new Packet() { OperationCode = 0xE, OriginalDeviceID = 0xF4, OriginalSubnetID = 0xF4, TargetDeviceID = 0xFF, TargetSubnetID = 0xFF, OriginalDeviceType = 65530 }; p.FixHeader(); p.FixLength(); p.FixCRC(); comm.SendPacket(p); } else { byte channelno = (byte)rnd.Next(0, 32); if (channelno == 32) channelno = 255; else channelno = (byte)((channelno % 8) + 1); byte value; if (channelno == 255) { value = (byte)(rnd.Next(0, 2) * 100); if (value == 100) for (int i = 0; i < 4; stat[i] = true, i++) ; else for (int i = 0; i < 4; stat[i] = false, i++) ; } else { if (stat[channelno]) { value = 0; stat[channelno] = false; } else { value = 100; stat[channelno] = true; } } byte[] cntnt = PCSingleChannelControl.GetNew(channelno, value, 0, 1); Packet p = new Packet(); p.OriginalDeviceType = 0xABC0; p.OriginalDeviceID = 0xC0; p.OriginalSubnetID = 1; p.TargetDeviceID = 1; p.TargetSubnetID = 1; p.OperationCode = 0x31; p.Content = cntnt; p.FixLength(); p.FixHeader(); p.FixCRC(); WaitingForResponse = true; comm.SendPacket(p); sw.Restart(); SSend++; lblSSend.Text = SSend.ToString(); log(LogTypes.SendKey, string.Format("{2} key {0} to {1}", channelno, value, SSend.ToString().PadLeft(7, '0'))); } }
private void btnPing_Click(object sender, EventArgs e) { Packet p = new Packet() { OperationCode = 0xE, OriginalDeviceID = 0xF4, OriginalSubnetID = 0xF4, TargetDeviceID = 0xFF, TargetSubnetID = 0xFF, OriginalDeviceType = 65530 }; p.FixHeader(); p.FixLength(); p.FixCRC(); SendPacket(p); //SP.Write(p.Data, 0, p.Data.Length); }
private void btnSendPacket_Click(object sender, EventArgs e) { Packet p = new Packet() { OriginalSubnetID = Convert.ToByte(textBox3.Text, 16), OriginalDeviceID = Convert.ToByte(textBox4.Text, 16), OriginalDeviceType = Convert.ToUInt16(textBox5.Text, 16), OperationCode = getOperationCode(), TargetSubnetID = Convert.ToByte(textBox7.Text, 16), TargetDeviceID = Convert.ToByte(textBox8.Text, 16), Content = Util.Text2ByteA(textBox9.Text) }; SendPacket(p); //byte[] buff = p.Data; //SP.Write(buff, 0, buff.Length); }
PacketContentBase LogPacket(Packet packet) { try { var lvi = lstPackets.Items.Insert(0, lstPackets.Items.Count.ToString()); lvi.SubItems.Add(DateTime.Now.ToString("mm:ss.ff")); lvi.SubItems.Add(Convert.ToString(packet.OriginalSubnetID, 16) + "-" + Convert.ToString(packet.OriginalDeviceID, 16)); lvi.SubItems.Add(Convert.ToString(packet.TargetSubnetID, 16) + "-" + Convert.ToString(packet.TargetDeviceID, 16)); lvi.SubItems.Add(Convert.ToString(packet.OriginalDeviceType, 16)); lvi.SubItems.Add(Convert.ToString(packet.OperationCode, 16)); PacketContentBase pc = packet.ParseContent(); lvi.SubItems.Add(Util.ByteA2Text(packet.Content) + (pc == null ? " S:" + System.Text.ASCIIEncoding.ASCII.GetString(packet.Content) : " : " + pc.ToString())); return pc; } catch (Exception) { return null; } }
public void SendPacket(Packet p) { byte[] buff = p.Data; if (udpMode) { byte[] bufff = new byte[buff.Length + udpHeader.Length]; udpHeader.CopyTo(bufff, 0); buff.CopyTo(bufff, udpHeader.Length); udpS.Send(bufff, bufff.Length); StringBuilder sb = new StringBuilder(); for (int i = 0; i < bufff.Length; i++) sb.Append(Convert.ToString(bufff[i], 16) + " "); Invoke(new DataRecivedDLG(NewData), "<" + sb.ToString() + ">"); } else { SP.Write(buff, 0, buff.Length); LogPacket(p); } }
private void PacketRecived(byte[] data) { Packet packet = new Packet(data); if (packetReceivedEvnt != null) packetReceivedEvnt(packet); PacketContentBase pc = LogPacket(packet); if (chbResponse.Checked && pc != null) {/* IPacketContent responser = pc.GetResponse(); if (responser != null) { byte[] respContent = responser.Generate(); if (respContent.Length > 0) { var respPacket = new Packet { OperationCode = responser.OprationCode, OriginalDeviceType = 65534, OriginalSubnetID = packet.TargetSubnetID, OriginalDeviceID = packet.TargetDeviceID, TargetDeviceID = 255, TargetSubnetID = 255, Content = respContent }; SendPacket(respPacket); } }*/ } }
//******************************************************************************************************************** void comm_packetReceivedEvnt(Packet p) { device d = null; switch (p.OperationCode) { case 0xF://readRemarkResp log(p, "RRemarkResp received. " + (new PCReadDeviceRemarksResponse(p.Content)).ToString()); bool exit = false; foreach (device dvc in devices) if (dvc.id == p.OriginalDeviceID && dvc.net == p.OriginalSubnetID) exit = true; if (!exit) { d = new device() { id = p.OriginalDeviceID, net = p.OriginalSubnetID, deviceType = p.OriginalDeviceType }; d.remarks = p.Content; devices.Add(d); ReloadDevices(); System.Threading.Thread.Sleep(200); comm.SendPacket(CreatePacket(p.OriginalSubnetID, p.OriginalDeviceID, 0xF003));//mac //comm.SendPacket(CreatePacket(p.OriginalSubnetID, p.OriginalDeviceID, 0xABC0));//deviceInfo } break; case 0xF004: PCMACAddress mac = new PCMACAddress(p.Content); log(p, "MAC received. " + mac.ToString()); d = getDevice(p); if (d != null) { d.mac = p.Content; if (selDevice == d) txtMac1.Text = Util.ByteA2Text(d.mac); } break; case 0xABC1: PCInfo info = new PCInfo(p.Content); log(p, "Info received. " + info.ToString()); d = getDevice(p); if (d != null) { d.info = info; d.keys = new PCKeyConfig[info.GetByte(6)]; if (selDevice == d) { lblRCP.Visible = true; txtInputCount.Text = selDevice.info.GetByte(6).ToString(); txtOutputCount.Text = selDevice.info.GetByte(7).ToString(); txtLocked.Text = selDevice.info.GetByte(8).ToString(); txtSWVersion.Text = selDevice.info.GetWord(4).ToString(); txtHWVersion.Text = selDevice.info.GetWord(2).ToString(); } } break; case 0xABC3: PCMixConfig cfg = new PCMixConfig(p.Content); log(p, "MixConfig received. " + cfg.ToString()); d = getDevice(p); if (d != null) { if (selDevice == d) { MixChkLock.Checked = cfg._data[0] != 0; MixChkCurtainMode.Checked = cfg._data[1] != 0; } } break; case 0xABC7: PCKeyConfig k = new PCKeyConfig(p.Content); selDevice.keys[p.Content[0]] = k; break; case 0xF002: log(p, "Set MAC result: " + (p.Content[0] == PacketContentBase.ValueSuccess ? "Success" : "Failed")); break; case 0xF006: log(p, "Set ID result: " + (p.Content[0] == PacketContentBase.ValueSuccess ? "Success" : "Failed")); break; case 0xABC5: log(p, "Set Mix Config result: " + (p.Content[0] == PacketContentBase.ValueSuccess ? "Success" : "Failed")); break; case 0xABC9: log(p, "Set KeyConfig result: " + (p.Content[0] == PacketContentBase.ValueSuccess ? "Success" : "Failed")); break; } }
device getDevice(Packet p) { return getDevice(p.OriginalSubnetID, p.OriginalDeviceID); }
public void log(Packet p, string s) { lstLog.Items.Insert(0, "(" + Convert.ToString(p.OriginalSubnetID, 16) + "." + Convert.ToString(p.OriginalDeviceID, 16) + ")" + s); }
private void Form1_Load(object sender, EventArgs e) { p = new Packet(); LoadData(); }