You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

130 lines
2.7 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ButcherFactory.Controls
{
internal class Xk3190D10DataFormat : DataFormatBase
{
public override int DataLength
{
get { return 12; }
}
public override char Beginchar
{
get { return (char)0x02; }
}
public override char Endchar
{
get { return (char)0x0D; ; }
}
public override short Bufsize
{
get { return 24; }
}
public override string ParseData(string buf, out bool isStatic)
{
string weight;
// 小数位数0-4
int dot = (short)(0x0F & buf[8]);
weight = buf.Substring(2, 6).Trim();
// insert dot
weight = InsertDot(weight, dot);
isStatic = true; // 默认 为 稳定
// buffer[1] 符号位
if (buf[1] == '-')
{
weight = weight.Insert(0, "-");
}
else
{
}
return weight;
}
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)
{
string str = weight.TrimStart(new[] {
'0'
});
str = str.Trim();
if (dotBits > 0)
{
//str = str.Insert(str.Length - dotBits, ".");
if (string.IsNullOrEmpty(str))
{
str = "0";
str = str.Insert(str.Length, ".");
for (int i = 0; i < dotBits; i++)
{
str = str.Insert(str.Length, "0");
}
}
else
str = str.Insert(str.Length - dotBits, ".");
}
if (str.IndexOf(".") == 0)
{
str = str.Insert(0, "0");
}
return str;
}
public override bool ParseAscii(string buf, out string weight, out bool isStatic, out string subStr)
{
isStatic = false;
weight = FindDataFrame(buf, DataLength);
subStr = "";
if (string.IsNullOrEmpty(weight))
{
return false;
}
weight = ParseData(weight, out isStatic);
return true;
}
#region 1.3 验证int奇数偶数
/// <summary>
/// 1.3 验证int奇数偶数
/// </summary>
/// <param name="num"></param>
/// <returns></returns>
public bool isJO(int num)
{
int a = num % 2;
if (a == 0)
return true;
else
return false;
}
#endregion
}
}