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;
|
|
}
|
|
}
|
|
|
|
|
|
}
|