<add>[important]能点亮电子标签
This commit is contained in:
parent
7023e6cefd
commit
46c9edc244
70
WcsMain/Business/CirculationTask/ElTag/LightElTag.cs
Normal file
70
WcsMain/Business/CirculationTask/ElTag/LightElTag.cs
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
using CirculateTool;
|
||||
using WcsMain.Common;
|
||||
using WcsMain.DataBase.Dao;
|
||||
using WcsMain.DataBase.TableEntity;
|
||||
using WcsMain.ElTag.Atop;
|
||||
using WcsMain.ElTag.Atop.Entity;
|
||||
using WcsMain.Enum.TaskEnum;
|
||||
|
||||
namespace WcsMain.Business.CirculationTask.ElTag;
|
||||
|
||||
|
||||
[Circulation]
|
||||
public class LightElTag(AppElTagTaskDao tagTaskDao, ConnectOprServe connectOprServe)
|
||||
{
|
||||
|
||||
private readonly AppElTagTaskDao _tagTaskDao = tagTaskDao;
|
||||
private readonly ConnectOprServe _connectOprServe = connectOprServe;
|
||||
|
||||
/// <summary>
|
||||
/// 点亮电子标签
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[Circulation("点亮电子标签")]
|
||||
public bool Light()
|
||||
{
|
||||
List<AppElTagTask>? tasks = _tagTaskDao.Query(new AppElTagTask { TaskStatus = (int)ElTagTaskStatusEnum.NeedLight });
|
||||
if (tasks == default)
|
||||
{
|
||||
ConsoleLog.Exception("【异常】查询 电子标签 任务失败,数据库连接异常");
|
||||
Thread.Sleep(5000);
|
||||
return true;
|
||||
}
|
||||
tasks.ForEach(LightTask);
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 执行点亮标签任务
|
||||
/// </summary>
|
||||
/// <param name="tagTask"></param>
|
||||
public void LightTask(AppElTagTask tagTask)
|
||||
{
|
||||
if (CommonData.AppElTags == default || CommonData.AppElTags.Count < 1) return;
|
||||
var tagInfo = CommonData.AppElTags.Find(f => f.Location == tagTask.Location);
|
||||
if(tagInfo == default)
|
||||
{
|
||||
ConsoleLog.Warning($"【警告】电子标签:{tagTask.Location} 不存在,无法点亮");
|
||||
_tagTaskDao.Update(new AppElTagTask
|
||||
{
|
||||
TaskId = tagTask.TaskId,
|
||||
TaskStatus = (int)ElTagTaskStatusEnum.Error,
|
||||
ConfirmTime = DateTime.Now,
|
||||
Remark = "点位不存在"
|
||||
});
|
||||
return;
|
||||
}
|
||||
/* 点亮标签 */
|
||||
var resultException = _connectOprServe.ShowMsg(tagInfo.ControllerDisplayName, tagInfo.TagId, tagTask.NeedNum);
|
||||
if(resultException == default )
|
||||
{
|
||||
_tagTaskDao.Update(new AppElTagTask
|
||||
{
|
||||
TaskId = tagTask.TaskId,
|
||||
TaskStatus = (int)ElTagTaskStatusEnum.Lighting,
|
||||
LightTime = DateTime.Now,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -10,11 +10,6 @@ namespace WcsMain.Common;
|
|||
/// </summary>
|
||||
public static class CommonData
|
||||
{
|
||||
/// <summary>
|
||||
/// IOC
|
||||
/// </summary>
|
||||
[NotNull]
|
||||
public static IContainer? Container { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 系统设置项,加载于 appsettings.json
|
||||
|
|
@ -40,6 +35,11 @@ public static class CommonData
|
|||
[NotNull]
|
||||
public static List<AppLocation>? AppLocations { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 电子标签基础资料
|
||||
/// </summary>
|
||||
[NotNull]
|
||||
public static List<AppElTagBase>? AppElTags { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
43
WcsMain/DataBase/Dao/AppElTagBaseDao.cs
Normal file
43
WcsMain/DataBase/Dao/AppElTagBaseDao.cs
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
using WcsMain.Common;
|
||||
using WcsMain.DataBase.TableEntity;
|
||||
using WcsMain.WcsAttribute.AutoFacAttribute;
|
||||
|
||||
namespace WcsMain.DataBase.Dao;
|
||||
|
||||
[Component]
|
||||
public class AppElTagBaseDao
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 条件查询
|
||||
/// </summary>
|
||||
/// <param name="queryData"></param>
|
||||
/// <returns></returns>
|
||||
public List<AppElTagBase>? Query(AppElTagBase queryData)
|
||||
{
|
||||
try
|
||||
{
|
||||
var sqlFuc = CommonTool.DbServe.Queryable<AppElTagBase>()
|
||||
.WhereIF(queryData.Location != default, w => w.Location == queryData.Location)
|
||||
.WhereIF(queryData.TagName != default, w => w.TagName == queryData.TagName)
|
||||
.WhereIF(queryData.TagId != default, w => w.TagId == queryData.TagId)
|
||||
.WhereIF(queryData.TagType != default, w => w.TagType == queryData.TagType)
|
||||
.WhereIF(queryData.ControllerDisplayName != default, w => w.ControllerDisplayName == queryData.ControllerDisplayName)
|
||||
.WhereIF(queryData.Area != default, w => w.Area == queryData.Area)
|
||||
.WhereIF(queryData.LedStatus != default, w => w.LedStatus == queryData.LedStatus)
|
||||
.WhereIF(queryData.Remark != default, w => w.Remark == queryData.Remark);
|
||||
return sqlFuc.ToList();
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
_ = ex;
|
||||
return default;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询所有
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public List<AppElTagBase>? Query() => Query(new AppElTagBase());
|
||||
}
|
||||
66
WcsMain/DataBase/Dao/AppElTagTaskDao.cs
Normal file
66
WcsMain/DataBase/Dao/AppElTagTaskDao.cs
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
using WcsMain.Common;
|
||||
using WcsMain.DataBase.TableEntity;
|
||||
using WcsMain.WcsAttribute.AutoFacAttribute;
|
||||
|
||||
namespace WcsMain.DataBase.Dao;
|
||||
|
||||
[Component]
|
||||
public class AppElTagTaskDao
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 条件查询
|
||||
/// </summary>
|
||||
/// <param name="queryData"></param>
|
||||
/// <returns></returns>
|
||||
public List<AppElTagTask>? Query(AppElTagTask queryData)
|
||||
{
|
||||
try
|
||||
{
|
||||
var sqlFuc = CommonTool.DbServe.Queryable<AppElTagTask>()
|
||||
.WhereIF(queryData.TaskId != default, w => w.TaskId == queryData.TaskId)
|
||||
.WhereIF(queryData.Location != default, w => w.Location == queryData.Location)
|
||||
.WhereIF(queryData.OrderId != default, w => w.OrderId == queryData.OrderId)
|
||||
.WhereIF(queryData.VehicleNo != default, w => w.VehicleNo == queryData.VehicleNo)
|
||||
.WhereIF(queryData.GoodsId != default, w => w.GoodsId == queryData.GoodsId)
|
||||
.WhereIF(queryData.GoodsName != default, w => w.GoodsName == queryData.GoodsName)
|
||||
.WhereIF(queryData.TaskStatus != default, w => w.TaskStatus == queryData.TaskStatus)
|
||||
.WhereIF(queryData.NeedNum != default, w => w.NeedNum == queryData.NeedNum)
|
||||
.WhereIF(queryData.PickNum != default, w => w.PickNum == queryData.PickNum)
|
||||
.WhereIF(queryData.Remark != default, w => w.Remark == queryData.Remark);
|
||||
return sqlFuc.ToList();
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
_ = ex;
|
||||
return default;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 全部查询
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public List<AppElTagTask>? Query() => Query(new AppElTagTask());
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 根据主键更新
|
||||
/// </summary>
|
||||
/// <param name="updateData"></param>
|
||||
/// <returns></returns>
|
||||
public int Update(AppElTagTask updateData)
|
||||
{
|
||||
try
|
||||
{
|
||||
var sqlFuc = CommonTool.DbServe.Updateable(updateData).IgnoreColumns(ignoreAllNullColumns: true);
|
||||
return sqlFuc.ExecuteCommand();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_ = ex;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
88
WcsMain/DataBase/TableEntity/AppElTagTask.cs
Normal file
88
WcsMain/DataBase/TableEntity/AppElTagTask.cs
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
using SqlSugar;
|
||||
|
||||
namespace WcsMain.DataBase.TableEntity;
|
||||
|
||||
[SugarTable("tbl_app_eltag_task")]
|
||||
public class AppElTagTask
|
||||
{
|
||||
/// <summary>
|
||||
/// 任务号
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "task_id", IsPrimaryKey = true)]
|
||||
public string? TaskId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 点位
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "location")]
|
||||
public string? Location { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 订单号
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "order_id")]
|
||||
public string? OrderId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 载具号
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "vehicle_no")]
|
||||
public string? VehicleNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料编号
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "goods_id")]
|
||||
public string? GoodsId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料名称
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "goods_name")]
|
||||
public string? GoodsName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务状态
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "task_status")]
|
||||
public int? TaskStatus { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 需求数量
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "need_num")]
|
||||
public int? NeedNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 拣选数量
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "pick_num")]
|
||||
public int? PickNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务创建时间
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "create_time")]
|
||||
public DateTime? CreateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 点亮时间
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "light_time")]
|
||||
public DateTime? LightTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 确认时间
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "confirm_time")]
|
||||
public DateTime? ConfirmTime { get; set;}
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "remark")]
|
||||
public string? Remark { get; set; }
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,7 +1,12 @@
|
|||
using WcsMain.Common;
|
||||
using LedSimple;
|
||||
using System.Xml.Linq;
|
||||
using WcsMain.Common;
|
||||
using WcsMain.DataBase.Dao;
|
||||
using WcsMain.DataBase.TableEntity;
|
||||
using WcsMain.ElTag.Atop.AtopEnum;
|
||||
using WcsMain.ElTag.Atop.Entity;
|
||||
using WcsMain.Enum.General;
|
||||
using WcsMain.Enum.TaskEnum;
|
||||
using WcsMain.Enum.Tcp;
|
||||
using WcsMain.Tcp.Entity;
|
||||
using WcsMain.WcsAttribute.AutoFacAttribute;
|
||||
|
|
@ -26,7 +31,7 @@ public class ConnectOprServe(AppTcpDao tcpDao, BaseOprDataHandler baseOprDataHan
|
|||
CommonTool.OprTcpClient = new OprTcpClient();
|
||||
CommonTool.OprTcpClient.SetConnecting((tcpData) => ConsoleLog.Info($"电子标签:{tcpData} 正在连接"));
|
||||
CommonTool.OprTcpClient.SetConnectFailAction((tcpData, ex) => ConsoleLog.Warning($"电子标签:{tcpData} 连接失败,参考信息:{ex.Message}"));
|
||||
CommonTool.OprTcpClient.SetConnectSuccess((tcpData) => ConsoleLog.Success($"电子标签:{tcpData} 连接成功"));
|
||||
CommonTool.OprTcpClient.SetConnectSuccess(ConnectSuccess);
|
||||
CommonTool.OprTcpClient.SetConnectOffline((tcpData) => ConsoleLog.Warning($"电子标签:{tcpData} 失去连接"));
|
||||
CommonTool.OprTcpClient.SetGetData(GetData);
|
||||
}
|
||||
|
|
@ -52,6 +57,66 @@ public class ConnectOprServe(AppTcpDao tcpDao, BaseOprDataHandler baseOprDataHan
|
|||
}, TaskCreationOptions.LongRunning);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 连接成功的事件 ---- 重置标签
|
||||
/// </summary>
|
||||
/// <param name="tcpServe"></param>
|
||||
public void ConnectSuccess(TcpServeConnectionData tcpServe)
|
||||
{
|
||||
ConsoleLog.Success($"电子标签:{tcpServe.TcpServe!.TcpIp} 连接成功");
|
||||
if (CommonData.AppElTags == default || CommonData.AppElTags.Count < 1) return;
|
||||
var tagInfos = CommonData.AppElTags.FindAll(f => f.ControllerDisplayName == tcpServe.DisplayName);
|
||||
if (tagInfos == default) return;
|
||||
|
||||
foreach (var tagInfo in tagInfos)
|
||||
{
|
||||
|
||||
//CommonTool.OprTcpClient.Send(TagSendInfo.SetTagModel(Convert.ToByte(tagInfo.TagId), TagMode.Picking), tagInfo.ControllerDisplayName!);
|
||||
//CommonTool.OprTcpClient.Send(TagSendInfo.(Convert.ToByte(tagInfo.TagId)), tagInfo.ControllerDisplayName!);
|
||||
}
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
foreach (var tagInfo in tagInfos)
|
||||
{
|
||||
CommonTool.OprTcpClient.Send(TagSendInfo.ShowTagId(Convert.ToByte(tagInfo.TagId)), tagInfo.ControllerDisplayName!);
|
||||
//CommonTool.OprTcpClient.Send(TagSendInfo.LedColor(Convert.ToByte(tagInfo.TagId), LedColor.Green), tagInfo.ControllerDisplayName!);
|
||||
//ShowMsg(tagInfo.ControllerDisplayName, tagInfo.TagId, 999, ledStatus: LedStatus.LEDOn);
|
||||
}
|
||||
Thread.Sleep(200);
|
||||
foreach (var tagInfo in tagInfos)
|
||||
{
|
||||
CommonTool.OprTcpClient.Send(TagSendInfo.TurnOffTag(Convert.ToByte(tagInfo.TagId)), tagInfo.ControllerDisplayName!);
|
||||
}
|
||||
Thread.Sleep(200);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 向标签发送一个显示值
|
||||
/// </summary>
|
||||
/// <param name="controllerDisplayName"></param>
|
||||
/// <param name="tagId"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <param name="ledColor"></param>
|
||||
/// <param name="ledStatus"></param>
|
||||
/// <returns></returns>
|
||||
public Exception? ShowMsg(string? controllerDisplayName, int? tagId, int? value, LedColor ledColor = LedColor.Green, LedStatus ledStatus = LedStatus._0_5secblinking)
|
||||
{
|
||||
if(controllerDisplayName == default || tagId == default || value == default)
|
||||
{
|
||||
return new Exception("必须的值为空,无法发送电子标签");
|
||||
}
|
||||
|
||||
if (value > 999) value = 999;
|
||||
byte[] elTagData = TagSendInfo.ShowValue(Convert.ToByte(tagId), value.ToString()!);
|
||||
var sendResult = CommonTool.OprTcpClient.Send(elTagData, controllerDisplayName); // 显示字符
|
||||
CommonTool.OprTcpClient.Send(TagSendInfo.LedColor(Convert.ToByte(tagId), ledColor), controllerDisplayName); // 显示颜色
|
||||
CommonTool.OprTcpClient.Send(TagSendInfo.LedStatus(Convert.ToByte(tagId), ledStatus), controllerDisplayName); // 显示闪烁频率
|
||||
if (sendResult.Success) return default;
|
||||
return sendResult.Exception;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -62,6 +127,31 @@ public class ConnectOprServe(AppTcpDao tcpDao, BaseOprDataHandler baseOprDataHan
|
|||
/// <param name="datas"></param>
|
||||
public void GetData(TcpServeConnectionData tcpServe, byte[] datas)
|
||||
{
|
||||
TagReturnInfo returnInfo = new()
|
||||
{
|
||||
ControllerDisplayName = tcpServe.DisplayName,
|
||||
Ip = tcpServe.TcpServe!.TcpIp,
|
||||
Port = Convert.ToInt32(datas[2]) == 0x60 ? 1 : 2,
|
||||
SubCommand = Convert.ToInt32(datas[6]),
|
||||
TagId = datas.Length > 7 ? Convert.ToInt32(datas[7]) : 0
|
||||
};
|
||||
if (returnInfo.SubCommand == 6 || returnInfo.SubCommand == 7)
|
||||
{
|
||||
if (datas[8] >= 160) returnInfo.SubCommand = 8;
|
||||
|
||||
List<string> returnData = [];
|
||||
for (int i = 8; i < datas.Length; i++)
|
||||
{
|
||||
if (i == 8 && datas[8] >= 160)
|
||||
{
|
||||
returnData.Add(datas[8] == 160 ? Convert.ToString(Convert.ToChar(32)) : Convert.ToString(Convert.ToChar(datas[8] - 128)));
|
||||
continue;
|
||||
}
|
||||
if (datas[i] > 0) returnData.Add(Convert.ToString(Convert.ToChar(datas[i])));
|
||||
}
|
||||
returnInfo.Data = string.Join("", returnData);
|
||||
}
|
||||
ConsoleLog.Info($"电子标签获取返回值:{returnInfo}");
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,10 @@
|
|||
|
||||
public class TagReturnInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// 控制器别称
|
||||
/// </summary>
|
||||
public string? ControllerDisplayName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 按下的按键类型
|
||||
|
|
@ -36,8 +40,10 @@ public class TagReturnInfo
|
|||
public string? Ip { get; set; }
|
||||
|
||||
|
||||
|
||||
public int Abbr { get; set; }
|
||||
/// <summary>
|
||||
/// 标签 ID
|
||||
/// </summary>
|
||||
public int TagId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 传回消息的端口 ---- 注意不是控制器端口
|
||||
|
|
@ -48,4 +54,11 @@ public class TagReturnInfo
|
|||
/// 返回的数据
|
||||
/// </summary>
|
||||
public string? Data { get; set; }
|
||||
|
||||
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"控制器别称:{ControllerDisplayName},标签Id:{TagId},提交方式:{SubCommand},提交数据:{Data}";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,38 @@ namespace WcsMain.ElTag.Atop.Entity;
|
|||
/// </summary>
|
||||
public class TagSendInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// 标签自检 ????
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static byte[] CheckAllTag()
|
||||
{
|
||||
byte[] data = new byte[7];
|
||||
data[0] = 7;
|
||||
data[1] = 0;
|
||||
data[2] = 0x60;
|
||||
data[6] = 0x09;
|
||||
return data;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置标签模式
|
||||
/// </summary>
|
||||
/// <param name="tagId"></param>
|
||||
/// <param name="tagMode"></param>
|
||||
/// <returns></returns>
|
||||
public static byte[] SetTagModel(byte tagId, TagMode tagMode)
|
||||
{
|
||||
byte[] data = new byte[8];
|
||||
data[0] = 8;
|
||||
data[1] = 0;
|
||||
data[2] = 0x60;
|
||||
data[6] = tagMode == TagMode.Stock ? (byte)0x19 : (byte)0x1A;
|
||||
data[7] = tagId;
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 展示标签的ID
|
||||
/// </summary>
|
||||
|
|
@ -73,7 +105,7 @@ public class TagSendInfo
|
|||
data[6] = 0x1F;
|
||||
data[7] = tagId;
|
||||
data[8] = 0;
|
||||
data[9] = (byte)ledColor;
|
||||
data[9] = Convert.ToByte(ledColor);
|
||||
return data;
|
||||
}
|
||||
|
||||
|
|
@ -92,7 +124,39 @@ public class TagSendInfo
|
|||
data[6] = 0x1F;
|
||||
data[7] = tagId;
|
||||
data[8] = 4;
|
||||
data[9] = (byte)ledStatus;
|
||||
data[9] = Convert.ToByte(ledStatus);
|
||||
return data;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 展示字符串
|
||||
/// </summary>
|
||||
/// <param name="tagId"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
public static byte[] ShowValue(byte tagId, string? value)
|
||||
{
|
||||
if(string.IsNullOrEmpty(value)) value = string.Empty;
|
||||
if(value.Length < 6)
|
||||
{
|
||||
value = value.PadLeft(6, '0');
|
||||
}
|
||||
else
|
||||
{
|
||||
value = value.Substring(value.Length - 6, 6);
|
||||
}
|
||||
byte[] data = new byte[15];
|
||||
data[0] = 0x0f;
|
||||
data[1] = 0;
|
||||
data[2] = 0x60;
|
||||
|
||||
data[6] = 0x00;
|
||||
data[7] = tagId;
|
||||
for (int i = 0; i < value.Length; i++)
|
||||
{
|
||||
data[8 + i] = Convert.ToByte(value[i]);
|
||||
}
|
||||
data[14] = 0x00;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,15 +13,4 @@ public class OprTcpClient : BaseTcpClient
|
|||
{
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 连接电子标签客户端
|
||||
/// </summary>
|
||||
public void Send()
|
||||
{
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
14
WcsMain/Enum/TaskEnum/ElTagTaskStatusEnum.cs
Normal file
14
WcsMain/Enum/TaskEnum/ElTagTaskStatusEnum.cs
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
namespace WcsMain.Enum.TaskEnum;
|
||||
|
||||
/// <summary>
|
||||
/// 电子标签任务状态枚举
|
||||
/// </summary>
|
||||
public enum ElTagTaskStatusEnum
|
||||
{
|
||||
NeedLight = 0, // 待点亮
|
||||
Lighting = 1, // 点亮种
|
||||
Confirm = 2, // 已确认
|
||||
Error = 9, // 发生异常
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -19,7 +19,7 @@ namespace WcsMain.StartAction;
|
|||
[Component]
|
||||
public class ServiceStart(WcsCirculation wcsCirculation, ConnectPLCs connectPLCs, SocketOperation socketOperation,
|
||||
AppStackerDao appStackerDao, AppLocationDao appLocationDao, AppConfigDao appConfigDao, ConnectPlcServe connectPlcServe,
|
||||
ConnectOprServe connectOprServe)
|
||||
ConnectOprServe connectOprServe, AppElTagBaseDao appElTagBaseDao)
|
||||
{
|
||||
private readonly AppConfigDao _appconfigDao = appConfigDao;
|
||||
private readonly AppLocationDao _applocationDao = appLocationDao;
|
||||
|
|
@ -29,6 +29,7 @@ public class ServiceStart(WcsCirculation wcsCirculation, ConnectPLCs connectPLCs
|
|||
private readonly WcsCirculation _wcsCirculation = wcsCirculation;
|
||||
private readonly ConnectPlcServe _connectPlcServe = connectPlcServe;
|
||||
private readonly ConnectOprServe _connectOprServe = connectOprServe;
|
||||
private readonly AppElTagBaseDao _appElTagBaseDao = appElTagBaseDao;
|
||||
|
||||
private static string _errMsg = string.Empty;
|
||||
|
||||
|
|
@ -40,6 +41,7 @@ public class ServiceStart(WcsCirculation wcsCirculation, ConnectPLCs connectPLCs
|
|||
LoadingConfig(); // 加载数据库中的配置项 (config 表)
|
||||
LoadingStackerData(); // 加载数据库中的堆垛机信息
|
||||
LoadingLocationData(); // 加载数据库中的库位信息
|
||||
LoadElTagBase(); // 加载电子标签基础资料
|
||||
|
||||
if (!string.IsNullOrEmpty(_errMsg))
|
||||
{
|
||||
|
|
@ -195,4 +197,20 @@ public class ServiceStart(WcsCirculation wcsCirculation, ConnectPLCs connectPLCs
|
|||
CommonData.AppLocations = appLocations;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 加载电子标签基础资料
|
||||
/// </summary>
|
||||
public void LoadElTagBase()
|
||||
{
|
||||
if (!string.IsNullOrEmpty(_errMsg)) return;
|
||||
ConsoleLog.Info("正在加载库位信息...");
|
||||
List<AppElTagBase>? eltags = _appElTagBaseDao.Query();
|
||||
if (eltags == default)
|
||||
{
|
||||
_errMsg = "加载电子标签基础信息失败,请检查数据库服务器连接是否正常";
|
||||
CommonData.AppElTags = [];
|
||||
return;
|
||||
}
|
||||
CommonData.AppElTags = eltags;
|
||||
}
|
||||
}
|
||||
|
|
@ -108,9 +108,10 @@ public class BaseTcpClient
|
|||
int readLength = await networkStream.ReadAsync(bytes);
|
||||
if (readLength > 0)
|
||||
{
|
||||
bytes = bytes.Take(readLength).ToArray();
|
||||
serveData.RecvMsgTime = DateTime.Now;
|
||||
_getData?.BeginInvoke(serveData, bytes, null, null);
|
||||
_getMessage?.BeginInvoke(serveData, Encoding.ASCII.GetString(bytes), null, null);
|
||||
_getData?.Invoke(serveData, bytes);
|
||||
_getMessage?.Invoke(serveData, Encoding.ASCII.GetString(bytes));
|
||||
continue;
|
||||
}
|
||||
_connectOffline?.Invoke(serveData);
|
||||
|
|
@ -173,10 +174,10 @@ public class BaseTcpClient
|
|||
}
|
||||
if (tcpServe.TcpClient == default) return;
|
||||
// 尝试发送消息
|
||||
var networkStream = tcpServe.TcpClient.GetStream();
|
||||
byte[] bytes = [];
|
||||
try
|
||||
{
|
||||
var networkStream = tcpServe.TcpClient.GetStream();
|
||||
byte[] bytes = [];
|
||||
networkStream.Write(bytes);
|
||||
}
|
||||
catch
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user