Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
ACSingleStore
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 5e93ab72
由
LN
编写于
2019-08-20 09:23:13 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
与流水线通信格式修改。
1 个父辈
a8c49f96
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
203 行增加
和
106 行删除
source/ACSingleStore/App.config
source/ACSingleStore/FrmStoreBox.cs
source/Common/util/LogUtil.cs
source/Common/util/TcpClient.cs
source/DeviceLibrary/acSingleStore/AC_SA_BoxBean.cs
source/DeviceLibrary/acSingleStore/AC_SA_BoxBean_Partial.cs
source/DeviceLibrary/lineConnect/LineConnect.cs
source/ACSingleStore/App.config
查看文件 @
5e93ab7
...
...
@@ -32,7 +32,7 @@
<
add
key
=
"HumitureControllerType"
value
=
"0"
/>
<
add
key
=
"UseAIOBOX"
value
=
"1"
/>
<!--流水线地址和端口配置-->
<
add
key
=
"LineServerIp"
value
=
"192.168.1.11
3
"
/>
<
add
key
=
"LineServerIp"
value
=
"192.168.1.11
0
"
/>
<
add
key
=
"LineServerPort"
value
=
"5246"
/>
<!--是否调试状态-->
<
add
key
=
"IsInDebug"
value
=
"1"
/>
...
...
source/ACSingleStore/FrmStoreBox.cs
查看文件 @
5e93ab7
...
...
@@ -1363,7 +1363,8 @@ namespace OnlineStore.ACSingleStore
{
ss
=
StoreStatus
.
Debugging
;
}
LineConnect
.
SendHeart
(
StoreManager
.
Config
.
Id
,
StoreManager
.
Config
.
CID
,
(
int
)
ss
,
(
int
)
StoreRunStatus
.
Runing
,
hasTray
,(
int
)
StoreAlarmType
.
None
);
StoreSendBean
bean
=
new
StoreSendBean
(
StoreManager
.
Config
.
Id
,
StoreManager
.
Config
.
CID
,
(
int
)
ss
,
(
int
)
StoreRunStatus
.
Runing
,
hasTray
,
(
int
)
StoreAlarmType
.
None
);
LineConnect
.
SendHeart
(
bean
);
}
private
void
chbDebug_CheckedChanged
(
object
sender
,
EventArgs
e
)
...
...
source/Common/util/LogUtil.cs
查看文件 @
5e93ab7
...
...
@@ -77,12 +77,12 @@ namespace OnlineStore.Common
private
static
List
<
string
>
lasErrorLogList
=
new
List
<
string
>();
private
static
int
errCount
=
5
;
public
static
void
error
(
ILog
log
,
string
errorMsg
,
int
type
)
public
static
void
error
(
ILog
log
,
string
errorMsg
,
int
type
,
int
spanSeconds
=
10
)
{
if
(
lastErrorLogTime
.
ContainsKey
(
type
))
{
TimeSpan
span
=
DateTime
.
Now
-
lastErrorLogTime
[
type
];
if
(
span
.
TotalSeconds
<
10
)
if
(
span
.
TotalSeconds
<
spanSeconds
)
{
return
;
}
...
...
source/Common/util/TcpClient.cs
查看文件 @
5e93ab7
...
...
@@ -154,7 +154,7 @@ namespace OnlineStore.Common
if
(
m_clientSocket
!=
null
)
{
m_clientSocket
.
Close
();
LogUtil
.
info
(
LOGGER
,
"Socket closed!"
);
LogUtil
.
debug
(
LOGGER
,
"Socket closed!"
);
}
}
catch
(
Exception
ex
)
{
...
...
@@ -176,9 +176,9 @@ namespace OnlineStore.Common
catch
(
Exception
ex
)
{
isInProcess
=
false
;
LogUtil
.
error
(
"重连处理出错:"
+
ex
.
ToString
()
);
LogUtil
.
error
(
LOGGER
,
"重连处理出错:"
+
ex
.
ToString
(),
9
,
180
);
}
}
}
/// <summary>
/// 断开连接
...
...
source/DeviceLibrary/acSingleStore/AC_SA_BoxBean.cs
查看文件 @
5e93ab7
...
...
@@ -115,7 +115,7 @@ namespace OnlineStore.DeviceLibrary
Alarm
(
StoreAlarmType
.
SuddenStop
,
"1"
,
WarnMsg
,
StoreMoveType
.
None
);
}
}
}
}
/// <summary>
...
...
@@ -148,7 +148,7 @@ namespace OnlineStore.DeviceLibrary
public
override
bool
StartRun
()
{
LogUtil
.
info
(
LOGGER
,
StoreName
+
"开始启动,启动时间:"
+
StartTime
.
ToString
());
autoNext
=
false
;
mainTimer
.
Enabled
=
false
;
alarmType
=
StoreAlarmType
.
None
;
...
...
@@ -184,7 +184,7 @@ namespace OnlineStore.DeviceLibrary
}
else
{
if
(
suddenBtn
.
Equals
(
IO_VALUE
.
LOW
))
if
(
suddenBtn
.
Equals
(
IO_VALUE
.
LOW
))
{
LogUtil
.
error
(
LOGGER
,
" ("
+
StoreName
+
")启动出现错误:急停没开 !启动失败!"
);
}
...
...
@@ -202,7 +202,7 @@ namespace OnlineStore.DeviceLibrary
{
isNoAirCheck
=
false
;
isInSuddenDown
=
false
;
WarnMsg
=
""
;
WarnMsg
=
""
;
CurrInOutACount
=
0
;
CurrInOutCount
=
0
;
IOManager
.
IOMove
(
IO_Type
.
Alarm_HddLed
,
IO_VALUE
.
LOW
);
...
...
@@ -214,9 +214,9 @@ namespace OnlineStore.DeviceLibrary
StoreMove
.
NextMoveStep
(
StoreMoveStep
.
BOX_H_InOutBack
);
ACAxisHomeMove
(
Config
.
InOut_Axis
);
LogUtil
.
info
(
LOGGER
,
StoreName
+
"开始原点返回,先把进出轴回原点"
);
StoreMove
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
2000
));
}
}
public
void
MoveToP1
()
{
//压紧轴回原点,叉子回到P1,关闭门旋转轴和升降轴回到P1
...
...
@@ -231,7 +231,7 @@ namespace OnlineStore.DeviceLibrary
public
override
void
Reset
()
{
Reset
(
true
);
}
}
public
void
Reset
(
bool
isNeedClearAuto
)
{
CurrInOutCount
=
0
;
...
...
@@ -251,7 +251,7 @@ namespace OnlineStore.DeviceLibrary
ACServerManager
.
SuddenStop
(
Config
.
UpDown_Axis
.
DeviceName
,
Config
.
UpDown_Axis
.
GetAxisValue
());
ACServerManager
.
SuddenStop
(
Config
.
InOut_Axis
.
DeviceName
,
Config
.
InOut_Axis
.
GetAxisValue
());
isInSuddenDown
=
false
;
isNoAirCheck
=
false
;
isNoAirCheck
=
false
;
alarmType
=
StoreAlarmType
.
None
;
storeRunStatus
=
StoreRunStatus
.
Reset
;
storeStatus
=
StoreStatus
.
ResetMove
;
...
...
@@ -268,7 +268,7 @@ namespace OnlineStore.DeviceLibrary
if
(
IsHasCompress_Axis
||
Config
.
IsHasLocationCylinder
.
Equals
(
0
))
{
InoutStartReset
();
}
else
{
...
...
@@ -283,11 +283,11 @@ namespace OnlineStore.DeviceLibrary
{
string
portName
=
Config
.
InOut_Axis
.
DeviceName
;
int
slvAddr
=
Config
.
InOut_Axis
.
GetAxisValue
();
StoreMove
.
NextMoveStep
(
StoreMoveStep
.
BOX_H_InOutBack
);
LogUtil
.
info
(
LOGGER
,
StoreName
+
"复位中,进出轴开始原点返回"
);
ACAxisHomeMove
(
Config
.
InOut_Axis
);
StoreMove
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
2000
));
StoreMove
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
2000
));
}
/// <summary>
/// 复位处理
...
...
@@ -304,7 +304,7 @@ namespace OnlineStore.DeviceLibrary
}
switch
(
StoreMove
.
MoveStep
)
{
case
StoreMoveStep
.
BOX_H_LocationCylinderBack
:
case
StoreMoveStep
.
BOX_H_LocationCylinderBack
:
InoutStartReset
();
break
;
case
StoreMoveStep
.
BOX_H_InOutMove
:
...
...
@@ -335,7 +335,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil
.
info
(
LOGGER
,
StoreName
+
"复位中: 压紧轴,旋转轴,上下轴开始 原点返回"
);
StoreMove
.
NextMoveStep
(
StoreMoveStep
.
BOX_H_OtherAxisBack
);
if
(
IsHasCompress_Axis
)
{
{
ACAxisHomeMove
(
Config
.
Comp_Axis
);
}
ACAxisHomeMove
(
Config
.
Middle_Axis
);
...
...
@@ -347,8 +347,8 @@ namespace OnlineStore.DeviceLibrary
LogUtil
.
info
(
LOGGER
,
StoreName
+
"复位中:旋转轴运动到P1,上下轴走到P1,压紧轴到P1!"
);
ACAxisMove
(
Config
.
Middle_Axis
,
Config
.
MiddleAxis_P1_Position
,
Config
.
MiddleAxis_P1_Speed
);
ACAxisMove
(
Config
.
UpDown_Axis
,
Config
.
UpDownAxis_DoorOPosition_P1
,
Config
.
UpDownAxis_P1_Speed
);
ComMoveToPosition
(
Config
.
CompressAxis_P1_Position
,
Config
.
CompAxis_P1_Speed
);
ComMoveToPosition
(
Config
.
CompressAxis_P1_Position
,
Config
.
CompAxis_P1_Speed
);
break
;
case
StoreMoveStep
.
BOX_H_MiddleAxisToP1
:
LogUtil
.
info
(
LOGGER
,
StoreName
+
"复位完成"
);
...
...
@@ -365,7 +365,7 @@ namespace OnlineStore.DeviceLibrary
StoreMove
.
NextMoveStep
(
StoreMoveStep
.
BOX_M_H_TOP1_CompressHome
);
LogUtil
.
info
(
LOGGER
,
StoreName
+
"到待机状态,压紧轴回原点,关闭舱门"
);
if
(
IsHasCompress_Axis
)
{
{
ACAxisHomeMove
(
Config
.
Comp_Axis
);
}
//关闭舱门
...
...
@@ -376,7 +376,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil
.
info
(
LOGGER
,
StoreName
+
"复位中:旋转轴运动到P1,上下轴走到P1,压紧轴到P1!"
);
ACAxisMove
(
Config
.
Middle_Axis
,
Config
.
MiddleAxis_P1_Position
,
Config
.
MiddleAxis_P1_Speed
);
ACAxisMove
(
Config
.
UpDown_Axis
,
Config
.
UpDownAxis_DoorOPosition_P1
,
Config
.
UpDownAxis_P1_Speed
);
ComMoveToPosition
(
Config
.
CompressAxis_P1_Position
,
Config
.
CompAxis_P1_Speed
);
ComMoveToPosition
(
Config
.
CompressAxis_P1_Position
,
Config
.
CompAxis_P1_Speed
);
break
;
case
StoreMoveStep
.
BOX_M_H_TOP1_OtherAxisToP1
:
LogUtil
.
info
(
LOGGER
,
StoreName
+
"到待机状态完成"
);
...
...
@@ -391,31 +391,31 @@ namespace OnlineStore.DeviceLibrary
default
:
break
;
}
}
private
void
ComMoveToPosition
(
int
targetPosition
,
int
targetSpeed
)
}
private
void
ComMoveToPosition
(
int
targetPosition
,
int
targetSpeed
)
{
if
(
IsHasCompress_Axis
)
{
{
ACAxisMove
(
Config
.
Comp_Axis
,
targetPosition
,
targetSpeed
);
}
}
public
void
OpenDoor
(
bool
IsWait
=
true
)
public
void
OpenDoor
(
bool
IsWait
=
true
)
{
if
(
Config
.
HasDoor
.
Equals
(
1
))
{
Thread
.
Sleep
(
60
);
IOManager
.
IOMove
(
IO_Type
.
Door_Down
,
IO_VALUE
.
LOW
);
IOManager
.
IOMove
(
IO_Type
.
Door_Up
,
IO_VALUE
.
HIGH
);
IOManager
.
IOMove
(
IO_Type
.
Door_Up
,
IO_VALUE
.
HIGH
);
if
(
IsWait
)
{
StoreMove
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
Door_Down
,
IO_VALUE
.
LOW
));
StoreMove
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
Door_Up
,
IO_VALUE
.
HIGH
));
{
StoreMove
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
Door_Down
,
IO_VALUE
.
LOW
));
StoreMove
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
Door_Up
,
IO_VALUE
.
HIGH
));
}
}
}
public
void
CloseDoor
(
bool
IsWait
=
true
)
public
void
CloseDoor
(
bool
IsWait
=
true
)
{
if
(
Config
.
HasDoor
.
Equals
(
1
))
{
...
...
@@ -475,7 +475,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil
.
info
(
LOGGER
,
StoreName
+
"原点返回中 :压紧轴,旋转轴,上下轴开始原点返回"
);
StoreMove
.
NextMoveStep
(
StoreMoveStep
.
BOX_H_OtherAxisBack
);
if
(
IsHasCompress_Axis
)
{
{
ACAxisHomeMove
(
Config
.
Comp_Axis
);
}
ACAxisHomeMove
(
Config
.
Middle_Axis
);
...
...
@@ -487,7 +487,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil
.
info
(
LOGGER
,
StoreName
+
"回原点:旋转轴运动到P1,上下轴到P1,压紧轴到P1!"
);
ACAxisMove
(
Config
.
Middle_Axis
,
Config
.
MiddleAxis_P1_Position
,
Config
.
MiddleAxis_P1_Speed
);
ACAxisMove
(
Config
.
UpDown_Axis
,
Config
.
UpDownAxis_DoorOPosition_P1
,
Config
.
UpDownAxis_P1_Speed
);
ComMoveToPosition
(
Config
.
CompressAxis_P1_Position
,
Config
.
CompAxis_P1_Speed
);
ComMoveToPosition
(
Config
.
CompressAxis_P1_Position
,
Config
.
CompAxis_P1_Speed
);
break
;
case
StoreMoveStep
.
BOX_H_MiddleAxisToP1
:
LogUtil
.
info
(
LOGGER
,
StoreName
+
"回原点完成"
);
...
...
@@ -673,7 +673,7 @@ namespace OnlineStore.DeviceLibrary
StoreMove
.
EndMove
();
StopMove
(
true
);
storeStatus
=
StoreStatus
.
SuddenStop
;
}
}
}
private
bool
InProcess
=
false
;
//private DateTime preProcessTime = DateTime.Now;
...
...
@@ -935,10 +935,10 @@ namespace OnlineStore.DeviceLibrary
}
}
}
}
}
}
public
void
TimerProcess
()
{
try
...
...
@@ -950,7 +950,7 @@ namespace OnlineStore.DeviceLibrary
ShowTimeLog
(
"BusyMoveProcess"
);
}
else
if
(
storeRunStatus
.
Equals
(
StoreRunStatus
.
Runing
))
{
{
ShowTimeLog
(
"判断是否需要出入库"
);
AutoResetProcess
();
...
...
@@ -965,7 +965,7 @@ namespace OnlineStore.DeviceLibrary
LOGGER
.
Error
(
StoreName
+
"定时处理出错"
,
ex
);
}
}
private
DateTime
preIoTimerOutTime
=
DateTime
.
Now
;
/// <summary>
...
...
@@ -1183,7 +1183,7 @@ namespace OnlineStore.DeviceLibrary
#
region
入库命令处理
private
void
ReviceInStoreProcess
(
string
message
,
Operation
resultOperation
)
{
Dictionary
<
string
,
string
>
data
=
resultOperation
.
data
;
...
...
@@ -1215,8 +1215,8 @@ namespace OnlineStore.DeviceLibrary
}
//TODO:判断BOX是否处于可以入库状态,如果调试或急停中,需要返回给服务器;
if
(
CanStarInOut
())
{
InOutStoreParam
param
=
new
InOutStoreParam
(
message
,
posId
,
plateH
,
plateW
,
0
);
{
InOutStoreParam
param
=
new
InOutStoreParam
(
message
,
posId
,
plateH
,
plateW
,
0
);
StartInStoreMove
(
param
);
//如果当前正在出入库中,需要记录下来,等待空闲时执行
LogUtil
.
info
(
LOGGER
,
StoreName
+
" 收到服务器入库命令:库位号【"
+
posId
+
"】二维码【"
+
message
+
"】 开始入库!"
);
...
...
@@ -1224,35 +1224,94 @@ namespace OnlineStore.DeviceLibrary
else
{
LogUtil
.
info
(
LOGGER
,
StoreName
+
" 收到服务器入库命令:库位号【"
+
posId
+
"】二维码【"
+
message
+
"】 正在忙碌中,无法入库!"
);
}
}
}
}
public
bool
ReviceLineCheckInStoreCMD
(
string
posId
,
string
plateH
,
string
plateW
,
string
message
)
{
string
logName
=
"入库库位验证【 "
+
message
+
"】【"
+
posId
+
"】:"
;
try
{
if
(
storeRunStatus
.
Equals
(
StoreRunStatus
.
Wait
))
{
LogUtil
.
info
(
LOGGER
,
logName
+
" 设备未启动,验证失败"
);
return
false
;
}
// CodeMsg = "收到二维码【 " + message + "】,发送给服务器获取入库PosID";
LogUtil
.
debug
(
LOGGER
,
logName
+
"发送给服务器验证入库PosID"
);
//发送扫码内容到服务器进行入库操作
Operation
operation
=
getLineBoxStatus
();
operation
.
op
=
1
;
operation
.
data
=
new
Dictionary
<
string
,
string
>()
{
{
"code"
,
message
},
{
"boxId"
,
StoreID
.
ToString
()
}
};
operation
.
data
.
Add
(
"inPos"
,
posId
);
string
server
=
ConfigAppSettings
.
GetValue
(
Setting_Init
.
http_server
);
Operation
resultOperation
=
HttpHelper
.
Post
(
StoreManager
.
GetPostApi
(
server
),
operation
,
false
);
if
(
resultOperation
==
null
)
{
// CodeMsg = "二维码【" + message + "】没有收到服务器反馈";
LogUtil
.
info
(
LOGGER
,
logName
+
" 没有收到服务器反馈 "
);
}
else
if
(!
string
.
IsNullOrEmpty
(
resultOperation
.
msg
))
{
//如果有提示消息,直接显示提示
LogUtil
.
info
(
LOGGER
,
logName
+
"服务器反馈 :"
+
resultOperation
.
msg
);
}
else
if
(
resultOperation
.
op
.
Equals
(
1
))
{
LogUtil
.
info
(
LOGGER
,
logName
+
" 成功"
);
return
true
;
}
}
catch
(
Exception
ex
)
{
LogUtil
.
info
(
LOGGER
,
logName
+
" 出错:"
+
ex
.
ToString
());
}
return
false
;
}
public
void
ReviceLineInStoreCMD
(
string
posId
,
string
plateH
,
string
plateW
,
string
message
)
{
string
logName
=
"流水线入库命令【 "
+
message
+
"】【"
+
posId
+
"】:"
;
if
(!
LineConnect
.
WaitInStoreList
.
Contains
(
posId
))
{
LogUtil
.
error
(
logName
+
"库位未验证通过,重新验证库位"
);
bool
result
=
ReviceLineCheckInStoreCMD
(
posId
,
plateH
,
plateW
,
message
);
if
(!
result
)
{
return
;
}
}
else
{
LineConnect
.
WaitInStoreList
.
Remove
(
posId
);
}
//根据发送的posId获取位置列表
ACStorePosition
position
=
CSVPositionReader
<
ACStorePosition
>.
GetPositon
(
posId
);
if
(
position
==
null
)
{
//出入库没有找到服务器发送的库位,需要打印日志方便查询原因
WarnMsg
=
"入库未找到库位:二维码【"
+
message
+
"】库位【"
+
posId
+
"】 "
;
LogUtil
.
error
(
LOGGER
,
"收到流水线入库:入库未找到库位:二维码【"
+
message
+
"】库位【"
+
posId
+
"】
"
);
LogUtil
.
info
(
LOGGER
,
"收到流水线入库:入库未找到库位:二维码【"
+
message
+
"】库位【"
+
posId
+
"】"
);
LogUtil
.
error
(
logName
+
"未找到库位
"
);
//
LogUtil.info(LOGGER, "收到流水线入库:入库未找到库位:二维码【" + message + "】库位【" + posId + "】");
return
;
}
//TODO:判断BOX是否处于可以入库状态,如果调试或急停中,需要返回给服务器;
if
(
CanStarInOut
())
{
InOutStoreParam
param
=
new
InOutStoreParam
(
message
,
posId
,
plateH
,
plateW
,
0
);
{
InOutStoreParam
param
=
new
InOutStoreParam
(
message
,
posId
,
plateH
,
plateW
,
0
);
LogUtil
.
info
(
logName
+
" 开始入库!"
);
StartInStoreMove
(
param
);
//如果当前正在出入库中,需要记录下来,等待空闲时执行
LogUtil
.
info
(
LOGGER
,
StoreName
+
" 收到流水线入库:库位号【"
+
posId
+
"】二维码【"
+
message
+
"】 开始入库!"
);
}
else
{
LogUtil
.
info
(
LOGGER
,
StoreName
+
" 收到流水线入库:库位号【"
+
posId
+
"】二维码【"
+
message
+
"】 正在忙碌中,无法入库!"
);
LogUtil
.
info
(
logName
+
" 正在忙碌中,无法入库!"
);
}
}
}
#
endregion
...
...
@@ -1388,7 +1447,7 @@ namespace OnlineStore.DeviceLibrary
#
endregion
#
region
与服务器通信定时器,每
1
秒向服务器通知一次状态
,
同时执行出库操作
private
string
CodeMsg
=
""
;
private
bool
isInProcess
=
false
;
public
void
server_connect_timer_Tick
(
object
sender
,
EventArgs
e
)
...
...
@@ -1408,7 +1467,8 @@ namespace OnlineStore.DeviceLibrary
{
ss
=
(
int
)
StoreStatus
.
Debugging
;
}
LineConnect
.
SendHeart
(
Config
.
Id
,
Config
.
CID
,
(
int
)
ss
,
(
int
)
storeRunStatus
,
hasTray
,
(
int
)
alarmType
);
StoreSendBean
store
=
new
StoreSendBean
(
Config
.
Id
,
Config
.
CID
,
(
int
)
ss
,
(
int
)
storeRunStatus
,
hasTray
,
(
int
)
alarmType
);
LineConnect
.
SendHeart
(
store
);
}
if
(
StoreManager
.
IsConnectServer
)
{
...
...
source/DeviceLibrary/acSingleStore/AC_SA_BoxBean_Partial.cs
查看文件 @
5e93ab7
...
...
@@ -654,7 +654,11 @@ namespace OnlineStore.DeviceLibrary
{
ss
=
(
int
)
StoreStatus
.
Debugging
;
}
LineConnect
.
OutStoreEnd
(
Config
.
Id
,
Config
.
CID
,
(
int
)
storeStatus
,
(
int
)
storeRunStatus
,
hasTray
,(
int
)
alarmType
,
StoreMove
.
MoveParam
.
PositionNum
,
StoreMove
.
MoveParam
.
PlateH
,
StoreMove
.
MoveParam
.
PlateW
);
StoreSendBean
store
=
new
StoreSendBean
(
Config
.
Id
,
Config
.
CID
,
(
int
)
storeStatus
,
(
int
)
storeRunStatus
,
hasTray
,
(
int
)
alarmType
);
store
.
PosId
=
StoreMove
.
MoveParam
.
PositionNum
;
store
.
PlateH
=
StoreMove
.
MoveParam
.
PlateH
;
store
.
PlateW
=
StoreMove
.
MoveParam
.
PlateW
;
LineConnect
.
OutStoreEnd
(
store
);
}
else
if
(
StoreMove
.
MoveStep
==
StoreMoveStep
.
SO_13_GoBack
)
{
...
...
source/DeviceLibrary/lineConnect/LineConnect.cs
查看文件 @
5e93ab7
...
...
@@ -9,8 +9,9 @@ namespace OnlineStore.DeviceLibrary
{
public
class
LineConnect
{
private
static
int
ClientKeepSecond
=
10
;
private
static
TcpClient
client
=
null
;
public
static
List
<
string
>
WaitInStoreList
=
new
List
<
string
>();
public
static
void
StartConnect
()
{
string
lineServer
=
ConfigAppSettings
.
GetValue
(
Setting_Init
.
LineServerIp
);
...
...
@@ -21,6 +22,7 @@ namespace OnlineStore.DeviceLibrary
return
;
}
client
=
new
TcpClient
();
bool
result
=
client
.
StartConnect
(
lineServer
,
linePort
,
HandlerMsg
,
2000
);
}
...
...
@@ -45,7 +47,7 @@ namespace OnlineStore.DeviceLibrary
return
seq
;
}
public
static
void
SendHeart
(
int
id
,
string
cid
,
int
ss
,
int
runs
,
int
doorHasTray
,
int
alarmTyp
e
)
public
static
void
SendHeart
(
StoreSendBean
stor
e
)
{
if
(
client
==
null
)
{
...
...
@@ -53,24 +55,16 @@ namespace OnlineStore.DeviceLibrary
}
try
{
List
<
object
>
paramList
=
new
List
<
object
>();
paramList
.
Add
(
cmd_heart
);
paramList
.
Add
(
id
);
paramList
.
Add
(
cid
);
paramList
.
Add
(
nextSeq
());
paramList
.
Add
(
ss
);
paramList
.
Add
(
runs
);
paramList
.
Add
(
doorHasTray
);
paramList
.
Add
(
alarmType
);
string
heartMsg
=
ToParamStr
(
paramList
);
store
.
Cmd
=
cmd_heart
;
string
heartMsg
=
ToParamStr
(
store
);
client
.
send
(
heartMsg
);
}
catch
(
Exception
ex
)
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
"SendHeart 出错:"
+
ex
.
ToString
());
LogUtil
.
error
(
"SendHeart 出错:"
+
ex
.
ToString
());
}
}
public
static
void
OutStoreEnd
(
int
id
,
string
cid
,
int
ss
,
int
runs
,
int
doorHasTray
,
int
alarmType
,
string
posid
,
string
plateH
,
string
plateW
)
public
static
void
OutStoreEnd
(
StoreSendBean
store
)
{
if
(
client
==
null
)
{
...
...
@@ -78,71 +72,74 @@ namespace OnlineStore.DeviceLibrary
}
try
{
List
<
object
>
paramList
=
new
List
<
object
>();
paramList
.
Add
(
cmd_outend
);
paramList
.
Add
(
id
);
paramList
.
Add
(
cid
);
paramList
.
Add
(
nextSeq
());
paramList
.
Add
(
ss
);
paramList
.
Add
(
runs
);
paramList
.
Add
(
doorHasTray
);
paramList
.
Add
(
alarmType
);
paramList
.
Add
(
posid
);
paramList
.
Add
(
plateH
);
paramList
.
Add
(
plateW
);
//string heartMsg = cmd_outend + cmd_spilt + id + cmd_spilt + cid + cmd_spilt + nextSeq() + cmd_spilt + ss + cmd_spilt + runs + cmd_spilt + doorHasTray+ cmd_spilt + posid + cmd_spilt;
//string msg = heartMsg + posid + cmd_spilt + plateH + cmd_spilt + plateW + cmd_spilt + "\r";
string
msg
=
ToParamStr
(
paramList
);
client
.
send
(
msg
);
store
.
Cmd
=
cmd_outend
;
string
msg
=
ToParamStr
(
store
);
client
.
send
(
msg
);
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
"OutStoreEnd 出错:"
+
ex
.
ToString
());
}
}
private
static
string
ToParamStr
(
StoreSendBean
store
)
{
return
JsonHelper
.
SerializeObject
(
store
)+
"\r"
;
}
private
static
string
ToParamStr
(
List
<
object
>
paramList
)
{
string
result
=
""
;
foreach
(
object
str
in
paramList
)
foreach
(
object
str
in
paramList
)
{
result
+=
str
+
cmd_spilt
.
ToString
();
}
return
result
+
"\r"
;
return
result
+
"\r"
;
}
private
static
void
HandlerMsg
(
string
message
)
{
try
{
string
[]
msgArray
=
message
.
Split
(
cmd_spilt
);
if
(
msgArray
.
Length
>
2
)
message
=
message
.
Replace
(
"\r"
,
""
);
StoreReviceBean
reviceInfo
=
JsonHelper
.
DeserializeJsonToObject
<
StoreReviceBean
>(
message
);
//string[] msgArray = message.Split(cmd_spilt);
if
(
reviceInfo
==
null
)
{
LogUtil
.
debug
(
"收到消息:"
+
message
+
",解析失败"
);
}
else
{
string
cmd
=
msgArray
[
0
];
int
canStartOut
=
Convert
.
ToInt32
(
msgArray
[
1
]);
CanOutStore
=
canStartOut
.
Equals
(
1
);
string
cmd
=
reviceInfo
.
Cmd
;
CanOutStore
=
reviceInfo
.
CanOutStore
.
Equals
(
1
);
LastUpdateTime
=
DateTime
.
Now
;
if
(
cmd
.
Equals
(
cmd_startIn
))
{
LogUtil
.
info
(
"收到流水线入库消息:"
+
message
);
string
posId
=
msgArray
[
2
]
;
string
plateH
=
msgArray
[
3
];
string
plateW
=
msgArray
[
4
];
string
code
=
msgArray
[
5
];
StoreManager
.
Store
.
ReviceLineInStoreCMD
(
posId
,
plateH
,
plateW
,
code
);
//string posId = reviceInfo.PosId
;
//string plateH = reviceInfo.PlateH
//
string plateW = msgArray[4];
//
string code = msgArray[5];
StoreManager
.
Store
.
ReviceLineInStoreCMD
(
reviceInfo
.
PosId
,
reviceInfo
.
PlateH
,
reviceInfo
.
PlateW
,
reviceInfo
.
WareCode
);
}
else
if
(
cmd
.
Equals
(
cmd_updateDebug
))
{
int
isDebug
=
Convert
.
ToInt32
(
msgArray
[
2
])
;
int
isDebug
=
reviceInfo
.
IsDebug
;
LogUtil
.
info
(
"收到流水线更改调试状态="
+
isDebug
);
StoreManager
.
Store
.
IsDebug
=
isDebug
.
Equals
(
1
)
?
true
:
false
;
ConfigAppSettings
.
SaveValue
(
Setting_Init
.
IsInDebug
,
isDebug
);
LogUtil
.
info
(
"切换调试状态= "
+
isDebug
+
";"
);
}
else
else
if
(
cmd
.
Equals
(
cmd_checStartIn
))
{
LogUtil
.
debug
(
"收到消息:"
+
message
);
LogUtil
.
info
(
"收到流水线入库库位验证消息:"
+
message
);
bool
result
=
StoreManager
.
Store
.
ReviceLineCheckInStoreCMD
(
reviceInfo
.
PosId
,
reviceInfo
.
PlateH
,
reviceInfo
.
PlateW
,
reviceInfo
.
WareCode
);
if
(
result
)
{
LineConnect
.
WaitInStoreList
.
Add
(
reviceInfo
.
PosId
);
}
}
}
}
catch
(
Exception
ex
)
...
...
@@ -151,12 +148,13 @@ namespace OnlineStore.DeviceLibrary
}
}
public
static
char
cmd_spilt
=
';'
;
p
rivate
static
string
cmd_heart
=
"heart"
;
p
ublic
static
string
cmd_heart
=
"heart"
;
private
static
string
cmd_outend
=
"outend"
;
private
static
string
cmd_startIn
=
"starIn"
;
private
static
string
cmd_updateDebug
=
"updateDebug"
;
private
static
bool
CanOutStore
=
false
;
public
static
DateTime
LastUpdateTime
=
new
DateTime
(
0
);
public
static
string
cmd_checStartIn
=
"cmd_checStartIn"
;
public
static
bool
IsConnect
()
{
if
(
client
==
null
)
...
...
@@ -173,11 +171,45 @@ namespace OnlineStore.DeviceLibrary
public
static
bool
CanStartOut
()
{
TimeSpan
span
=
DateTime
.
Now
-
LastUpdateTime
;
if
(
span
.
TotalSeconds
<
3
&&
CanOutStore
)
if
(
span
.
TotalSeconds
<
ClientKeepSecond
&&
CanOutStore
)
{
return
true
;
}
return
false
;
}
}
public
class
StoreReviceBean
{
public
string
Cmd
=
""
;
public
int
CanOutStore
=
0
;
public
string
PosId
=
""
;
public
string
PlateH
=
"0"
;
public
string
PlateW
=
"0"
;
public
string
WareCode
=
""
;
public
int
IsDebug
=
0
;
}
public
class
StoreSendBean
{
public
StoreSendBean
(
int
id
,
string
cid
,
int
ss
,
int
runs
,
int
doorHasTray
,
int
alarmType
)
{
this
.
StoreId
=
id
;
this
.
Cid
=
cid
;
this
.
SStatus
=
ss
;
this
.
SRunStatus
=
runs
;
this
.
DoorHasTray
=
doorHasTray
;
this
.
AlarmType
=
alarmType
;
this
.
Seq
=
LineConnect
.
nextSeq
();
}
public
string
Cmd
=
LineConnect
.
cmd_heart
;
public
int
StoreId
=
0
;
public
string
Cid
=
""
;
public
int
Seq
=
0
;
public
int
SStatus
=
0
;
public
int
SRunStatus
=
0
;
public
int
DoorHasTray
=
0
;
public
int
AlarmType
=
0
;
public
string
PosId
=
""
;
public
string
PlateH
=
"0"
;
public
string
PlateW
=
"0"
;
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论