Commit 4eaa20d8 LN

新增:氛围灯,红外传感器,压力传感器。

1 个父辈 599eba92
......@@ -360,4 +360,5 @@ MigrationBackup/
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
\ No newline at end of file
FodyWeavers.xsd
/doc
......@@ -225,6 +225,23 @@ namespace OnlineStore.Common
public static MyConfig<int> UploadVideo_ImgHeight = 1080;
[MyConfigComment("监控上传功能_图像质量")]
public static MyConfig<int> UploadVideo_ImgQuality = 100;
[MyConfigComment("LED氛围灯_端口号")]
public static MyConfig<string> Device_LedLight_PortName = "";
[MyConfigComment("红外传感器_端口号")]
public static MyConfig<string> Device_DauxiKS107_PortName = "";
[MyConfigComment("红外传感器_基准值")]
public static MyConfig<int> Device_DauxiKS107_BaseValue = 1000;
[MyConfigComment("红外传感器_最大误差值")]
public static MyConfig<int> Device_DauxiKS107_ErrorValue = 10000;
[MyConfigComment("重力传感器_端口号")]
public static MyConfig<string> Device_WeightSensor_PortName = "";
[MyConfigComment("重力传感器_上限值")]
public static MyConfig<int> Device_WeightSensor_MaxValue =10000;
}
public enum InOut_Roller_Mode
{
......
......@@ -52,6 +52,7 @@ namespace OnlineStore.Common
out_store_wait_string_ready,
in_store_detect_material,
wait_reel_transfer,
sensor_alarm,
reset_press,
reset_press_with_sudden,
runbtn_press,
......@@ -144,5 +145,6 @@ namespace OnlineStore.Common
temp,
outstore_abnormal_reel,
bacth_no_fix,
comInitError,
}
}
......@@ -78,6 +78,8 @@
<Compile Include="DeviceLibrary\Camera.cs" />
<Compile Include="DeviceLibrary\CameraTest.cs" />
<Compile Include="DeviceLibrary\CylinderManger.cs" />
<Compile Include="DeviceLibrary\dauxiKS107\DauxiKS107Controller.cs" />
<Compile Include="DeviceLibrary\flyelectronicControl\Flyelectronic_485_RGB_Controller.cs" />
<Compile Include="DeviceLibrary\IOMonitor.cs" />
<Compile Include="DeviceLibrary\IPCamera.cs" />
<Compile Include="DeviceLibrary\I_SafetyDevice.cs" />
......@@ -89,11 +91,13 @@
<Compile Include="DeviceLibrary\AxisBean.cs" />
<Compile Include="DeviceLibrary\ServerCommunication_AgvProcess.cs" />
<Compile Include="DeviceLibrary\VisionHelper.cs" />
<Compile Include="DeviceLibrary\weightSensor\OKLE_WeightSensor.cs" />
<Compile Include="TestRoi.cs" />
<Compile Include="theMachine\BoxTransport.cs" />
<Compile Include="theMachine\Common.cs" />
<Compile Include="theMachine\JobList.cs" />
<Compile Include="theMachine\LabelParam.cs" />
<Compile Include="theMachine\MainMachine _LedRGBProcess.cs" />
<Compile Include="theMachine\MainMachine_AGV.cs" />
<Compile Include="theMachine\MainMachine_ServerControl.cs" />
<Compile Include="theMachine\MainMachine _BtnProcess.cs" />
......@@ -172,5 +176,6 @@
<ItemGroup>
<WCFMetadata Include="Connected Services\" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file
......@@ -27,11 +27,13 @@ namespace DeviceLibrary
public event Func<int, int, (bool, string)> interference;
public string AxisName;
public bool ForceSafeCheck = false;
public AxisBean(ConfigMoveAxis axisConfig, string deviceName)
public int maxSensorValue = 0;
public AxisBean(ConfigMoveAxis axisConfig, string deviceName, int maxSensorValue = 0)
{
this.Config = axisConfig;
AxisName = deviceName + " " + Config.Explain + "[" + Config.DeviceName + "-" + Config.GetAxisValue() + "]";
List.Add(this);
this.maxSensorValue = maxSensorValue;
}
public bool Open(bool isCheck, out string Msg)
......@@ -203,7 +205,7 @@ namespace DeviceLibrary
return true;
}
//判断是否需要重新运动
if (MoveInfo.CanWhileCount > 0)
if (MoveInfo.CanWhileCount > 0 && CanRMove(axis))
{
string clearMsg = "";
//判断轴是否报警
......@@ -256,7 +258,7 @@ namespace DeviceLibrary
return true;
}
//判断是否需要重新运动
if (MoveInfo.CanWhileCount > 0)
if (MoveInfo.CanWhileCount > 0 && CanRMove(axis))
{
LogUtil.error(MoveInfo.Name + axis.DisplayStr + "收到原点完成信号,当前位置[" + outCount + "],重新回原点,剩余[" + MoveInfo.CanWhileCount + "]次");
//LogUtil.error( StoreName + moveAxis.DisplayStr + "重新回原点");
......@@ -371,33 +373,91 @@ namespace DeviceLibrary
}
public void MonitorAxisLoadRate(float maxloadrate)
{
//Task.Run(() =>
//{
// Task.Delay(200).Wait();
// LogUtil.info($"{AxisName}-开始负载监控,最大负载阈值:{maxloadrate}");
// List<float> loadrate = new List<float>();
// while (IsBusy)
// {
// var loadval = ((HCAxisManager)AxisManager.instance).GetAxisLoadRate(Config.DeviceName, Config.GetAxisValue());
// loadrate.Add(loadval);
// if (loadval > maxloadrate)
// {
// LogUtil.info($"{AxisName}-{loadval}>{maxloadrate}超过负载,系统急停");
// SuddenStop();
// Msg.add(AxisName + "-超过负载,系统急停", MsgLevel.alarm, ErrInfo.SuddenStop);
// break;
// }
// Task.Delay(50).Wait();
// }
// if (loadrate.Count > 5)
// {
// loadrate.Sort();
// int middleIndex = loadrate.Count / 2;
// LogUtil.info($"{AxisName}-本次负载监控:最小值:{loadrate.Min()}, 平均值:{loadrate.Average()}, 最大值{loadrate.Max()},中位数:{loadrate[middleIndex]}, 最大阈值:{maxloadrate}");
// }
//});
}
private static bool CanRMove(ConfigMoveAxis axis)
{
string AxisName = axis.GetNameStr();
try
{
//判断是否进出轴
if (RobotManage.mainMachine.InOut_Axis.Config.IsSameAxis(axis.DeviceName,axis.GetAxisValue()))
{
int maxSensorValue = Setting_Init.Device_WeightSensor_MaxValue;
if (Setting_Init.Device_WeightSensor_PortName == "" || RobotManage.oKLE_WeightSensor == null || (!RobotManage.oKLE_WeightSensor.IsPortOpen))
{
return true;
}
double value = RobotManage.oKLE_WeightSensor.GetWeight();
double maxV = RobotManage.oKLE_WeightSensor.PeakWeight();
bool canRM = true;
if (value >= maxSensorValue || maxV >= maxSensorValue)
{
canRM = false;
}
LogUtil.info($"{AxisName}-压力传感器当前值:{value} ,峰值:{maxV},上限值:{maxSensorValue}, 是否能重复运动:{canRM}");
return canRM;
}
}
catch (Exception ex)
{
LogUtil.error($"{AxisName}CanRMove 出错:" + ex.ToString());
return false;
}
return true;
}
public void SensorDetection(float maxValue)
{
if(Setting_Init.Device_WeightSensor_PortName==""|| RobotManage.oKLE_WeightSensor==null|| (!RobotManage.oKLE_WeightSensor.IsPortOpen))
{
return;
}
Task.Run(() =>
{
Task.Delay(200).Wait();
LogUtil.info($"{AxisName}-开始负载监控,最大负载阈值:{maxloadrate}");
List<float> loadrate = new List<float>();
LogUtil.info($"{AxisName}-压力传感器开始检测,配置最大值:{maxValue}");
List<double> loadrate = new List<double>();
while (IsBusy)
{
var loadval = ((HCAxisManager)AxisManager.instance).GetAxisLoadRate(Config.DeviceName, Config.GetAxisValue());
loadrate.Add(loadval);
if (loadval > maxloadrate)
{
LogUtil.info($"{AxisName}-{loadval}>{maxloadrate}超过负载,系统急停");
SuddenStop();
Msg.add(AxisName + "-超过负载,系统急停", MsgLevel.alarm, ErrInfo.SuddenStop);
break;
}
double value = RobotManage.oKLE_WeightSensor.GetWeight();
double maxV = RobotManage.oKLE_WeightSensor.PeakWeight();
loadrate.Add(value);
LogUtil.info($"{AxisName}-压力传感器当前值:{value},上限值:{maxValue}");
Task.Delay(50).Wait();
}
if (loadrate.Count > 5)
{
loadrate.Sort();
int middleIndex = loadrate.Count / 2;
LogUtil.info($"{AxisName}-本次负载监控:最小值:{loadrate.Min()}, 平均值:{loadrate.Average()}, 最大值{loadrate.Max()},中位数:{loadrate[middleIndex]}, 最大阈值:{maxloadrate}");
LogUtil.info($"{AxisName}-本次压力传感器监控:最小值:{loadrate.Min()}, 平均值:{loadrate.Average()}, 最大值{loadrate.Max()},中位数:{loadrate[middleIndex]}, 最大阈值:{maxValue}");
}
});
}
#region 匀速上升处理
private System.Timers.Timer axisCheckTimer = null;
internal string TargetIoType = "";
......
using OnlineStore.Common;
using OnlineStore;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace DeviceLibrary
{
public class DauxiKS107Controller
{
private static int baudRate = 9600;//波特率
private static Parity parity = Parity.None;//校验位
private static int dataBits = 8;//数据位
private static StopBits stopBits = StopBits.One; //停止位
private SerialPort _serialPort = null;
string comPortName;
System.Timers.Timer timer;
public volatile int Distance;
public bool IsRunning { get => timer.Enabled; }
public DauxiKS107Controller(int Elapsms = 5000)
{
timer = new System.Timers.Timer(Elapsms);
timer.Elapsed += Timer_Elapsed;
timer.AutoReset = true;
timer.Enabled = false;
}
~DauxiKS107Controller()
{
LogUtil.info($"{comPortName}声波传感器退出");
timer.Enabled = false;
_serialPort?.Close();
}
List<int> distantlist = new List<int>() { 1000, 100, 100, 100, 10 };
private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
bool readok = true;
for (int i = 0; i < 5; i++)
{
if (Quary(out int value, out string errmsg))
{
LogUtil.info($"{comPortName}读取到声波距离:{value}mm,err:{errmsg}");
readok = true;
if (value > 0 && value < 1000)
{
//Distance = value;
lock (distantlist)
{
distantlist.Add(value);
if (distantlist.Count > 8)
{
distantlist.RemoveAt(0);
}
Distance = TrimMean(distantlist, 0.8);
}
return;
}
else
readok = false;
}
else
{
readok = false;
}
}
if (!readok)
{
LogUtil.info($"{comPortName}声波传感器读取失败,重新打开");
if (!OpenPort(comPortName, out string errmsg))
{
LogUtil.info($"{comPortName}声波传感器打开失败:" + errmsg);
}
}
}
/// <summary>
/// 打开串口资源
/// <returns>返回bool类型</returns>
/// </summary>
public bool OpenPort(string _comport, out string errmsg)
{
comPortName = _comport;
//如果串口是打开的,先关闭
errmsg = "";
if (_serialPort == null)
{
try
{
_serialPort = new SerialPort(comPortName, baudRate, parity, dataBits, stopBits);
_serialPort.RtsEnable = true; //自动请求
_serialPort.ReadTimeout = 100;//超时
LogUtil.info("声波传感器" + comPortName + "打开成功");
}
catch (Exception e)
{
errmsg += crc.GetString("comOpenFail", "串口{0}打开失败", _comport);
LogUtil.info("串口"+_comport+"打开失败:" + e.ToString());
return false;
}
}
//errmsg += crc.GetString("Res0095.e19bb66e", "初始化.");
if (_serialPort.IsOpen)
_serialPort.Close();
bool ok = false;
try
{
//打开串口
//errmsg += $"打开串口:{comPortName}.";
_serialPort.Open();
LogUtil.info(_comport + "声波传感器端口打开成功" );
Thread.Sleep(200);
for (int i = 1; i < 10; i++)
{
Thread.Sleep(100);
//errmsg += crc.GetString("Res0096.184519ba", "检测数据.");
Quary(out int value, out string err);
//errmsg += err;
LogUtil.info(_comport + "声波传感器检测数据结果:"+value+"/" + err);
if (value > 0)
{
timer.Enabled = true;
ok = true;
break;
}
}
}
catch (Exception Ex)
{
errmsg += Ex.ToString();
//throw Ex;
}
return ok;
}
public bool PortIsOpen()
{
return (_serialPort != null) && (_serialPort.IsOpen);
}
public bool ClosePort()
{
if(_serialPort!=null&&_serialPort.IsOpen)
{
_serialPort.Close();
}
return true;
}
static byte[] quarycommand = new byte[] { 0xe8, 0x02, 0xb0 };
public bool Quary(out int value, out string errmsg)
{
errmsg = "";
byte[] buf = new byte[8];
value = 0;
try
{
_serialPort.Write(quarycommand, 0, quarycommand.Length);
Thread.Sleep(80);
var readlen = _serialPort.Read(buf, 0, buf.Length);
if (readlen == 2)
{
var c = new byte[] { buf[1], buf[0] };
value = (int)BitConverter.ToUInt16(c, 0);
}
else
{
errmsg += crc.GetString("comDataError", "串口{0}数据错误{1}", _serialPort.PortName, BitConverter.ToString(buf));
LogUtil.error( $"{comPortName}返回数据不正确:" + BitConverter.ToString(buf));
return false;
}
}
catch (Exception ex)
{
errmsg = ex.ToString();
return false;
}
return true;
}
public static int TrimMean(List<int> array, double percent)
{
try
{
if (array.Count < 4)
{
return array[0];
}
List<int> templist = new List<int>(array);
templist.Sort();
templist.RemoveAt(0);
templist.RemoveAt(0);
templist.RemoveAt(templist.Count - 1);
templist.RemoveAt(templist.Count - 1);
return (int)templist.Average();
}
catch (Exception ex)
{
LogUtil.error(ex.ToString());
return 0;
}
}
}
}
using log4net;
using OnlineStore.Common;
using OnlineStore;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DeviceLibrary
{
public class Flyelectronic_485_RGB_Controller : IDisposable
{
ILog loge;
int baudRate = 115200;//波特率
Parity parity = Parity.None;//校验位
int dataBits = 8;//数据位
StopBits stopBits = StopBits.One; //停止位
SerialPort _serialPort = null;
string comPortName;
string Name;
public Flyelectronic_485_RGB_Controller(string name, string logname = "RollingLogFileAppender")
{
Name = name;
loge = LogManager.GetLogger(logname);
}
/// <summary>
/// 打开串口资源
/// <returns>返回bool类型</returns>
/// </summary>
public bool OpenPort(string _comport, out string errmsg)
{
comPortName = _comport;
//如果串口是打开的,先关闭
errmsg = "";
if (_serialPort == null)
{
_serialPort = new SerialPort(comPortName, baudRate, parity, dataBits, stopBits);
//_serialPort.RtsEnable = true; //自动请求
_serialPort.ReadTimeout = 100;//超时
}
errmsg += crc.GetString("comInitError", "{0}初始化失败", _comport) ;
if (_serialPort.IsOpen)
{
_serialPort.Close();
_serialPort = null;
OpenPort(comPortName, out errmsg);
}
bool ok = false;
try
{
//打开串口
errmsg += crc.GetString("comOpenFail", "串口{0}打开失败", _comport);
_serialPort.Open();
LogUtil.info("氛围灯" + comPortName + "打开成功");
for (int i = 1; i < 10; i++)
{
Thread.Sleep(100);
//errmsg += "检测数据.";
var rev = SendAndReceive(CommandByte.GetDeviceID);
errmsg += Encoding.ASCII.GetString(rev);
if (rev.Count() > 0)
{
ok = true;
break;
}
}
}
catch (Exception Ex)
{
errmsg += Ex.ToString();
//throw Ex;
}
return ok;
}
public bool ShowColor(Color color, ColorFormat colorFormat = ColorFormat.GRB)
{
var newbyte = CommandByte.SetOneColor;
var colorbyte = ConvertColorToByteArray(color, colorFormat);
newbyte[16] = colorbyte[0];
newbyte[17] = colorbyte[1];
newbyte[18] = colorbyte[2];
var rev = SendAndReceive(newbyte);
if (rev.Length > 0)
{
var txt = Encoding.ASCII.GetString(rev);
if (txt.IndexOf("RecvEnd") >= 0)
{
return true;
}
}
return false;
}
public bool ShowEffact(string fileName)
{
if (fileName != "" && File.Exists(fileName))
{
string Text = File.ReadAllText(fileName);
var newbyte = CommandByte.GetEffBytes(Text);
foreach (var b in newbyte)
{
var rev = SendAndReceive(b);
}
return true;
}
else
{
var newbyte = CommandByte.GetEffBytes(CommandByte.eff1);
foreach (var b in newbyte)
{
var rev = SendAndReceive(b);
}
return true;
}
}
public bool ShowYellowLight()
{
string fileName = Application.StartupPath + "/ledColor/green.txt";
return ShowEffact(fileName);
}
public bool ShowGreenLight()
{
string fileName = Application.StartupPath + "/ledColor/yellow.txt";
return ShowEffact(fileName);
}
public bool CloseLed()
{
return ShowColor(Color.Black);
}
byte[] SendAndReceive(byte[] buff)
{
byte[] restr = new byte[0];
if (_serialPort == null || !_serialPort.IsOpen)
{
if (!OpenPort(comPortName, out string errmsg))
{
log("未初始化,或已断开连接:" + errmsg);
return restr;
}
}
var t = Task.Run(delegate
{
byte[] recv = new byte[512];
try
{
_serialPort.Write(buff, 0, buff.Length);
Thread.Sleep(20);
int r = _serialPort.Read(recv, 0, recv.Length);
if (r > 0)
{
var recvdata = Encoding.ASCII.GetString(recv, 0, r);
log("recvdata: " + recvdata);
return recv.Take(r).ToArray();//.Split(',');
}
}
catch (Exception e)
{
log(string.Format("{0}", e));
}
return restr;
});
try
{
t.Wait(500);
if (t.IsCompleted)
return t.Result;
else
return new byte[0];
}
catch
{
return new byte[0];
}
}
void log(string msg)
{
loge.Info(Name + $"[{comPortName}]" + ":" + msg);
Console.WriteLine(msg);
}
static class CommandByte
{
public static byte[] GetDeviceID = ConvertStringToByteArray("DD 55 EE 00 00 00 00 00 8F 01 00 00 00 03 00 01 00 00 00 AA BB");
public static byte[] SetOneColor = ConvertStringToByteArray("DD 55 EE 00 00 00 01 00 99 01 00 00 00 03 04 00 FF 00 00 AA BB");
public static string eff1 = @"
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 6D 67 44 4D 43 53 2C 1D 63 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 C4 CC 18 9A 9C 2D 5A 51 4D 2B 1C 64 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 E6 F4 07 D5 E0 10 A0 A2 2A 55 4D 4F 29 19 65 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 E7 F5 07 E7 F5 07 D5 E0 10 9B 9E 2C 52 49 51 29 19 65 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 D6 E1 0F E8 F6 06 E9 F7 06 D5 E0 10 9A 9C 2D 50 46 52 26 15 67 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 A3 A6 29 D8 E3 0F E8 F6 06 EA F8 06 D1 DC 12 90 90 32 48 3D 56 25 14 67 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 5D 55 4B A5 A9 27 D8 E4 0E EA F8 06 E6 F3 08 CA D4 15 8B 8B 35 49 3E 55 27 16 66 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 2F 20 62 61 5A 49 AA AF 25 DD EA 0C EB F9 05 E6 F3 08 CD D7 14 91 91 32 4E 44 53 28 18 65 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1D 0C 6B 32 24 61 68 63 46 B2 B7 21 DF EC 0B EB FA 05 E8 F6 06 D1 DC 12 99 9B 2E 54 4B 50 29 19 65 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1E 0D 6A 34 26 60 6A 64 45 B3 B9 21 DE EB 0B EA F8 06 E8 F6 06 D5 E0 10 9C 9F 2C 55 4C 4F 2A 1A 65 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1F 0E 6A 34 26 60 65 5F 47 A9 AD 26 D9 E5 0E E9 F7 06 E8 F6 06 D6 E1 0F 9D A0 2C 54 4B 50 28 18 65 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1D 0B 6B 30 21 62 5C 54 4C A4 A7 28 D8 E3 0F E7 F5 07 EA F8 06 D3 DE 11 9B 9E 2C 54 4B 50 29 19 65 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1D 0B 6B 2D 1E 63 5B 53 4C A2 A5 29 D5 E0 10 E7 F5 07 E7 F5 07 D3 DE 11 9A 9C 2D 51 47 51 27 17 66 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1D 0B 6B 2E 1F 63 5A 52 4D A2 A5 29 D8 E3 0F E9 F7 06 E8 F6 06 D3 DE 11 93 94 30 4A 3F 55 25 14 67 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1D 0C 6B 2D 1E 63 5C 54 4C A5 A8 28 D8 E4 0E E9 F7 06 E7 F5 07 CC D6 14 88 87 36 42 36 59 22 11 69 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 2D 1E 63 5D 55 4B A8 AC 26 DD EA 0C EB FA 05 E5 F2 08 C4 CC 18 7E 7B 3B 41 35 59 22 11 69 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 2F 20 62 63 5C 49 B2 B7 21 E1 EE 0A EA F8 06 E3 F1 09 C0 C8 1A 7C 79 3C 3F 33 5A 22 12 68 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1D 0C 6B 34 26 60 6E 69 43 BC C4 1C E1 EF 0A E9 F7 06 E1 EF 0A C1 C9 1A 7F 7C 3B 40 34 5A 22 12 68 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 20 0F 6A 3D 30 5B 7B 78 3D C0 C8 1A E2 F0 09 E8 F6 06 E2 F0 09 C3 CB 19 7D 7A 3B 3A 2D 5D 1E 0D 6A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 22 11 69 3F 33 5A 7B 78 3D BD C5 1C E0 ED 0B EA F8 06 E5 F2 08 BD C5 1C 6B 65 44 31 23 61 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 22 12 68 3E 31 5B 78 75 3E BC C4 1C E2 F0 09 EB FA 05 E0 ED 0B AD B2 24 5E 56 4B 2C 1D 63 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 21 10 69 3D 30 5B 7C 79 3C C6 CF 17 E6 F4 07 EA F8 06 D9 E5 0E A4 A7 28 5A 52 4D 2D 1E 63 1D 0C 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 21 10 69 43 37 58 8D 8D 34 D0 DB 12 E8 F6 06 E9 F7 06 D8 E3 0F A1 A4 2A 5B 53 4C 2B 1B 64 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 27 17 66 50 46 52 98 9A 2E D6 E1 0F E9 F7 06 E8 F6 06 D6 E1 0F A1 A4 2A 5A 52 4D 2B 1C 64 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 29 19 65 55 4D 4F 9D A0 2C D6 E1 0F E9 F7 06 E8 F6 06 D7 E2 0F A1 A4 2A 5A 52 4D 2B 1C 64 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 2A 1A 65 55 4C 4F 9D A0 2C D7 E2 0F E9 F7 06 E8 F6 06 D8 E4 0E A8 AC 26 61 5A 49 31 23 61 1E 0D 6A 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 2C 1D 63 56 4E 4F 9E A1 2B D5 E0 10 E7 F5 07 EA F8 06 DD E9 0C AD B2 24 66 60 47 34 26 60 20 0F 6A 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1D 0B 6B 2B 1B 64 54 4B 50 9B 9D 2D D3 DE 11 E7 F5 07 EB FA 05 DE EB 0B B1 B6 22 6C 66 44 39 2B 5D 1F 0E 6A AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1D 0B 6B 2A 1A 65 53 4A 50 94 95 30 CF DA 13 E6 F4 07 E9 F7 06 DD EA 0C B4 BA 20 6F 6A 42 38 2A 5E AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 28 18 65 4D 43 53 8E 8E 33 CB D5 15 E5 F2 08 E7 F5 07 DE EB 0B B4 BA 20 71 6D 41 AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 27 17 66 49 3E 55 88 87 36 C9 D2 16 E4 F2 08 E7 F5 07 DD EA 0C B7 BD 1F AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 24 13 68 47 3C 56 88 87 36 C5 CE 18 E3 F1 09 E8 F6 06 E0 ED 0B AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 25 14 67 45 3A 57 87 86 37 C5 CD 18 E4 F2 08 EB F9 05 AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 25 14 67 43 38 58 82 80 39 C2 CA 19 E4 F2 08 AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 01 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 23 13 68 41 35 59 77 74 3E BA C1 1D AA BB
";
public static byte[][] GetEffBytes(string eff)
{
List<byte[]> bytes = new List<byte[]>();
var effs = eff.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var ef in effs)
{
bytes.Add(ConvertStringToByteArray(ef));
}
return bytes.ToArray();
}
}
static byte[] ConvertStringToByteArray(string input)
{
// 去除字符串中的空格
string[] hexValues = input.Trim().Split(' ');
// 创建一个与字符串长度相等的byte[]数组
byte[] byteArray = new byte[hexValues.Length];
// 将每个字符串转换为对应的byte值
for (int i = 0; i < hexValues.Length; i++)
{
byteArray[i] = Convert.ToByte(hexValues[i], 16);
}
return byteArray;
}
public enum ColorFormat
{
RGB,
BGR,
BRG,
GRB,
GBR,
RBG
}
public static byte[] ConvertColorToByteArray(Color color, ColorFormat format)
{
byte[] result = new byte[3];
switch (format)
{
case ColorFormat.RGB:
result[0] = color.R;
result[1] = color.G;
result[2] = color.B;
break;
case ColorFormat.BGR:
result[0] = color.B;
result[1] = color.G;
result[2] = color.R;
break;
case ColorFormat.BRG:
result[0] = color.B;
result[1] = color.R;
result[2] = color.G;
break;
case ColorFormat.GRB:
result[0] = color.G;
result[1] = color.R;
result[2] = color.B;
break;
case ColorFormat.GBR:
result[0] = color.G;
result[1] = color.B;
result[2] = color.R;
break;
case ColorFormat.RBG:
result[0] = color.R;
result[1] = color.B;
result[2] = color.G;
break;
default:
throw new ArgumentException("Invalid format specified.");
}
return result;
}
public void Dispose()
{
_serialPort?.Close();
}
}
}
using log4net;
using OnlineStore;
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace DeviceLibrary
{
public class OKLE_WeightSensor
{
SerialPort port;
Thread thread;
ILog loge;
ushort seq = 0;
public byte station = 1;
public OKLE_WeightSensor(string logName= "RollingLogFileAppender")
{
this.loge = LogManager.GetLogger(logName);
port = new SerialPort();
port.BaudRate = 9600;
port.Parity = Parity.None;
port.DataBits = 8;
port.StopBits = StopBits.One;
port.ReadTimeout = 1000;
port.WriteTimeout = 1000;
thread = new Thread(new ThreadStart(Monitor));
thread.Start();
}
void Monitor()
{ }
public bool IsPortOpen { get => port == null ? false : port.IsOpen; }
public void Close()
{
port.Close();
}
string PortName = "";
#region 地址对应
enum Addr
{
传感器灵敏度 = 46, //uint32 传感器灵敏度大小,免砝码标定用。范围:0.1mv/V~7.8mv/V,设置时无需输入小数点,比如灵敏度为2.0000mv/V,则写入20000(小数点后保留4位)
传感器量程 = 48, //uint32 传感器量程大小,免砝码标定用。如传感器量程为100kg,要精确到1g,则输入100000;(V1.1版固件以上支持)
毛重 = 80, //int32 实际毛重,负数采用标准补码方式
最大称量 = 86, //uint32 最大称量值;范围:0~8000000;使用称台功能前需先设置此值
称台分度 = 88, //uint16 称台分度值;使用称台功能前需先设置此值。0x00:0.0001 0x01:0.0002 0x02:0x0005
//0x03:0.001 0x04:0.002 0x05:0.005
//0x06:0.01 0x07:0.02 0x08;0.05
//0x09:0.1 0x0A:0.2 0x0B:0.5
//0x0C:1 0x0D:2 0x0E:5
//0x0F:10 0x10:20 0x11:50
手动置零范围 = 93, //uint16 设置手动清零的范围;单位为满量程的百分比;写0后手动清零功能无效
执行手动置零 = 94, //uint16 写入0x01后执行手动置零操作
自动零位跟踪范围 = 96, //uint16 参数范围:0~10000;单位:0.1d;设置0时关闭零位跟踪功能
清除峰谷值 = 290, //uint16 写入0x01后清除峰谷值
峰值 = 291, //int32
峰值检测使能方式 = 295, //uint16 0:关闭峰值检测;1:力值超过峰值阈值后启动峰值检测;2:由外部触发并满足峰值阈值后启动峰值检测
比较器0使能方式 = 310, //uint16 0:比较器停止;1:上电即启动比较器;2:外部信号启停比较器
比较器0判断方式 = 311, //uint16 比较器判断方式如下;0x00:力值>上限 0x01:中限<力值≤上限 0x02:下限<力值≤中限 0x03:力值≤下限 0x04:力值>上限 下限<力值≤中限 0x05:力值>上限 力值≤下限 0x06:力值≤下限 中限<力值≤上限
比较器0数据来源 = 312, //uint16 比较器数据来源如下;0x00:测量值 0x01:毛重; 0x02:净重;0x03:峰值; 0x04:谷值; 0x05:峰值-谷值
比较器0判断延时 = 313, //uint16 比较器判断延时时间;单位0.1秒
上限比较值0 = 314, //uint32 设置上限值大小
}
#endregion
public bool Open(string portName, out string msg)
{
try
{
msg = "";
PortName = portName;
port = new SerialPort();
port.BaudRate = 9600;
port.Parity = Parity.None;
port.DataBits = 8;
port.StopBits = StopBits.One;
port.ReadTimeout = 1000;
port.WriteTimeout = 1000;
port.PortName = PortName;
port.Open();
if (!port.IsOpen)
{
msg += crc.GetString("comOpenFail", "串口{0}打开失败", PortName);
//msg = "端口连接失败:" + PortName;
log("串口打开失败:" + PortName.ToString());
return false;
}
else
{
LogUtil.info("压力传感器" + PortName + "打开成功");
}
Init();
ReadAndLog();
int v = Setting_Init.Device_WeightSensor_MaxValue;
if(v > 0)
{
SetAlarmWeight(v);
log("SetAlarmWeight=" + v);
}
log("GetWeight: " + GetWeight());
return true;
}
catch (Exception e)
{
msg = crc.GetString("comOpenFail", "串口{0}打开失败", PortName);
//msg =e.ToString();
log("串口"+PortName+"打开失败:"+e.ToString());
return false;
}
}
double ReadInt32(Addr addr)
{
var ret = Read(addr, 2);
if (ret.Length > 7)
{
var b = new byte[] { ret[6], ret[5], ret[4], ret[3] };
return ((double)BitConverter.ToInt32(b, 0)) / 100;
}
return double.MinValue;
}
short ReadShort(Addr addr)
{
var ret = Read(addr, 1);
if (ret.Length >= 7)
{
var b = new byte[] { ret[4], ret[3] };
return BitConverter.ToInt16(b, 0);
}
return -1;
}
byte[] Read(Addr addr, int quantity)
{
var seqhead = BitConverter.GetBytes(seq);
var addrbyte = BitConverter.GetBytes((uint)addr);
var quantitybyte = BitConverter.GetBytes(quantity);
byte[] by = new byte[]
{
station,
0x03,
//读地址
addrbyte[1],
addrbyte[0],
//读数量
quantitybyte[1],
quantitybyte[0],
0x00,
0x00
};
CalculateCRC(by, by.Length - 2, out ushort checksun);
var crcbyte = BitConverter.GetBytes(checksun);
by[by.Length - 2] = crcbyte[0];
by[by.Length - 1] = crcbyte[1];
log(addr.ToString() + "\treaddata: " + BitConverter.ToString(by).Replace("-", " "));
return SendAndReceive(by, addr.ToString());
}
bool WriteUShort(Addr addr, ushort value)
{
var b = BitConverter.GetBytes(value);
b = b.Reverse().ToArray();
var ret = Write(addr, b);
return ret.Length > 0;
}
bool WriteUInt(Addr addr, uint value)
{
var b = BitConverter.GetBytes(value);
b = b.Reverse().ToArray();
var ret = Write(addr, b);
return ret.Length > 0;
}
byte[] Write(Addr addr, byte[] value)
{
var seqhead = BitConverter.GetBytes(seq);
var addrbyte = BitConverter.GetBytes((uint)addr);
byte[] by2 = new byte[]
{
station,
0x10,
//读地址
addrbyte[1],
addrbyte[0],
//要写入的寄存器数量
0x00,
(byte)(value.Length/2),
//数据字节计数,表示后面要写入的数据字节数
(byte)value.Length,
};
var by3 = by2.ToList();
by3.AddRange(value);
by3.AddRange(new byte[] { 0x00, 0x00 });
var by = by3.ToArray();
CalculateCRC(by, by.Length - 2, out ushort checksun);
var crcbyte = BitConverter.GetBytes(checksun);
by[by.Length - 2] = crcbyte[0];
by[by.Length - 1] = crcbyte[1];
log(addr.ToString() + "\twritedata: " + BitConverter.ToString(by).Replace("-", " "));
return SendAndReceive(by, addr.ToString());
}
byte[] SendAndReceive(byte[] buff, string cmdname = "")
{
lock (port)
{
byte[] restr = new byte[0];
if (port == null || !port.IsOpen)
{
if (!Open(PortName,out string msg))
{
log(PortName+"未初始化,或已断开连接");
return restr;
}
}
var t = Task.Run(delegate
{
byte[] recv = new byte[256];
try
{
port.Write(buff, 0, buff.Length);
//port.DiscardInBuffer();
Thread.Sleep(60);
int r = port.Read(recv, 0, recv.Length);
var recvdata = recv.Take(r).ToArray();
port.DiscardOutBuffer();
port.DiscardInBuffer();
CalculateCRC(recvdata, recvdata.Length - 2, out ushort checksun);
var crcbyte = BitConverter.GetBytes(checksun);
log(cmdname + "\trecvdata: " + BitConverter.ToString(recvdata).Replace("-", " ") + " crc:" + BitConverter.ToString(crcbyte).Replace("-", " "));
if (recvdata.Length > 5
&& recvdata[1] == buff[1]
&& recvdata[recvdata.Length - 2] == crcbyte[0]
&& recvdata[recvdata.Length - 1] == crcbyte[1])
{
return recvdata;
}
return restr;
}
catch (SocketException e)
{
log(string.Format("{0} Error code: {1}.", e.Message, e.ErrorCode));
}
return restr;
});
t.Wait(2000);
if (t.IsCompleted)
return t.Result;
else
return new byte[0];
}
}
/// <summary>
/// 初始化设置
/// </summary>
/// <returns></returns>
public bool Init()
{
if (!WriteUInt(Addr.传感器灵敏度, 4202))
return false;
if (!WriteUInt(Addr.传感器量程, 1000))
return false;
if (!WriteUInt(Addr.最大称量, 1000))
return false;
if (!WriteUShort(Addr.称台分度, 6))
return false;
if (!WriteUShort(Addr.峰值检测使能方式, 1))
return false;
if (!WriteUShort(Addr.比较器0使能方式, 1))
return false;
if (!WriteUShort(Addr.比较器0判断方式, 0))
return false;
if (!WriteUShort(Addr.比较器0数据来源, 0))
return false;
if (!WriteUShort(Addr.比较器0判断延时, 0))
return false;
if (!WriteUShort(Addr.手动置零范围, 100))
return false;
return false;
}
public void ReadAndLog()
{
double lingmindu = ReadInt32(Addr.传感器灵敏度);
loge.Info($"读取到灵敏度:{lingmindu}");
double licheng = ReadInt32(Addr.传感器量程);
loge.Info($"读取到传感器量程:{licheng}");
double chengliang = ReadInt32(Addr.最大称量);
loge.Info($"读取到最大称量:{chengliang}");
double fendu = ReadShort(Addr.称台分度);
loge.Info($"读取到称台分度:{fendu}");
double fengzhi = ReadShort(Addr.峰值检测使能方式);
loge.Info($"读取到峰值检测使能方式:{fengzhi}");
double bijiaoqi = ReadShort(Addr.比较器0使能方式);
loge.Info($"读取到比较器0使能方式:{bijiaoqi}");
double panduan = ReadShort(Addr.比较器0判断方式);
loge.Info($"读取到比较器0判断方式:{panduan}");
double laiyuan = ReadShort(Addr.比较器0数据来源);
loge.Info($"读取到比较器0数据来源:{laiyuan}");
double yanchi = ReadShort(Addr.比较器0判断延时);
loge.Info($"读取到比较器0判断延时:{yanchi}");
double fanwei = ReadShort(Addr.手动置零范围);
loge.Info($"读取到手动置零范围:{fanwei}");
}
/// <summary>
/// 获取重量值
/// </summary>
/// <returns></returns>
public double GetWeight()
{
return ReadInt32(Addr.毛重);
}
/// <summary>
/// 重置尖峰重量值
/// </summary>
/// <returns></returns>
public bool ResetPeakWeight()
{
return WriteUShort(Addr.清除峰谷值, 1);
}
/// <summary>
/// 获取尖峰重量值
/// </summary>
/// <returns></returns>
public double PeakWeight()
{
return ReadInt32(Addr.峰值);
}
/// <summary>
/// 归零
/// </summary>
/// <returns></returns>
public bool ResetZero()
{
return WriteUShort(Addr.执行手动置零, 1);
}
/// <summary>
/// 设置报警阈值
/// </summary>
/// <returns></returns>
public bool SetAlarmWeight(double kg)
{
return WriteUInt(Addr.上限比较值0, (uint)(kg * 100));
}
static void CalculateCRC(byte[] pByte, int nNumberOfBytes, out ushort pChecksum)
{
int nBit;
ushort nShiftedBit;
pChecksum = 0xFFFF;
for (int nByte = 0; nByte < nNumberOfBytes; nByte++)
{
pChecksum ^= pByte[nByte];
for (nBit = 0; nBit < 8; nBit++)
{
if ((pChecksum & 0x1) == 1)
{
nShiftedBit = 1;
}
else
{
nShiftedBit = 0;
}
pChecksum >>= 1;
if (nShiftedBit != 0)
{
pChecksum ^= 0xA001;
}
}
}
}
void log(string msg)
{
loge.Info("x光高压:" + msg);
Console.WriteLine(msg);
}
}
}
......@@ -159,7 +159,8 @@ namespace DeviceLibrary
case MoveStep.StoreTS06:
MoveInfo.NextMoveStep(MoveStep.StoreTS07);
InOut_Axis.AbsMove(MoveInfo, From.InOut_P2, Config.InOut_P2_speed);
InOut_Axis.MonitorAxisLoadRate(Setting_Init.LoadRateLimit_InOutMaxLoadRate);
//InOut_Axis.MonitorAxisLoadRate(Setting_Init.LoadRateLimit_InOutMaxLoadRate);
InOut_Axis.SensorDetection(Setting_Init.Device_WeightSensor_MaxValue);
MoveInfo.log($"{storeMoveType}:进出轴去取料点P2【{From.InOut_P2}】【{Config.InOut_P2_speed}】");
break;
case MoveStep.StoreTS07:
......@@ -202,20 +203,30 @@ namespace DeviceLibrary
MoveInfo.log($"{storeMoveType}:旋转轴去取料点P2【{Fix.Middle_P2}】【{Config.Middle_P2_speed}】");
UpDown_Axis.AbsMove(MoveInfo, Fix.UpDown_PH, Config.UpDown_P1_speed);
MoveInfo.log($"{storeMoveType}:升降轴去取料高点【{Fix.UpDown_PH}】【{Config.UpDown_P1_speed}】");
SensorProcess();
break;
case MoveStep.StoreFIX02:
MoveInfo.NextMoveStep(MoveStep.StoreFIX03);
InOut_Axis.AbsMove(MoveInfo, Fix.InOut_P2, Config.InOut_P2_speed);
InOut_Axis.MonitorAxisLoadRate(Setting_Init.LoadRateLimit_InOutMaxLoadRate);
//InOut_Axis.MonitorAxisLoadRate(Setting_Init.LoadRateLimit_InOutMaxLoadRate);
InOut_Axis.SensorDetection(Setting_Init.Device_WeightSensor_MaxValue);
MoveInfo.log($"{storeMoveType}:进出轴去取料点【{Fix.InOut_P2}】【{Config.InOut_P2_speed}】");
break;
case MoveStep.StoreFIX03:
RobotManage.CameraA.CameraGrabOne(RobotManage.CameraA.GetFixtureStateFilename(To.posid, WareCode, storeMoveType, FixtureState.ToFix));
MoveInfo.NextMoveStep(MoveStep.StoreFIX04);
Comp_Axis.AbsMove(MoveInfo, Fix.Comp_PH, Config.Comp_P2_speed);
MoveInfo.log($"{storeMoveType}:压紧轴去压紧高点【{Fix.Comp_PH}】【{Config.Comp_P2_speed}】");
UpDown_Axis.AbsMove(MoveInfo, Fix.UpDown_PL, Config.UpDown_P3_speed / 2);
MoveInfo.log($"{storeMoveType}:升降轴去取料低点【{Fix.UpDown_PL}】【{Config.UpDown_P3_speed / 2}】");
bool sCheck= SensorProcess();
if (!sCheck)
{
}
RobotManage.CameraA.CameraGrabOne(RobotManage.CameraA.GetFixtureStateFilename(To.posid, WareCode, storeMoveType, FixtureState.ToFix));
MoveInfo.NextMoveStep(MoveStep.StoreFIX04);
Comp_Axis.AbsMove(MoveInfo, Fix.Comp_PH, Config.Comp_P2_speed);
MoveInfo.log($"{storeMoveType}:压紧轴去压紧高点【{Fix.Comp_PH}】【{Config.Comp_P2_speed}】");
UpDown_Axis.AbsMove(MoveInfo, Fix.UpDown_PL, Config.UpDown_P3_speed / 2);
MoveInfo.log($"{storeMoveType}:升降轴去取料低点【{Fix.UpDown_PL}】【{Config.UpDown_P3_speed / 2}】");
break;
case MoveStep.StoreFIX04:
......@@ -278,7 +289,8 @@ namespace DeviceLibrary
case MoveStep.StoreFIX04_05_DownToFixLow:
MoveInfo.NextMoveStep(MoveStep.StoreFIX04_06_InoutToPos);
InOut_Axis.AbsMove(MoveInfo, Fix.InOut_P2, Config.InOut_P2_speed);
InOut_Axis.MonitorAxisLoadRate(Setting_Init.LoadRateLimit_InOutMaxLoadRate);
//InOut_Axis.MonitorAxisLoadRate(Setting_Init.LoadRateLimit_InOutMaxLoadRate);
InOut_Axis.SensorDetection(Setting_Init.Device_WeightSensor_MaxValue);
MoveInfo.log($"{storeMoveType}:进出轴去取料点P2【{Fix.InOut_P2}】【{Config.InOut_P2_speed}】");
break;
case MoveStep.StoreFIX04_06_InoutToPos:
......@@ -352,7 +364,8 @@ namespace DeviceLibrary
case MoveStep.StoreTS12:
MoveInfo.NextMoveStep(MoveStep.StoreTS13);
InOut_Axis.AbsMove(MoveInfo, To.InOut_P2, Config.InOut_P2_speed);
InOut_Axis.MonitorAxisLoadRate(Setting_Init.LoadRateLimit_InOutMaxLoadRate);
//InOut_Axis.MonitorAxisLoadRate(Setting_Init.LoadRateLimit_InOutMaxLoadRate);
InOut_Axis.SensorDetection(Setting_Init.Device_WeightSensor_MaxValue);
MoveInfo.log($"{storeMoveType}:进出轴去取料点P2【{To.InOut_P2}】【{Config.InOut_P2_speed}】");
break;
case MoveStep.StoreTS13:
......@@ -447,5 +460,47 @@ namespace DeviceLibrary
// //return pos > 0 ? RobotManage.CameraA : RobotManage.CameraB;
// return RobotManage.CameraA;
//}
/// <summary>
/// 返回ture表示没问题,返回false需要报警
/// </summary>
/// <returns></returns>
private bool SensorProcess()
{
try
{
if (Setting_Init.Device_DauxiKS107_PortName == "" || RobotManage.dauxiKS107Controller == null || RobotManage.dauxiKS107Controller.PortIsOpen ()== false)
{
return true ;
}
if (RobotManage.dauxiKS107Controller.Quary(out int value, out string errMsg))
{
int cha = value - Setting_Init.Device_DauxiKS107_BaseValue;
if (cha > Setting_Init.Device_DauxiKS107_ErrorValue)
{
TimeSpan span = DateTime.Now - RobotManage.LastResetTime;
RobotManage.SensorNeedReset = true;
if (span.TotalHours > 1)
{
LogUtil.error($"传感器误差过大,需要复位:当前值:{value},基准值:{Setting_Init.Device_DauxiKS107_BaseValue},SensorErroCount={RobotManage.SensorNeedReset}, 最大误差:{Setting_Init.Device_DauxiKS107_ErrorValue}," +
$"上次复位时间{RobotManage.LastResetTime.ToShortDateString()},一小时内出现红外传感器检测错误,需要报警");
RobotManage.SensorNeedAlarm = true;
return false;
}
else
{
LogUtil.error($"传感器误差过大,需要复位:当前值:{value},基准值:{Setting_Init.Device_DauxiKS107_BaseValue},SensorErroCount={RobotManage.SensorNeedReset},最大误差:{Setting_Init.Device_DauxiKS107_ErrorValue}");
}
}
}
}
catch (Exception ex)
{
LogUtil.error("SensorProcess 出错:" + ex.ToString());
}
return true;
}
}
}
using OnlineStore;
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Diagnostics.Eventing.Reader;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Timers;
using static System.Windows.Forms.AxHost;
namespace DeviceLibrary
{
partial class MainMachine
{
private Flyelectronic_485_RGB_Controller rGB_Controller = null;
private bool rgbLedInitOk = false;
public string lastColor = "";
System.Threading.Timer ledRgbTimer;
public bool CloseRgbLed()
{
if(rgbLedInitOk)
{
rGB_Controller.Dispose();
}
return true;
}
public bool InitRgbLed(out string msg)
{
msg = "";
string port = Setting_Init.Device_LedLight_PortName;
if (port == "")
{
LogUtil.info( "未配置LED灯端口号");
return false;
}
rGB_Controller = new Flyelectronic_485_RGB_Controller("LED");
bool result = rGB_Controller.OpenPort(port, out msg);
if (result)
{
LogUtil.error("LED灯初始化成功");
rgbLedInitOk = true;
ledRgbTimer = new System.Threading.Timer(new TimerCallback(RgbLedProcess), null, 0, 1000);
GC.KeepAlive(ledtimer);
msg = "";
return true;
}
else
{
LogUtil.error("LED灯初始化失败:" + msg);
}
return false;
}
private void ShowColor(Color color)
{
if (lastColor.Equals(color.ToArgb().ToString()))
{
return;
}
rGB_Controller.CloseLed();
rGB_Controller.ShowColor(color);
}
private void RgbLedProcess(object o)
{
if (rGB_Controller == null || (!rgbLedInitOk))
{
return;
}
// 红色: 急停,
//紫色: 异常,
//蓝绿: 待机
//流动绿: 入库
//流动黄: 出库,
//白色: 等待用户响应(等待取走盘等),
//蓝色: 扫码检测
if (runStatus == RunStatus.Stop)
{
//未启动 黑色
ShowColor(Color.Black);
}
else if (isInSuddenDown)
{
//红色: 急停,
ShowColor(Color.Red);
}
else if (hasAlarm)
{
//紫色: 异常,
ShowColor(Color.Purple);
} //温度超限
else if (IsTHoutRange())
{
//紫色: 异常,
ShowColor(Color.Purple);
}
//温度超限30分钟
else if (IsTHoutRangeOver30m())
{
//紫色: 异常,
ShowColor(Color.Purple);
}
else if (runStatus == RunStatus.Running)
{
var h = NGDoor_Tray_Test_Reel;
if (h != null && h.Value)
{
//等待料盘拿走
//白色: 等待用户响应(等待取走盘等),
//蓝色: 扫码检测
ShowColor(Color.White);
}
else if (ClampMoveInfo.IsStep(MoveStep.ReelClamp_10) && (!RobotManage.InoutDebugMode) && (!ClampMoveInfo.MoveParam.IsNg))
{
//蓝色: 扫码检测
ShowColor(Color.Blue);
}
//出入库 绿闪 黄闪
else if (StoreMoveInfo.MoveStep >= MoveStep.StoreOut10)
{
//流动黄: 出库,
if (lastColor.Equals("yellowRun"))
{
return;
}
rGB_Controller.CloseLed();
rGB_Controller.ShowYellowLight();
}
else if (StoreMoveInfo.MoveStep >= MoveStep.StoreIn01)
{
//流动绿: 入库
if (lastColor.Equals("yellowRun"))
{
return;
}
rGB_Controller.CloseLed();
rGB_Controller.ShowYellowLight();
}
}
else
{
//待机 蓝绿
ShowColor(Color.FromArgb(0, 128, 128));
}
}
}
}
......@@ -355,6 +355,7 @@ namespace DeviceLibrary
IOMove(IO_Type.LineRun, IO_VALUE.LOW);
IOMove(IO_Type.LineRev, IO_VALUE.LOW);
LedProcess(null);
RgbLedProcess("");
SoundsController.StopPlay();
LogUtil.info("开始停止系统3.");
}
......@@ -370,7 +371,8 @@ namespace DeviceLibrary
Alarm(AlarmType.None);
runStatus = RunStatus.HomeReset;
ResetMoveInfo.NewMove(MoveStep.H01_HomeReset);
ResetMoveInfo.log("开始回原");
ResetMoveInfo.log("开始回原,记录最后一次回原时间");
RobotManage.LastResetTime = DateTime.Now;
ResetMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
}
......
......@@ -223,10 +223,30 @@ namespace DeviceLibrary
ReelPutted(StoreMoveInfo.MoveParam.PlateH);
OutStoreJobList.ClearLastPosid(StoreMoveInfo.MoveParam.PosID);
}
if (RobotManage.SensorNeedAlarm)
{
//需要报警
StoreMoveInfo.NextMoveStep(MoveStep.StoreOut20);
StoreMoveInfo.log($"红外传感器偏差过大,需要检查后复位");
}
else if(RobotManage.SensorNeedReset)
{
//需要复位
StoreMoveInfo.log($"红外传感器偏差过大,开始复位系统");
RobotManage.SensorNeedReset = false;
BeginHomeReset();
}
else
{
StoreMoveInfo.EndMove();
StoreMoveInfo.EndMove();
}
}
break;
case MoveStep.StoreOut20:
Msg.add(crc.GetString(L.sensor_alarm, "红外传感器偏差过大,需要检查后复位."), MsgLevel.info);
break;
default:
StoreMoveInfo.log($"未找到对应步骤:{StoreMoveInfo.MoveStep}");
break;
......
......@@ -133,6 +133,7 @@ namespace DeviceLibrary
StoreOut16,
StoreOut17,
StoreOut18,
StoreOut20,//红外传感器报警
StoreTS01,
StoreTS02,
......
......@@ -59,6 +59,14 @@ namespace DeviceLibrary
public static HIKCamera CameraA = new HIKCamera();
public static DauxiKS107Controller dauxiKS107Controller = null;
public static OKLE_WeightSensor oKLE_WeightSensor =null;
public static bool SensorNeedReset = false ;
public static bool SensorNeedAlarm = false;
public static DateTime LastResetTime = DateTime.Now;
public static void Init(params object[] param)
{
string msg = "";
......@@ -116,6 +124,37 @@ namespace DeviceLibrary
IsLoadOk = false;
msg += crc.GetString(L.tempnhum_sensor_init_fail, $"温湿度传感器初始化失败,端口:") + $"{Setting_Init.App_Humiture_Port}\n";
}
if (!mainMachine.InitRgbLed(out string LedMsg))
{
if (LedMsg != "")
{
msg += LedMsg + "\n";
}
}
if (Setting_Init.Device_DauxiKS107_PortName != "")
{
dauxiKS107Controller = new DauxiKS107Controller();
if(!dauxiKS107Controller.OpenPort(Setting_Init.Device_DauxiKS107_PortName,out string dauxiMsg))
{
if (dauxiMsg != "")
{
msg += dauxiMsg + "\n";
}
}
}
if (Setting_Init.Device_WeightSensor_PortName != "")
{
oKLE_WeightSensor = new OKLE_WeightSensor();
if (!oKLE_WeightSensor.Open(Setting_Init.Device_WeightSensor_PortName, out string sensorMsg))
{
if (sensorMsg != "")
{
msg += sensorMsg + "\n";
}
}
}
//Thread.Sleep(1000);
//if (!IOManager.ConnectionIOList(new List<string>()))
//{
......@@ -181,6 +220,15 @@ namespace DeviceLibrary
LogUtil.info("开始关闭系统.");
IOManager.CloseAllConnection();
CameraA.stopCamera();
mainMachine.CloseRgbLed();
if(oKLE_WeightSensor!= null)
{
oKLE_WeightSensor.Close();
}
if(dauxiKS107Controller!= null)
{
dauxiKS107Controller.ClosePort();
}
}
public static bool IsUserPause
{
......
......@@ -29,9 +29,14 @@ namespace TheMachine
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.panel1 = new System.Windows.Forms.Panel();
this.lblLed = new System.Windows.Forms.Label();
this.lblOkValue = new System.Windows.Forms.Label();
this.lblSensor = new System.Windows.Forms.Label();
this.button3 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.axisMoveControl1 = new DeviceLibrary.AxisMoveControl();
this.configControl1 = new TheMachine.ConfigControl();
this.panel1.SuspendLayout();
......@@ -40,6 +45,9 @@ namespace TheMachine
// panel1
//
this.panel1.AutoScroll = true;
this.panel1.Controls.Add(this.lblLed);
this.panel1.Controls.Add(this.lblOkValue);
this.panel1.Controls.Add(this.lblSensor);
this.panel1.Controls.Add(this.button3);
this.panel1.Controls.Add(this.button2);
this.panel1.Controls.Add(this.axisMoveControl1);
......@@ -50,6 +58,30 @@ namespace TheMachine
this.panel1.Size = new System.Drawing.Size(1234, 924);
this.panel1.TabIndex = 2;
//
// lblLed
//
this.lblLed.AutoSize = true;
this.lblLed.Location = new System.Drawing.Point(38, 621);
this.lblLed.Name = "lblLed";
this.lblLed.Size = new System.Drawing.Size(0, 12);
this.lblLed.TabIndex = 16;
//
// lblOkValue
//
this.lblOkValue.AutoSize = true;
this.lblOkValue.Location = new System.Drawing.Point(38, 578);
this.lblOkValue.Name = "lblOkValue";
this.lblOkValue.Size = new System.Drawing.Size(0, 12);
this.lblOkValue.TabIndex = 15;
//
// lblSensor
//
this.lblSensor.AutoSize = true;
this.lblSensor.Location = new System.Drawing.Point(38, 539);
this.lblSensor.Name = "lblSensor";
this.lblSensor.Size = new System.Drawing.Size(0, 12);
this.lblSensor.TabIndex = 14;
//
// button3
//
this.button3.Location = new System.Drawing.Point(38, 481);
......@@ -70,6 +102,11 @@ namespace TheMachine
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// timer1
//
this.timer1.Interval = 1000;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// axisMoveControl1
//
this.axisMoveControl1.Location = new System.Drawing.Point(3, 3);
......@@ -97,6 +134,7 @@ namespace TheMachine
this.Size = new System.Drawing.Size(1234, 924);
this.Load += new System.EventHandler(this.AxisControl_Load);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.ResumeLayout(false);
}
......@@ -108,5 +146,9 @@ namespace TheMachine
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Label lblSensor;
private System.Windows.Forms.Label lblLed;
private System.Windows.Forms.Label lblOkValue;
private System.Windows.Forms.Timer timer1;
}
}
......@@ -47,6 +47,7 @@ namespace TheMachine
axisMoveControl1.LoadData(AxisBean.List);
configControl1.Config = RobotManage.Config;
LogUtil.info("伺服面板加载完成.");
timer1.Start();
}
......@@ -120,5 +121,47 @@ namespace TheMachine
{
roateloop = false;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (!this.Visible)
{
return;
}
try
{
if (Setting_Init.Device_LedLight_PortName != "")
{
lblLed.Text ="LED"+ Setting_Init.Device_LedLight_PortName+":"+ RobotManage.mainMachine.lastColor.ToString();
}
else
{
lblLed.Text = "";
}
if (Setting_Init.Device_DauxiKS107_PortName != "")
{
RobotManage.dauxiKS107Controller.Quary(out int currValue, out string msg);
lblSensor.Text = $"红外传感器{Setting_Init.Device_DauxiKS107_PortName}:" + currValue + ", /" + Setting_Init.Device_DauxiKS107_BaseValue + "/" + Setting_Init.Device_DauxiKS107_ErrorValue;
}
else
{
lblSensor.Text = "";
}
if (Setting_Init.Device_WeightSensor_PortName != "")
{
lblOkValue.Text = $"压力传感器{Setting_Init.Device_WeightSensor_PortName}: {Setting_Init.Device_WeightSensor_MaxValue}";
}
else
{
lblOkValue.Text = "";
}
}
catch(Exception ex)
{
LogUtil.error("出错:" + ex.ToString());
}
}
}
}
......@@ -117,4 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>
\ No newline at end of file
......@@ -278,6 +278,12 @@
</ItemGroup>
<ItemGroup>
<Content Include="icon.ico" />
<EmbeddedResource Include="ledColor\green.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="ledColor\yellow.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</EmbeddedResource>
<Content Include="更新记录.txt" />
</ItemGroup>
<ItemGroup>
......
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 6D 67 44 4D 43 53 2C 1D 63 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 04 FE 01 03 FD 01 23 BC 1E 2B 1C 64 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 00 FF 00 00 FF 00 00 FF 00 21 BA 1F 29 19 65 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 00 FF 00 00 FF 00 00 FF 00 00 FF 00 33 8E 33 29 19 65 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 00 FF 00 00 FF 00 00 FF 00 00 FF 00 02 FE 00 2F 91 31 26 15 67 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 18 BF 1D 25 14 67 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 31 A5 28 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 1B B8 1F 27 16 66 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 2F 20 62 33 A8 27 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 1A C1 1C 28 18 65 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1D 0C 6B 32 24 61 37 AC 25 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 32 93 30 29 19 65 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1E 0D 6A 34 26 60 38 AD 25 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 03 FD 01 35 8F 31 2A 1A 65 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1F 0E 6A 34 26 60 35 AA 26 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 03 FD 01 34 8F 32 28 18 65 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1D 0B 6B 30 21 62 31 A4 28 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 03 FD 01 34 8F 32 29 19 65 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1D 0B 6B 2D 1E 63 30 A4 28 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 03 FD 01 33 8C 33 27 17 66 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1D 0B 6B 2E 1F 63 19 CE 16 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 02 FE 01 4A 3F 55 25 14 67 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1D 0C 6B 2D 1E 63 1A CF 15 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 21 E2 0D 42 36 59 22 11 69 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 2D 1E 63 30 A8 27 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 1F DF 0E 41 35 59 22 11 69 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 2F 20 62 60 61 47 07 FC 01 00 FF 00 00 FF 00 00 FF 00 00 FF 00 30 CB 17 3F 33 5A 22 12 68 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1D 0C 6B 34 26 60 6B 6E 41 08 FD 01 00 FF 00 00 FF 00 00 FF 00 00 FF 00 1F DF 0E 40 34 5A 22 12 68 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 20 0F 6A 3D 30 5B 77 7C 3B 07 FD 01 00 FF 00 00 FF 00 00 FF 00 00 FF 00 31 CB 17 3A 2D 5D 1E 0D 6A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 22 11 69 3F 33 5A 73 80 39 01 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 2A C3 1A 31 23 61 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 22 12 68 3E 31 5B 40 B6 21 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 25 BE 1D 2C 1D 63 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 21 10 69 3D 30 5B 42 B8 20 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 23 BC 1E 2D 1E 63 1D 0C 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 21 10 69 43 37 58 4B C3 1C 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 24 BC 1D 2B 1B 64 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 27 17 66 50 46 52 43 D3 14 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 23 BC 1E 2B 1C 64 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 29 19 65 52 53 4D 05 FC 01 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 38 93 30 2B 1C 64 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 2A 1A 65 2D A0 2A 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 01 FF 00 25 BF 1D 31 23 61 1E 0D 6A 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 2C 1D 63 2E A1 2A 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 28 C1 1B 34 26 60 20 0F 6A 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1D 0B 6B 2B 1B 64 2C A0 2A 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 43 A0 2A 39 2B 5D 1F 0E 6A AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1D 0B 6B 2A 1A 65 50 50 4D 2A E1 0E 00 FF 00 00 FF 00 00 FF 00 00 FF 00 02 FF 00 45 A2 29 38 2A 5E AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 28 18 65 4B 49 50 35 D4 13 00 FF 00 00 FF 00 00 FF 00 00 FF 00 01 FF 00 2C C6 1A AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 27 17 66 49 3E 55 46 C1 1C 00 FF 00 00 FF 00 00 FF 00 00 FF 00 00 FF 00 AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 24 13 68 47 3C 56 46 C1 1C 00 FF 00 00 FF 00 00 FF 00 00 FF 00 AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 25 14 67 45 3A 57 47 BF 1D 00 FF 00 00 FF 00 00 FF 00 AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 25 14 67 43 38 58 02 FD 01 00 FF 00 00 FF 00 AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 23 13 68 22 94 2F 00 FF 00 00 FF 00 AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 6D 67 44 4D 43 53 2C 1D 63 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A C4 CC 18 9A 9C 2D 5A 51 4D 2B 1C 64 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A E6 F4 07 D5 E0 10 A0 A2 2A 55 4D 4F 29 19 65 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A E7 F5 07 E7 F5 07 D5 E0 10 9B 9E 2C 52 49 51 29 19 65 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A D6 E1 0F E8 F6 06 E9 F7 06 D5 E0 10 9A 9C 2D 50 46 52 26 15 67 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A A3 A6 29 D8 E3 0F E8 F6 06 EA F8 06 D1 DC 12 90 90 32 48 3D 56 25 14 67 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 5D 55 4B A5 A9 27 D8 E4 0E EA F8 06 E6 F3 08 CA D4 15 8B 8B 35 49 3E 55 27 16 66 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 2F 20 62 61 5A 49 AA AF 25 DD EA 0C EB F9 05 E6 F3 08 CD D7 14 91 91 32 4E 44 53 28 18 65 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1D 0C 6B 32 24 61 68 63 46 B2 B7 21 DF EC 0B EB FA 05 E8 F6 06 D1 DC 12 99 9B 2E 54 4B 50 29 19 65 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1E 0D 6A 34 26 60 6A 64 45 B3 B9 21 DE EB 0B EA F8 06 E8 F6 06 D5 E0 10 9C 9F 2C 55 4C 4F 2A 1A 65 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1F 0E 6A 34 26 60 65 5F 47 A9 AD 26 D9 E5 0E E9 F7 06 E8 F6 06 D6 E1 0F 9D A0 2C 54 4B 50 28 18 65 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1D 0B 6B 30 21 62 5C 54 4C A4 A7 28 D8 E3 0F E7 F5 07 EA F8 06 D3 DE 11 9B 9E 2C 54 4B 50 29 19 65 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1D 0B 6B 2D 1E 63 5B 53 4C A2 A5 29 D5 E0 10 E7 F5 07 E7 F5 07 D3 DE 11 9A 9C 2D 51 47 51 27 17 66 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1D 0B 6B 2E 1F 63 5A 52 4D A2 A5 29 D8 E3 0F E9 F7 06 E8 F6 06 D3 DE 11 93 94 30 4A 3F 55 25 14 67 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1D 0C 6B 2D 1E 63 5C 54 4C A5 A8 28 D8 E4 0E E9 F7 06 E7 F5 07 CC D6 14 88 87 36 42 36 59 22 11 69 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 2D 1E 63 5D 55 4B A8 AC 26 DD EA 0C EB FA 05 E5 F2 08 C4 CC 18 7E 7B 3B 41 35 59 22 11 69 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 2F 20 62 63 5C 49 B2 B7 21 E1 EE 0A EA F8 06 E3 F1 09 C0 C8 1A 7C 79 3C 3F 33 5A 22 12 68 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1D 0C 6B 34 26 60 6E 69 43 BC C4 1C E1 EF 0A E9 F7 06 E1 EF 0A C1 C9 1A 7F 7C 3B 40 34 5A 22 12 68 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 20 0F 6A 3D 30 5B 7B 78 3D C0 C8 1A E2 F0 09 E8 F6 06 E2 F0 09 C3 CB 19 7D 7A 3B 3A 2D 5D 1E 0D 6A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 22 11 69 3F 33 5A 7B 78 3D BD C5 1C E0 ED 0B EA F8 06 E5 F2 08 BD C5 1C 6B 65 44 31 23 61 1C 0A 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 22 12 68 3E 31 5B 78 75 3E BC C4 1C E2 F0 09 EB FA 05 E0 ED 0B AD B2 24 5E 56 4B 2C 1D 63 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 21 10 69 3D 30 5B 7C 79 3C C6 CF 17 E6 F4 07 EA F8 06 D9 E5 0E A4 A7 28 5A 52 4D 2D 1E 63 1D 0C 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 21 10 69 43 37 58 8D 8D 34 D0 DB 12 E8 F6 06 E9 F7 06 D8 E3 0F A1 A4 2A 5B 53 4C 2B 1B 64 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 27 17 66 50 46 52 98 9A 2E D6 E1 0F E9 F7 06 E8 F6 06 D6 E1 0F A1 A4 2A 5A 52 4D 2B 1C 64 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 29 19 65 55 4D 4F 9D A0 2C D6 E1 0F E9 F7 06 E8 F6 06 D7 E2 0F A1 A4 2A 5A 52 4D 2B 1C 64 1D 0B 6B 1B 09 6C 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 2A 1A 65 55 4C 4F 9D A0 2C D7 E2 0F E9 F7 06 E8 F6 06 D8 E4 0E A8 AC 26 61 5A 49 31 23 61 1E 0D 6A 1B 09 6C 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 2C 1D 63 56 4E 4F 9E A1 2B D5 E0 10 E7 F5 07 EA F8 06 DD E9 0C AD B2 24 66 60 47 34 26 60 20 0F 6A 1B 09 6C AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1D 0B 6B 2B 1B 64 54 4B 50 9B 9D 2D D3 DE 11 E7 F5 07 EB FA 05 DE EB 0B B1 B6 22 6C 66 44 39 2B 5D 1F 0E 6A AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1D 0B 6B 2A 1A 65 53 4A 50 94 95 30 CF DA 13 E6 F4 07 E9 F7 06 DD EA 0C B4 BA 20 6F 6A 42 38 2A 5E AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 28 18 65 4D 43 53 8E 8E 33 CB D5 15 E5 F2 08 E7 F5 07 DE EB 0B B4 BA 20 71 6D 41 AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 27 17 66 49 3E 55 88 87 36 C9 D2 16 E4 F2 08 E7 F5 07 DD EA 0C B7 BD 1F AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 24 13 68 47 3C 56 88 87 36 C5 CE 18 E3 F1 09 E8 F6 06 E0 ED 0B AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 25 14 67 45 3A 57 87 86 37 C5 CD 18 E4 F2 08 EB F9 05 AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 25 14 67 43 38 58 82 80 39 C2 CA 19 E4 F2 08 AA BB
DD 55 EE 00 00 00 01 00 99 01 00 00 00 5A 00 0A 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1B 09 6C 1C 0A 6C 23 13 68 41 35 59 77 74 3E BA C1 1D AA BB
......@@ -424,4 +424,8 @@ Res0225 关 Switch to Low
Res0226 开 Switch to High
flashing 闪烁 Flashing
save_success 保存成功 Save success
save_failed 保存失败 Save failed
\ No newline at end of file
save_failed 保存失败 Save failed
sensor_alarm 红外传感器偏差过大,需要检查后复位 Infrared sensor deviation is too large, need to check and then reset
comInitError {0}初始化失败 {0}Initialization failure
comDataError 串口{0}数据错误{1} Serial port {0} data error {1}
comOpenFail 串口{0}打开失败 Serial port {0} open failed
......@@ -426,4 +426,8 @@ Res0225 关 閉める
Res0226 开 開ける
flashing 闪烁 ヴラド
save_success 保存成功 保存は成功しました
save_failed 保存失败 保存に失敗しました
\ No newline at end of file
save_failed 保存失败 保存に失敗しました
sensor_alarm 红外传感器偏差过大,需要检查后复位 赤外線センサーのずれが大きすぎる
comInitError {0}初始化失败 {0}初期化に失敗しました
comDataError 串口{0}数据错误{1} シリアルポート {0} データエラー {1}
comOpenFail 串口{0}打开失败 シリアルポート {0} のオープンに失敗
......@@ -411,4 +411,8 @@ Res0225 关 关
Res0226 开 开
flashing 闪烁 闪烁
save_success 保存成功 保存成功
save_failed 保存失败 保存失败
\ No newline at end of file
save_failed 保存失败 保存失败
sensor_alarm 红外传感器偏差过大,需要报警 红外传感器偏差过大,需要报警
comInitError {0}初始化失败 {0}初始化失败
comDataError 串口{0}数据错误{1} 串口{0}数据错误{1}
comOpenFail 串口{0}打开失败 串口{0}打开失败
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!