|
|
@@ -341,7 +341,7 @@ namespace CamTool
|
|
|
double sum = 0;
|
|
|
list.ForEach(i => sum += Math.Pow(i - avg, 2));
|
|
|
double st = Math.Sqrt(sum) / list.Count;
|
|
|
- if(st < 1 && currentWeight > 100)
|
|
|
+ if (st < 1 && currentWeight > 100)
|
|
|
{
|
|
|
log.Info("稳定:" + currentWeight);
|
|
|
return currentWeight;
|
|
|
@@ -449,54 +449,61 @@ namespace CamTool
|
|
|
|
|
|
private void DataReceived(object sender, SerialDataReceivedEventArgs e)
|
|
|
{
|
|
|
- byte[] buffer = new byte[sp.BytesToRead];
|
|
|
- sp.Read(buffer, 0, buffer.Length);
|
|
|
-
|
|
|
- var hex = BitConverter.ToString(buffer, 0).Replace("-", string.Empty).ToLower();
|
|
|
- foreach (byte b in buffer)
|
|
|
+ try
|
|
|
{
|
|
|
- string str = EncodingType.GetString(new byte[] { b });
|
|
|
- log.Debug("serial byte: " + b.ToString() + ", " + str);
|
|
|
- }
|
|
|
+ byte[] buffer = new byte[sp.BytesToRead];
|
|
|
+ sp.Read(buffer, 0, buffer.Length);
|
|
|
|
|
|
- serialData.AddRange(buffer);
|
|
|
+ var hex = BitConverter.ToString(buffer, 0).Replace("-", string.Empty).ToLower();
|
|
|
+ foreach (byte b in buffer)
|
|
|
+ {
|
|
|
+ string str = EncodingType.GetString(new byte[] { b });
|
|
|
+ log.Debug("serial byte: " + b.ToString() + ", " + str);
|
|
|
+ }
|
|
|
|
|
|
- int start = -1;
|
|
|
- int end = serialData.FindLastIndex(b => b - 3 == 0);
|
|
|
- if (end > -1)
|
|
|
- {
|
|
|
- List<byte> list = serialData.GetRange(0, end + 1);
|
|
|
- start = list.FindLastIndex(b => b - 2 == 0);
|
|
|
- }
|
|
|
- if (end > -1)
|
|
|
- {
|
|
|
- if (start > -1)
|
|
|
+ serialData.AddRange(buffer);
|
|
|
+
|
|
|
+ int start = -1;
|
|
|
+ int end = serialData.FindLastIndex(b => b - 3 == 0);
|
|
|
+ if (end > -1)
|
|
|
{
|
|
|
- if (end - start == 11)
|
|
|
+ List<byte> list = serialData.GetRange(0, end + 1);
|
|
|
+ start = list.FindLastIndex(b => b - 2 == 0);
|
|
|
+ }
|
|
|
+ if (end > -1)
|
|
|
+ {
|
|
|
+ if (start > -1)
|
|
|
{
|
|
|
- byte[] frame = serialData.GetRange(start, 12).ToArray();
|
|
|
- byte[] weightData = frame.Skip(1).Take(8).ToArray();
|
|
|
- log.Debug("raw weight data: " + EncodingType.GetString(weightData));
|
|
|
-
|
|
|
- string weight = EncodingType.GetString(weightData.Skip(1).Take(6).ToArray());
|
|
|
- int d = int.Parse(EncodingType.GetString(new byte[] { weightData.Last() }));
|
|
|
- if (d != 0)
|
|
|
+ if (end - start == 11)
|
|
|
{
|
|
|
- weight = weight.Insert(weight.Length - d, ".");
|
|
|
- }
|
|
|
- log.Debug("weight str: " + weight);
|
|
|
- double weightValue = Convert.ToDouble(weight);
|
|
|
- if (weightValue != 0)
|
|
|
- {
|
|
|
- log.Info("weight value: " + weightValue);
|
|
|
- }
|
|
|
+ byte[] frame = serialData.GetRange(start, 12).ToArray();
|
|
|
+ byte[] weightData = frame.Skip(1).Take(8).ToArray();
|
|
|
+ log.Debug("raw weight data: " + EncodingType.GetString(weightData));
|
|
|
|
|
|
- currentWeight = weightValue;
|
|
|
+ string weight = EncodingType.GetString(weightData.Skip(1).Take(6).ToArray());
|
|
|
+ int d = int.Parse(EncodingType.GetString(new byte[] { weightData.Last() }));
|
|
|
+ if (d != 0)
|
|
|
+ {
|
|
|
+ weight = weight.Insert(weight.Length - d, ".");
|
|
|
+ }
|
|
|
+ log.Debug("weight str: " + weight);
|
|
|
+ double weightValue = Convert.ToDouble(weight);
|
|
|
+ if (weightValue != 0)
|
|
|
+ {
|
|
|
+ log.Info("weight value: " + weightValue);
|
|
|
+ }
|
|
|
+
|
|
|
+ currentWeight = weightValue;
|
|
|
|
|
|
- serialData.RemoveRange(0, end + 1);
|
|
|
+ serialData.RemoveRange(0, end + 1);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ log.Error("串口读取出错", ex);
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|