| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- using ivf_tl_Entity.GlobalEnums;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ivf_tl_Entity.ComEntitys
- {
- public class Analysiser
- {
- /// <summary>
- /// 解析E方
- /// </summary>
- /// <param name="customProtocol"></param>
- /// <returns></returns>
- public static int ParseEEPROMPulse(byte[] arg)
- {
- if (!arg.Any()) return -1;
- byte[] temp = { arg[4], arg[5], arg[6], arg[7] };
- if (!BitConverter.IsLittleEndian)
- Array.Reverse(temp);
- return BitConverter.ToInt32(temp, 0);
- }
- /// <summary>
- /// 握手指令解析
- /// </summary>
- /// <param name="arg"></param>
- /// <returns></returns>
- public static int ParseShakeHandsCommand(byte[] arg)
- {
- if (arg.Any()) return Convert.ToInt32(arg[2]);
- return -1;
- }
- /// <summary>
- /// 舱门状态
- /// </summary>
- /// <param name="bs"></param>
- /// <returns></returns>
- public static State ParseDoorStatus(byte[] arg)
- {
- if (!arg.Any()) return State.未知;
- return arg[4] == 0x01 ? State.打开 : State.关闭;
- }
- /// <summary>
- /// 温度解析
- /// </summary>
- /// <param name="bs"></param>
- /// <returns></returns>
- public static decimal ParseTemperatureCommand(byte[] arg)
- {
- if (!arg.Any()) return -1m;
- byte[] temp = { arg[5], arg[4] };
- if (!BitConverter.IsLittleEndian)
- Array.Reverse(temp);
- int num = BitConverter.ToInt16(temp);
- var result = Math.Round(num / 100.00m, 2, MidpointRounding.AwayFromZero);
- return result;
- }
- /// <summary>
- /// 气压解析
- /// </summary>
- /// <param name="arg"></param>
- /// <returns></returns>
- public static decimal ParsePressureCommand(byte[] arg)
- {
- if (!arg.Any()) return -1m;
- byte[] temp = { arg[5], arg[4] };
- if (!BitConverter.IsLittleEndian)
- Array.Reverse(temp);
- int num = BitConverter.ToInt16(temp);
- return (decimal)num;
- }
- /// <summary>
- /// 仪器温度1解析
- /// </summary>
- /// <param name="customProtocol"></param>
- /// <returns></returns>
- public static decimal ParseTLTemperature1Command(byte[] arg)
- {
- if (!arg.Any()) return -1m;
- byte[] temp = { arg[7], arg[6] };
- if (!BitConverter.IsLittleEndian)
- Array.Reverse(temp);
- int num = BitConverter.ToInt16(temp);
- return Math.Round(num / 100.00m, 2, MidpointRounding.AwayFromZero);
- }
- /// <summary>
- /// 仪器温度2解析
- /// </summary>
- /// <param name="customProtocol"></param>
- /// <returns></returns>
- public static decimal ParseTLTemperature2Command(byte[] arg)
- {
- if (!arg.Any()) return -1m;
- byte[] temp = { arg[9], arg[8] };
- if (!BitConverter.IsLittleEndian)
- Array.Reverse(temp);
- int num = BitConverter.ToInt16(temp);
- return Math.Round(num / 100.00m, 2, MidpointRounding.AwayFromZero);
- }
- /// <summary>
- /// 当前电机位置解析
- /// </summary>
- /// <param name="customProtocol"></param>
- /// <returns></returns>
- public static int ParseCurrentMotor(byte[] arg)
- {
- if (!arg.Any()) return -1;
- byte[] temp = { arg[7], arg[6], arg[5], arg[4] };
- if (!BitConverter.IsLittleEndian)
- Array.Reverse(temp);
- return BitConverter.ToInt32(temp, 0);
- }
- }
- }
|