| @ -0,0 +1,91 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| using System.Text; | |||
| using System.Threading.Tasks; | |||
| namespace ButcherFactory.Controls | |||
| { | |||
| internal class JST2018SDataFormat : DataFormatBase | |||
| { | |||
| public override int DataLength | |||
| { | |||
| get { return 10; } | |||
| } | |||
| public override char Beginchar | |||
| { | |||
| get { return (char)0xFF; } | |||
| } | |||
| public override char Endchar | |||
| { | |||
| get { return (char)0x37; } | |||
| } | |||
| public override short Bufsize | |||
| { | |||
| get { return 36; } | |||
| } | |||
| public override string ParseData(string buf, out bool isStatic) | |||
| { | |||
| string weight; | |||
| // 小数位数0-4 | |||
| int dot = (short)(0x07 & buf[1]) - 1; | |||
| weight = CharTo16(buf[2]) + CharTo16(buf[3]) + CharTo16(buf[4]); | |||
| weight = new string(weight.Reverse().ToArray()); | |||
| // insert dot | |||
| weight = InsertDot(weight, dot); | |||
| isStatic = true; // 默认 为 稳定 | |||
| // buffer[1] 符号位 | |||
| if (buf[5] == 0x01) | |||
| { | |||
| weight = (Convert.ToDecimal(weight) / 1000).ToString("#0.0"); | |||
| } | |||
| if ((buf[1] & 0x20) == 1) | |||
| weight = "-" + weight; | |||
| return weight; | |||
| } | |||
| string CharTo16(char c) | |||
| { | |||
| return ((int)c).ToString("x2"); | |||
| } | |||
| public override bool ParseAscii(string buf, out string weight, out bool isStatic) | |||
| { | |||
| isStatic = false; | |||
| weight = FindDataFrame(buf, DataLength); | |||
| if (string.IsNullOrEmpty(weight)) | |||
| { | |||
| return false; | |||
| } | |||
| weight = ParseData(weight, out isStatic); | |||
| return true; | |||
| } | |||
| private static string InsertDot(string weight, int dotBits) | |||
| { | |||
| var rst = weight.Insert(weight.Length - dotBits, ".").Trim('0'); | |||
| if (rst.StartsWith(".")) | |||
| rst = "0" + rst; | |||
| return rst; | |||
| } | |||
| public override bool ParseAscii(string buf, out string weight, out bool isStatic, out string subStr) | |||
| { | |||
| weight = ""; | |||
| isStatic = false; | |||
| subStr = ""; | |||
| return false; | |||
| } | |||
| } | |||
| } | |||