| @ -0,0 +1,70 @@ | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using System.Threading.Tasks; | |||||
| namespace ButcherFactory.Controls | |||||
| { | |||||
| internal class JST8180DataFormat : DataFormatBase | |||||
| { | |||||
| public override int DataLength => 8; | |||||
| public override char Beginchar => (char)0x3D; // = 开头 | |||||
| public override char Endchar => (char)0xFF; | |||||
| public override short Bufsize => 7; | |||||
| public override string ParseData(string buf, out bool isStatic) | |||||
| { | |||||
| // 3D 34 39 2E 36 30 30 30 | |||||
| // 6.94 | |||||
| isStatic = true; | |||||
| try | |||||
| { | |||||
| // 1. 去掉 = 和 . 例:=49.6000 → 496000 | |||||
| string raw = buf.TrimStart('=').Replace(".", ""); | |||||
| // 2. 反转数字 496000 → 000694 | |||||
| char[] arr = raw.ToCharArray(); | |||||
| Array.Reverse(arr); | |||||
| string reversed = new string(arr); | |||||
| // 3. 插入小数点(固定2位小数) | |||||
| decimal weight = decimal.Parse(reversed) / 100m; | |||||
| // 4. 输出仪表显示值 | |||||
| return weight.ToString("0.00"); | |||||
| } | |||||
| catch | |||||
| { | |||||
| return "0.00"; | |||||
| } | |||||
| } | |||||
| public override bool ParseAscii(string buf, out string weight, out bool isStatic) | |||||
| { | |||||
| weight = string.Empty; | |||||
| isStatic = false; | |||||
| string frame = FindDataFrame(buf, DataLength); | |||||
| if (string.IsNullOrEmpty(frame)) return false; | |||||
| weight = ParseData(frame, out isStatic); | |||||
| return true; | |||||
| } | |||||
| public override string FindDataFrame(string buf, int fSize) | |||||
| { | |||||
| if (buf == null || buf.Length < fSize) return ""; | |||||
| int idx = buf.IndexOf(Beginchar); | |||||
| if (idx < 0 || idx + fSize > buf.Length) return ""; | |||||
| return buf.Substring(idx, fSize); | |||||
| } | |||||
| public override bool ParseAscii(string buf, out string weight, out bool isStatic, out string subStr) | |||||
| { | |||||
| weight = ""; isStatic = false; subStr = ""; return false; | |||||
| } | |||||
| } | |||||
| } | |||||