diff --git a/WcsMain/Business/CirculationTask/ElTag/LightElTag.cs b/WcsMain/Business/CirculationTask/ElTag/LightElTag.cs
new file mode 100644
index 0000000..b57f9e4
--- /dev/null
+++ b/WcsMain/Business/CirculationTask/ElTag/LightElTag.cs
@@ -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;
+
+ ///
+ /// 点亮电子标签
+ ///
+ ///
+ [Circulation("点亮电子标签")]
+ public bool Light()
+ {
+ List? tasks = _tagTaskDao.Query(new AppElTagTask { TaskStatus = (int)ElTagTaskStatusEnum.NeedLight });
+ if (tasks == default)
+ {
+ ConsoleLog.Exception("【异常】查询 电子标签 任务失败,数据库连接异常");
+ Thread.Sleep(5000);
+ return true;
+ }
+ tasks.ForEach(LightTask);
+ return true;
+ }
+
+ ///
+ /// 执行点亮标签任务
+ ///
+ ///
+ 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,
+ });
+ }
+ }
+
+}
diff --git a/WcsMain/Common/CommonData.cs b/WcsMain/Common/CommonData.cs
index e970ce4..20f80a5 100644
--- a/WcsMain/Common/CommonData.cs
+++ b/WcsMain/Common/CommonData.cs
@@ -10,11 +10,6 @@ namespace WcsMain.Common;
///
public static class CommonData
{
- ///
- /// IOC
- ///
- [NotNull]
- public static IContainer? Container { get; set; }
///
/// 系统设置项,加载于 appsettings.json
@@ -40,6 +35,11 @@ public static class CommonData
[NotNull]
public static List? AppLocations { get; set; }
+ ///
+ /// 电子标签基础资料
+ ///
+ [NotNull]
+ public static List? AppElTags { get; set; }
///
diff --git a/WcsMain/DataBase/Dao/AppElTagBaseDao.cs b/WcsMain/DataBase/Dao/AppElTagBaseDao.cs
new file mode 100644
index 0000000..2eddd74
--- /dev/null
+++ b/WcsMain/DataBase/Dao/AppElTagBaseDao.cs
@@ -0,0 +1,43 @@
+using WcsMain.Common;
+using WcsMain.DataBase.TableEntity;
+using WcsMain.WcsAttribute.AutoFacAttribute;
+
+namespace WcsMain.DataBase.Dao;
+
+[Component]
+public class AppElTagBaseDao
+{
+
+ ///
+ /// 条件查询
+ ///
+ ///
+ ///
+ public List? Query(AppElTagBase queryData)
+ {
+ try
+ {
+ var sqlFuc = CommonTool.DbServe.Queryable()
+ .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;
+ }
+ }
+
+ ///
+ /// 查询所有
+ ///
+ ///
+ public List? Query() => Query(new AppElTagBase());
+}
diff --git a/WcsMain/DataBase/Dao/AppElTagTaskDao.cs b/WcsMain/DataBase/Dao/AppElTagTaskDao.cs
new file mode 100644
index 0000000..7b9db1d
--- /dev/null
+++ b/WcsMain/DataBase/Dao/AppElTagTaskDao.cs
@@ -0,0 +1,66 @@
+using WcsMain.Common;
+using WcsMain.DataBase.TableEntity;
+using WcsMain.WcsAttribute.AutoFacAttribute;
+
+namespace WcsMain.DataBase.Dao;
+
+[Component]
+public class AppElTagTaskDao
+{
+
+ ///
+ /// 条件查询
+ ///
+ ///
+ ///
+ public List? Query(AppElTagTask queryData)
+ {
+ try
+ {
+ var sqlFuc = CommonTool.DbServe.Queryable()
+ .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;
+ }
+ }
+
+ ///
+ /// 全部查询
+ ///
+ ///
+ public List? Query() => Query(new AppElTagTask());
+
+
+ ///
+ /// 根据主键更新
+ ///
+ ///
+ ///
+ public int Update(AppElTagTask updateData)
+ {
+ try
+ {
+ var sqlFuc = CommonTool.DbServe.Updateable(updateData).IgnoreColumns(ignoreAllNullColumns: true);
+ return sqlFuc.ExecuteCommand();
+ }
+ catch (Exception ex)
+ {
+ _ = ex;
+ return 0;
+ }
+ }
+
+}
diff --git a/WcsMain/DataBase/TableEntity/AppElTagTask.cs b/WcsMain/DataBase/TableEntity/AppElTagTask.cs
new file mode 100644
index 0000000..106e021
--- /dev/null
+++ b/WcsMain/DataBase/TableEntity/AppElTagTask.cs
@@ -0,0 +1,88 @@
+using SqlSugar;
+
+namespace WcsMain.DataBase.TableEntity;
+
+[SugarTable("tbl_app_eltag_task")]
+public class AppElTagTask
+{
+ ///
+ /// 任务号
+ ///
+ [SugarColumn(ColumnName = "task_id", IsPrimaryKey = true)]
+ public string? TaskId { get; set; }
+
+ ///
+ /// 点位
+ ///
+ [SugarColumn(ColumnName = "location")]
+ public string? Location { get; set; }
+
+ ///
+ /// 订单号
+ ///
+ [SugarColumn(ColumnName = "order_id")]
+ public string? OrderId { get; set; }
+
+ ///
+ /// 载具号
+ ///
+ [SugarColumn(ColumnName = "vehicle_no")]
+ public string? VehicleNo { get; set; }
+
+ ///
+ /// 物料编号
+ ///
+ [SugarColumn(ColumnName = "goods_id")]
+ public string? GoodsId { get; set; }
+
+ ///
+ /// 物料名称
+ ///
+ [SugarColumn(ColumnName = "goods_name")]
+ public string? GoodsName { get; set; }
+
+ ///
+ /// 任务状态
+ ///
+ [SugarColumn(ColumnName = "task_status")]
+ public int? TaskStatus { get; set; }
+
+ ///
+ /// 需求数量
+ ///
+ [SugarColumn(ColumnName = "need_num")]
+ public int? NeedNum { get; set; }
+
+ ///
+ /// 拣选数量
+ ///
+ [SugarColumn(ColumnName = "pick_num")]
+ public int? PickNum { get; set; }
+
+ ///
+ /// 任务创建时间
+ ///
+ [SugarColumn(ColumnName = "create_time")]
+ public DateTime? CreateTime { get; set; }
+
+ ///
+ /// 点亮时间
+ ///
+ [SugarColumn(ColumnName = "light_time")]
+ public DateTime? LightTime { get; set; }
+
+ ///
+ /// 确认时间
+ ///
+ [SugarColumn(ColumnName = "confirm_time")]
+ public DateTime? ConfirmTime { get; set;}
+
+ ///
+ /// 备注
+ ///
+ [SugarColumn(ColumnName = "remark")]
+ public string? Remark { get; set; }
+
+
+
+}
diff --git a/WcsMain/ElTag/Atop/ConnectOprServe.cs b/WcsMain/ElTag/Atop/ConnectOprServe.cs
index d0f4acc..fd51f75 100644
--- a/WcsMain/ElTag/Atop/ConnectOprServe.cs
+++ b/WcsMain/ElTag/Atop/ConnectOprServe.cs
@@ -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);
}
+ ///
+ /// 连接成功的事件 ---- 重置标签
+ ///
+ ///
+ 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);
+ }
+
+ }
+
+ ///
+ /// 向标签发送一个显示值
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ 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
///
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 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}");
}
diff --git a/WcsMain/ElTag/Atop/Entity/TagReturnInfo.cs b/WcsMain/ElTag/Atop/Entity/TagReturnInfo.cs
index 95b315d..8645363 100644
--- a/WcsMain/ElTag/Atop/Entity/TagReturnInfo.cs
+++ b/WcsMain/ElTag/Atop/Entity/TagReturnInfo.cs
@@ -2,6 +2,10 @@
public class TagReturnInfo
{
+ ///
+ /// 控制器别称
+ ///
+ public string? ControllerDisplayName { get; set; }
///
/// 按下的按键类型
@@ -36,8 +40,10 @@ public class TagReturnInfo
public string? Ip { get; set; }
-
- public int Abbr { get; set; }
+ ///
+ /// 标签 ID
+ ///
+ public int TagId { get; set; }
///
/// 传回消息的端口 ---- 注意不是控制器端口
@@ -48,4 +54,11 @@ public class TagReturnInfo
/// 返回的数据
///
public string? Data { get; set; }
+
+
+
+ public override string ToString()
+ {
+ return $"控制器别称:{ControllerDisplayName},标签Id:{TagId},提交方式:{SubCommand},提交数据:{Data}";
+ }
}
diff --git a/WcsMain/ElTag/Atop/Entity/TagSendInfo.cs b/WcsMain/ElTag/Atop/Entity/TagSendInfo.cs
index 2187093..585b595 100644
--- a/WcsMain/ElTag/Atop/Entity/TagSendInfo.cs
+++ b/WcsMain/ElTag/Atop/Entity/TagSendInfo.cs
@@ -8,6 +8,38 @@ namespace WcsMain.ElTag.Atop.Entity;
///
public class TagSendInfo
{
+ ///
+ /// 标签自检 ????
+ ///
+ ///
+ public static byte[] CheckAllTag()
+ {
+ byte[] data = new byte[7];
+ data[0] = 7;
+ data[1] = 0;
+ data[2] = 0x60;
+ data[6] = 0x09;
+ return data;
+ }
+
+ ///
+ /// 设置标签模式
+ ///
+ ///
+ ///
+ ///
+ 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;
+ }
+
+
///
/// 展示标签的ID
///
@@ -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;
+ }
+
+ ///
+ /// 展示字符串
+ ///
+ ///
+ ///
+ ///
+ 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;
}
}
diff --git a/WcsMain/ElTag/Atop/OprTcpClient.cs b/WcsMain/ElTag/Atop/OprTcpClient.cs
index 663bf24..3266918 100644
--- a/WcsMain/ElTag/Atop/OprTcpClient.cs
+++ b/WcsMain/ElTag/Atop/OprTcpClient.cs
@@ -11,17 +11,6 @@ namespace WcsMain.ElTag.Atop;
///
public class OprTcpClient : BaseTcpClient
{
-
- ///
- /// 连接电子标签客户端
- ///
- public void Send()
- {
-
-
-
- }
-
}
diff --git a/WcsMain/Enum/TaskEnum/ElTagTaskStatusEnum.cs b/WcsMain/Enum/TaskEnum/ElTagTaskStatusEnum.cs
new file mode 100644
index 0000000..773099f
--- /dev/null
+++ b/WcsMain/Enum/TaskEnum/ElTagTaskStatusEnum.cs
@@ -0,0 +1,14 @@
+namespace WcsMain.Enum.TaskEnum;
+
+///
+/// 电子标签任务状态枚举
+///
+public enum ElTagTaskStatusEnum
+{
+ NeedLight = 0, // 待点亮
+ Lighting = 1, // 点亮种
+ Confirm = 2, // 已确认
+ Error = 9, // 发生异常
+
+
+}
diff --git a/WcsMain/StartAction/ServiceStart.cs b/WcsMain/StartAction/ServiceStart.cs
index 5b646ab..0ac441f 100644
--- a/WcsMain/StartAction/ServiceStart.cs
+++ b/WcsMain/StartAction/ServiceStart.cs
@@ -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;
}
+ ///
+ /// 加载电子标签基础资料
+ ///
+ public void LoadElTagBase()
+ {
+ if (!string.IsNullOrEmpty(_errMsg)) return;
+ ConsoleLog.Info("正在加载库位信息...");
+ List? eltags = _appElTagBaseDao.Query();
+ if (eltags == default)
+ {
+ _errMsg = "加载电子标签基础信息失败,请检查数据库服务器连接是否正常";
+ CommonData.AppElTags = [];
+ return;
+ }
+ CommonData.AppElTags = eltags;
+ }
}
\ No newline at end of file
diff --git a/WcsMain/Tcp/Client/BaseTcpClient.cs b/WcsMain/Tcp/Client/BaseTcpClient.cs
index 0692908..bc2264b 100644
--- a/WcsMain/Tcp/Client/BaseTcpClient.cs
+++ b/WcsMain/Tcp/Client/BaseTcpClient.cs
@@ -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