/// <summary> /// 进行WS固件升级 /// </summary> /// <param name="macList">请求升级的WS列表</param> /// <param name="firmware">请求升级的固件信息</param> /// <returns>请求成功与否</returns> public bool Update(List <tMAC> macList, tFirmware firmware) { if (macList == null || macList.Count == 0 || firmware == null || firmware.DicFwBlockDat == null || firmware.DicFwBlockDat.Count == 0) { return(false); } try { // 复制一份升级mote列表 lstUpdWs = new List <tMAC>(); foreach (tMAC mote in macList) { tMAC addMote = new tMAC(); addMote.Assign(mote); lstUpdWs.Add(addMote); } // 复制一份固件信息 fw = new tFirmware(firmware); // 构造升级线程 Thread threadUpdateWorker = new Thread(UpdateHandler); threadUpdateWorker.Name = "UpdateHandler"; threadUpdateWorker.Priority = ThreadPriority.AboveNormal; // 线程升级线程 threadUpdateWorker.Start(); return(true); } catch (Exception ex) { CommStackLog.RecordErr(enLogLayer.eAdapter, "Message:" + ex.Message); CommStackLog.RecordErr(enLogLayer.eAdapter, "Source: " + ex.Source); CommStackLog.RecordErr(enLogLayer.eAdapter, "StackTrace: " + ex.StackTrace); CommStackLog.RecordErr(enLogLayer.eAdapter, "ToString: " + ex.ToString()); return(false); } }
/// <summary> /// 复制构造函数 /// </summary> /// <param name="fw">复制的对象</param> public tFirmware(tFirmware fw) { FwDesc.u32MagicWord = fw.FwDesc.u32MagicWord; FwDesc.verFw.u8Main = fw.FwDesc.verFw.u8Main; FwDesc.verFw.u8Sub = fw.FwDesc.verFw.u8Sub; FwDesc.verFw.u8Rev = fw.FwDesc.verFw.u8Rev; FwDesc.verFw.u8Build = fw.FwDesc.verFw.u8Build; FwDesc.u32Size = fw.FwDesc.u32Size; FwDesc.u8BlockSize = fw.FwDesc.u8BlockSize; FwDesc.u16BlockNum = fw.FwDesc.u16BlockNum; FwDesc.u32EntryPoint = fw.FwDesc.u32EntryPoint; DicFwBlockDat = new Dictionary <ushort, tFwBlockDat>(); for (ushort i = 0; i < fw.DicFwBlockDat.Count; i++) { tFwBlockDat fwBlkDat = new tFwBlockDat(); fwBlkDat.size = fw.DicFwBlockDat[i].size; fwBlkDat.data = new byte[fwBlkDat.size]; Array.Copy(fw.DicFwBlockDat[i].data, fwBlkDat.data, fwBlkDat.size); DicFwBlockDat.Add(i, fwBlkDat); } }