private void Disconnect(object sender, GXPacket packet) { GXIEC62056Device dev = null; if (sender is GXIEC62056Device) { dev = sender as GXIEC62056Device; } else if (sender is GXProperty) { dev = (sender as GXProperty).Device as GXIEC62056Device; } else { throw new Exception("InitRead failed. Unknown sender: " + sender.ToString()); } if (dev.Mode != Protocol.ModeA) { packet.ResendCount = -1; packet.Eop = null; packet.ChecksumSettings.Position = -3; packet.ChecksumSettings.Count = -3; packet.AppendData("B0"); packet.AppendData((byte)3); } }
private void ReadTableDataNext(object sender, GXPacket packet) { packet.Bop = null; packet.Eop = null; packet.ChecksumSettings.Type = ChecksumType.None; packet.AppendData((byte)0x06); }
private void ReadTableData(object sender, GXPacket packet) { GXIEC62056Table table = sender as GXIEC62056Table; DateTime start, end; (sender as IGXPartialRead).GetStartEndTime(out start, out end); packet.AppendData(IEC62056Parser.GenerateReadTable(table.Data, start, end, table.Parameters, table.ReadMode, table.ReadCount)); }
private bool IsTableRead(object sender, GXPacket packet) { if ((sender as GXIEC62056Table).ReadMode == 6) { GXIEC62056Table table = (GXIEC62056Table)sender; object[][] rows = Parser.IEC62056Parser.ParseTableData(packet.ExtractPacket(), ref Columns, ref Status, ref Time, ref Add, table.Data); System.Diagnostics.Debug.WriteLine("Mikko " + rows.Length); table.AddRows(table.RowCount, new List <object[]>(rows), false); } return((byte)packet.Eop != 0x4); }
public bool IsTransactionComplete(object sender, string command, GXPacket packet) { switch (command) { case "IsTableRead": return(IsTableRead(sender, packet)); default: throw new Exception("IsTransactionComplete failed. Unknown command: " + command); } }
private void ReadData(object sender, GXPacket packet) { if (!(sender is GXIEC62056Property)) { return; } GXIEC62056Property prop = sender as GXIEC62056Property; packet.AppendData("R" + prop.ReadMode.ToString()); packet.AppendData((byte)2); packet.AppendData(prop.Data + "(" + prop.Parameters + ")"); }
private void KeepAlive(GXIEC62056Device device, GXPacket packet) { if (device.AliveMode == 0) { packet.AppendData("R2"); packet.AppendData((byte)2); packet.AppendData("0.0.0()"); } else { packet.AppendData("R" + device.AliveMode.ToString()); packet.AppendData((byte)2); packet.AppendData(device.AliveData + "(" + device.AliveParameters + ")"); } }
private void Readout(object sender, GXPacket packet) { GXDevice dev = null; if (sender is GXDevice) { dev = sender as GXDevice; } else if (sender is GXTable) { dev = (sender as GXTable).Device; } else if (sender is GXCategory) { dev = (sender as GXCategory).Device; } else if (sender is GXProperty) { dev = (sender as GXProperty).Device; } else { throw new Exception("Readout failed. Unknown sender: " + sender.ToString()); } /* TODO: Readout * List<byte> readoutBytes = Handshake(sender, packet, true); * List<Parser.IECDataObject> items = Parser.IEC62056Parser.ParseReadout(readoutBytes); * foreach (Parser.IECDataObject it in items) * { * if (!it.Address.Contains("*")) * { * List<object> results = new List<object>(); * dev.FindByPropertyValue("OBISCode", it.Address, results); * if (results.Count > 0) * { * GXProperty prop = results[0] as GXProperty; * prop.ReadTime = DateTime.Now; * prop.SetValue(it.Value, false, PropertyStates.ValueChangedByDevice); * } * } * } * */ }
public void ExecuteSendCommand(object sender, string command, GXPacket packet) { switch (command) { case "ReadTableData": Status = 0; Add = 0; Columns = null; GXIEC62056Table table = (GXIEC62056Table)sender; table.ClearRows(); ReadTableData(sender, packet); break; case "ReadTableDataNext": ReadTableDataNext(sender, packet); break; case "Connect": GXIEC62056Device dev = GetDevice(sender); Connect(dev.SerialNumber, dev.Password, dev.Mode, dev.GXClient.Media, dev.WaitTime); break; case "Disconnect": Disconnect(GetDevice(sender), packet); break; case "Readout": Readout(sender, packet); break; case "ReadData": ReadData(sender, packet); break; case "KeepAlive": KeepAlive(sender as GXIEC62056Device, packet); break; default: throw new Exception("ExecuteCommand failed. Unknown command: " + command); } }
public void BeforeSend(object sender, GXPacket packet) { }