/// <summary> /// 添加消息到队列 /// </summary> /// <param name="device">消息-设备</param> /// <param name="action">消息-动作</param> /// <param name="data">消息-数据</param> public static void PushMsg(string device, string action, byte[] data) { lock (obj) { if (!OnOff || (MsgQueue.Count >= 1024)) { return; } if (HexMode) { MsgQueue.Enqueue(new LogMsg(device, action, HexString.Bytes2HexString(data))); } else { MsgQueue.Enqueue(new LogMsg(device, action, HexString.Bytes2AsciiString(data))); } } }
/// <summary> /// 导出设备配置到xml文件 /// </summary> /// <param name="filename">文件名</param> public void ExportToXml(string filename) { lock (obj) { XmlTextWriter xmlWriter; xmlWriter = new XmlTextWriter(filename, Encoding.Default); xmlWriter.Formatting = Formatting.Indented; xmlWriter.WriteStartDocument(); xmlWriter.WriteStartElement("Root"); //寄存器数据 xmlWriter.WriteStartElement("Regs"); foreach (ModbusData reg in mDataRegs.Values) { xmlWriter.WriteStartElement("Reg"); xmlWriter.WriteAttributeString("Name", reg.Name); xmlWriter.WriteAttributeString("Address", reg.Addr.ToString()); xmlWriter.WriteAttributeString("Value", reg.Value.ToString()); xmlWriter.WriteAttributeString("Mode", reg.Umode.ToString()); xmlWriter.WriteAttributeString("LLimit", reg.LLimit.ToString()); xmlWriter.WriteAttributeString("HLimit", reg.HLimit.ToString()); xmlWriter.WriteAttributeString("Step", reg.Step.ToString()); xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); //文件数据 xmlWriter.WriteStartElement("Files"); foreach (FileData file in mFiles.Values) { xmlWriter.WriteStartElement("File"); xmlWriter.WriteAttributeString("Type", file.Type.ToString()); xmlWriter.WriteString(HexString.Bytes2HexString(file.Data)); xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); //结尾 xmlWriter.WriteEndElement(); xmlWriter.Close(); } }