/// <summary> /// 胸部推举机上报解析 /// </summary> /// <param name="body"></param> public void PaserXall(byte[] body, string idCard, DeviceType deviceType) { //运动强度 byte strength = ProtocolUtil.BcdToInt(body[1]); //运动时间 1/100秒 Int32 time = BitConverter.ToInt32(body, 2); time = IPAddress.NetworkToHostOrder(time); //总移动距离 毫米 Int32 distance = BitConverter.ToInt32(body, 6); distance = IPAddress.NetworkToHostOrder(distance); //总功 1/100 焦耳 Int32 energy = BitConverter.ToInt32(body, 10); energy = IPAddress.NetworkToHostOrder(energy); //消耗热量 1/100 卡路里 Int32 heat = BitConverter.ToInt32(body, 14); heat = IPAddress.NetworkToHostOrder(heat); //指数标识 0 正数 1 负数 //指数值 1/100 Int32 singer = BitConverter.ToInt32(body, 19); singer = IPAddress.NetworkToHostOrder(singer); singer = body[18] == 0x00 ? singer : -1 * singer; //动作节奏 0没问题 1 有些许问题 2 有问题 byte rhythem = body[23]; //使用者感想 string think = ProtocolUtil.GetEndString(body, 24); PrescriptionResult result = new PrescriptionResult(); //自觉运动强度 result.PR_SportStrength = (byte)(strength - 5); result.PR_Time1 = time / 100.0; result.PR_Distance = distance; result.PR_CountWorkQuantity = energy / 100.0; result.PR_Cal = heat / 100.0; result.PR_Index = singer / 100.0; result.PR_Evaluate = rhythem; result.PR_UserThoughts = think; result.Gmt_Create = DateTime.Now; result.Gmt_Modified = result.Gmt_Create; StringBuilder sb = new StringBuilder(); sb.Append("运动强度:").Append(strength).Append("运动时间:").Append(time).Append("总移动距离:").Append(distance).Append("总功:").Append(energy) .Append("消耗热量").Append(heat).Append("指数值:").Append(singer).Append("动作节奏:").Append(rhythem); logger.Info("训练上报的解析结果:" + sb.ToString()); TrainService trainService = new TrainService(); // 存数据库 trainService.AddPrescriptionResult(idCard, result, deviceType); }