private async void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { Thread.Sleep(500); var respond = await GetRespond <ReceiveFrameBase>(); if (respond != null && respond.Code == Code.DeviceRequestPacket) { DeviceRequestPacket deviceRequestPacket = new DeviceRequestPacket(); deviceRequestPacket.Create(respond.FullFrame); var data = GetPacket?.Invoke(deviceRequestPacket.PacketIndex, deviceRequestPacket.MD5Number, deviceRequestPacket); if (data != null) { SerialPort.DataReceived -= SerialPort_DataReceived; Request(data); } else { Debug.Fail("找不到指定包"); } } else if (respond != null && respond.Code == Code.DeviceRespondUpdateResult) { DeviceRespondUpdateResult deviceRespondUpdate = new DeviceRespondUpdateResult(); deviceRespondUpdate.Create(respond.FullFrame); UpdateSuccess?.Invoke(deviceRespondUpdate.State); SerialPort.DataReceived -= SerialPort_DataReceived; } }
private Model.ServerRespondPacket UpdateHelper_GetPacket1(int packetidnex, uint md5number, DeviceRequestPacket deviceRequestPacket) { Log(deviceRequestPacket); var res = BinPkgFiles.Where(p => p.MD5 == md5number).FirstOrDefault(); if (res != null) { if (res.ProcessValue != null) { res.ProcessValue.CurrentValue = packetidnex; } var pkg = res.GetPacket(packetidnex, UpdateInfo.PacketSize); if (pkg != null) { var pkg2 = new ServerRespondPacket(md5number, Convert.ToUInt16(packetidnex), Convert.ToUInt16(pkg.Length), pkg); Log(pkg2); return(pkg2); } else { return(null); } } else { Log("指定MD5不存在"); return(null); } }