private void setterF(SerialEventArgs args, string type) { if (checkBox1.Checked) { DateTime now = DateTime.Now; StringBuilder builder = new StringBuilder(); builder.AppendFormat("{2}[{0}.{1:D3}]: ", now.ToLongTimeString(), now.Millisecond, type); if (args.Packet.Com_Packet != null) { foreach (byte item in args.Packet.Com_Packet) { builder.AppendFormat("[{0:x2}] ", item); } } if (listBox1.Items.Count > 1000) { listBox1.Items.RemoveAt(0); } listBox1.Items.Add(builder.ToString()); listBox1.SelectedIndex = listBox1.Items.Count - 1; } }
/// <summary> /// Поступил пакет из порта /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private void Serial_OnPacketSecondary(object sender, SerialEventArgs args) { try { if (args.Packet.ToPort) { Invoke(se, args, "Secondary -> "); } } catch { } }
/// <summary> /// Поступил пакет от устройства /// </summary> /// <param name="sender">Источник события</param> /// <param name="args">Параметры события</param> void serial_OnPacket(object sender, SerialEventArgs args) { try { string packet = PacketTranslater.FromUnigueToTcp(args.Packet.Com_Packet); devTcpOld.Send(packet); } catch (Exception ex) { journal.Write(ex.Message, EventLogEntryType.Error); } }
/// <summary> /// Выполнить обработку пакета в пассивном режиме /// </summary> /// <param name="args">Аргументы события</param> private void ParsePassive(SerialEventArgs args) { byte[] packet = args.Packet.Com_Packet; if (packet != null) { byte ladd = packet[1]; bool result = ((ladd & 0x80) > 0) ? true : false; if (result) { ParsePassive(args.Packet); } } }
/// <summary> /// Выполняет обработку поступающего пакета /// </summary> /// <param name="sender">Источник события</param> /// <param name="args">Аргументы события</param> public void SerialPacketHandler(object sender, SerialEventArgs args) { switch (app.Mode) { case ApplicationMode.Active: ParseActive(args); break; case ApplicationMode.Passive: ParsePassive(args); break; case ApplicationMode.Emulated: ParsePassive(args); break; } }
/// <summary> /// Выполнить обработку пакета в активном режиме /// </summary> /// <param name="args">Аргументы события</param> private void ParseActive(SerialEventArgs args) { switch (args.Packet.Role) { case Role.Master: break; case Role.Slave: Parse(args.Packet); break; case Role.Default: break; default: break; } }