Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
张东亮
/
SO1057-XLRStore
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 0987bff3
由
张东亮
编写于
2025-11-24 17:20:21 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
添加记录最近出库的栈,避免出库任务重复执行
1 个父辈
eafc12f1
显示空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
142 行增加
和
2 行删除
source/DeviceLibrary/DeviceLibrary.csproj
source/DeviceLibrary/deviceLibrary/FixedSizeStack.cs
source/DeviceLibrary/storeBean/boxBean/BoxEquip_Partial.cs
source/DeviceLibrary/storeBean/boxBean/Humiture/HumitureController.cs
source/DeviceLibrary/DeviceLibrary.csproj
查看文件 @
0987bff
...
...
@@ -83,6 +83,7 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="deviceLibrary\FixedSizeStack.cs" />
<Compile Include="deviceLibrary\Msg.cs" />
<Compile Include="deviceLibrary\ReelCheckCamera.cs" />
<Compile Include="deviceLibrary\SignalMonitor.cs" />
...
...
source/DeviceLibrary/deviceLibrary/FixedSizeStack.cs
0 → 100644
查看文件 @
0987bff
using
System
;
using
System.Collections
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
namespace
OnlineStore.DeviceLibrary.deviceLibrary
{
/// <summary>
/// 一个固定大小的堆栈。当元素数量超过容量时,最老的元素(栈底)会被自动移除。
/// </summary>
/// <typeparam name="T">堆栈中元素的类型</typeparam>
public
class
FixedSizeStack
<
T
>
:
IEnumerable
<
T
>
{
private
readonly
List
<
T
>
_internalList
=
new
List
<
T
>();
private
readonly
int
_capacity
;
/// <summary>
/// 获取堆栈的最大容量。
/// </summary>
public
int
Capacity
=>
_capacity
;
/// <summary>
/// 获取当前堆栈中的元素数量。
/// </summary>
public
int
Count
=>
_internalList
.
Count
;
/// <summary>
/// 初始化一个新的、指定容量的 FixedSizeStack 实例。
/// </summary>
/// <param name="capacity">堆栈的最大容量。</param>
/// <exception cref="ArgumentOutOfRangeException">当容量小于1时抛出。</exception>
public
FixedSizeStack
(
int
capacity
)
{
if
(
capacity
<
1
)
throw
new
ArgumentOutOfRangeException
(
nameof
(
capacity
),
"容量必须大于或等于1。"
);
_capacity
=
capacity
;
}
/// <summary>
/// 将一个元素推入堆栈顶部。如果堆栈已满,最老的元素将被移除。
/// </summary>
/// <param name="item">要推入的元素。</param>
public
void
Push
(
T
item
)
{
_internalList
.
Add
(
item
);
// 如果超出容量,移除最前面(最老)的元素
if
(
_internalList
.
Count
>
_capacity
)
{
_internalList
.
RemoveAt
(
0
);
}
}
/// <summary>
/// 移除并返回堆栈顶部的元素。
/// </summary>
/// <returns>堆栈顶部的元素。</returns>
/// <exception cref="InvalidOperationException">当堆栈为空时抛出。</exception>
public
T
Pop
()
{
if
(
_internalList
.
Count
==
0
)
throw
new
InvalidOperationException
(
"堆栈为空,无法执行 Pop 操作。"
);
int
lastIndex
=
_internalList
.
Count
-
1
;
T
itemToReturn
=
_internalList
[
lastIndex
];
_internalList
.
RemoveAt
(
lastIndex
);
return
itemToReturn
;
}
/// <summary>
/// 返回堆栈顶部的元素,但不移除它。
/// </summary>
/// <returns>堆栈顶部的元素。</returns>
/// <exception cref="InvalidOperationException">当堆栈为空时抛出。</exception>
public
T
Peek
()
{
if
(
_internalList
.
Count
==
0
)
throw
new
InvalidOperationException
(
"堆栈为空,无法执行 Peek 操作。"
);
return
_internalList
[
_internalList
.
Count
-
1
];
}
/// <summary>
/// 从堆栈中移除所有元素。
/// </summary>
public
void
Clear
()
{
_internalList
.
Clear
();
}
/// <summary>
/// 返回一个循环访问集合的枚举器。枚举顺序是从栈顶到栈底。
/// </summary>
/// <returns>一个可用于循环访问集合的 IEnumerator<T>。</returns>
public
IEnumerator
<
T
>
GetEnumerator
()
{
// 从后往前遍历,模拟从栈顶到栈底的顺序
for
(
int
i
=
_internalList
.
Count
-
1
;
i
>=
0
;
i
--)
{
yield
return
_internalList
[
i
];
}
}
/// <summary>
/// 返回一个循环访问集合的枚举器。
/// </summary>
/// <returns>一个可用于循环访问集合的 IEnumerator。</returns>
IEnumerator
IEnumerable
.
GetEnumerator
()
{
return
GetEnumerator
();
}
/// <summary>
/// 返回一个表示当前对象的字符串。
/// </summary>
/// <returns>一个表示当前对象的字符串。</returns>
public
override
string
ToString
()
{
return
$
"FixedSizeStack (Capacity: {_capacity}, Count: {_internalList.Count}) [ {string.Join("
,
", _internalList)} ]"
;
}
}
}
source/DeviceLibrary/storeBean/boxBean/BoxEquip_Partial.cs
查看文件 @
0987bff
...
...
@@ -718,7 +718,7 @@ namespace OnlineStore.DeviceLibrary
bool
isAlarmForkCheck
()
{
if
(
checkForkCnt
>
3
)
if
(
checkForkCnt
>
3
)
{
return
true
;
}
...
...
@@ -1367,6 +1367,7 @@ namespace OnlineStore.DeviceLibrary
return
false
;
}
private
static
object
outStoreObject
=
new
object
();
FixedSizeStack
<
string
>
recentOutstores
=
new
FixedSizeStack
<
string
>(
5
);
public
bool
StartExecuctOut
(
InOutParam
param
)
{
bool
result
=
false
;
...
...
@@ -1377,12 +1378,17 @@ namespace OnlineStore.DeviceLibrary
{
if
(
MoveInfo
.
MoveType
.
Equals
(
MoveType
.
OutStore
)
&&
(
MoveInfo
.
MoveParam
.
PosInfo
.
PosId
.
Equals
(
param
.
PosInfo
.
PosId
)
||
(
MoveInfo
.
MoveParam
.
PosInfoBack
!=
null
&&
MoveInfo
.
MoveParam
.
PosInfoBack
.
PosId
.
Equals
(
param
.
PosInfo
.
PosId
))))
||
(
MoveInfo
.
MoveParam
.
PosInfoBack
!=
null
&&
MoveInfo
.
MoveParam
.
PosInfoBack
.
PosId
.
Equals
(
param
.
PosInfo
.
PosId
))))
{
LogUtil
.
error
(
Name
+
" 出库命令【"
+
param
.
PosInfo
.
ToStr
()
+
"】重复,【"
+
MoveInfo
.
MoveParam
.
PosInfo
.
PosId
+
"】出库执行中"
);
return
false
;
}
if
(
recentOutstores
.
Contains
(
param
.
PosInfo
.
PosId
))
{
LogUtil
.
error
(
Name
+
" 出库命令【"
+
param
.
PosInfo
.
ToStr
()
+
"】重复,在最近的出库列表"
);
return
false
;
}
List
<
InOutParam
>
reviceList
=
new
List
<
InOutParam
>();
reviceList
.
AddRange
(
waitAOutStoreList
);
reviceList
.
AddRange
(
waitBOutStoreList
);
...
...
@@ -1440,6 +1446,8 @@ namespace OnlineStore.DeviceLibrary
SetBoxStatus
(
DeviceStatus
.
OutStoreExecute
,
RunStatus
.
Busy
,
param
.
PosInfo
.
PosId
,
param
.
PosInfo
.
barcode
);
MoveInfo
.
NewMove
(
MoveType
.
OutStore
,
param
);
LogInfo
(
"启动出库【"
+
param
.
PosInfo
.
ToStr
()
+
"】 "
);
recentOutstores
.
Push
(
param
.
PosInfo
.
PosId
);
LogInfo
(
$
"{recentOutstores}"
);
///开始记录
StartRecord
();
//LogInfo("LoadInoutParam:" + JsonHelper.SerializeObject(param.MoveP));
...
...
source/DeviceLibrary/storeBean/boxBean/Humiture/HumitureController.cs
查看文件 @
0987bff
...
...
@@ -129,6 +129,14 @@ namespace OnlineStore.DeviceLibrary
// else
// data[1] += tempadjust;
//}
if
(
data
[
1
]>
80
)
{
data
[
1
]
=
0
;
}
if
(
data
[
0
]
>
100
)
{
data
[
0
]
=
0
;
}
data
[
1
]
=
ProcessTemp
(
port
,
data
[
1
]);
param
=
new
HumitureParam
(
data
[
1
],
data
[
0
],
data
[
2
]);
}
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论