Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
张东亮
/
SO1037-LiftController
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 29fc87a5
由
张东亮
编写于
2022-01-18 16:37:37 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
测试可用
1 个父辈
757c5c07
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
185 行增加
和
89 行删除
LiftController/FrmMain.Designer.cs
LiftController/FrmMain.cs
source/DeviceLibrary/Config/LineConfig.csv
source/DeviceLibrary/Context/Context.cs
source/DeviceLibrary/IO/IOManager.cs
source/DeviceLibrary/Models/LiftInfo.cs
source/DeviceLibrary/Models/Service/Request/DoorInfo.cs
source/DeviceLibrary/Models/Service/Response/Status.cs
source/DeviceLibrary/Service/IService.cs
source/DeviceLibrary/Service/Services.cs
LiftController/FrmMain.Designer.cs
查看文件 @
29fc87a
...
...
@@ -105,7 +105,6 @@ namespace LogisticsIntelligence
this
.
Name
=
"FrmMain"
;
this
.
Text
=
"LiftController"
;
this
.
FormClosing
+=
new
System
.
Windows
.
Forms
.
FormClosingEventHandler
(
this
.
FrmMain_FormClosing
);
this
.
FormClosed
+=
new
System
.
Windows
.
Forms
.
FormClosedEventHandler
(
this
.
FrmMain_FormClosed
);
this
.
Load
+=
new
System
.
EventHandler
(
this
.
FrmMain_Load
);
this
.
tableLayoutPanel1
.
ResumeLayout
(
false
);
this
.
groupBox1
.
ResumeLayout
(
false
);
...
...
LiftController/FrmMain.cs
查看文件 @
29fc87a
...
...
@@ -29,11 +29,6 @@ namespace LogisticsIntelligence
AddForm
(
" IO列表 "
,
frmi
);
timer1
.
Start
();
}
private
void
FrmMain_FormClosed
(
object
sender
,
FormClosedEventArgs
e
)
{
//appContext.Close();
timer1
.
Enabled
=
false
;
}
private
void
UpdateLift
()
{
this
.
Invoke
(
new
Action
(()=>
{
...
...
@@ -52,6 +47,11 @@ namespace LogisticsIntelligence
{
e
.
Cancel
=
true
;
}
else
{
timer1
.
Enabled
=
false
;
System
.
Environment
.
Exit
(
System
.
Environment
.
ExitCode
);
}
}
private
void
AddForm
(
string
text
,
Form
form
)
{
...
...
source/DeviceLibrary/Config/LineConfig.csv
查看文件 @
29fc87a
类型,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义,SlaveID
PRO,IO模块对应的DI数量,IO_DILength,192.168.103.21#8;192.168.103.22#8,,,,,,
PRO,模块对应的DO数量,IO_DOLength,192.168.103.21#8;192.168.103.22#8,,,,,,
PRO,IO模块IP,PRO_AOI_IP_1,192.168.103.21,,,,,,
PRO,IO模块IP,PRO_AOI_IP_2,192.168.103.22,,,,,,
PRO,IO模块对应的DI数量,IO_DILength,10.85.199.29#8;192.168.103.22#8,,,,,,
PRO,模块对应的DO数量,IO_DOLength,10.85.199.29#8;192.168.103.22#8,,,,,,
PRO,IO模块IP,PRO_AOI_IP_1,10.85.199.29,,,,,,
,,,,,,,,,
DI,D2-任务应答,LIFT_D2_Response,0,PRO_AOI_IP_1,0,D2-任务应答,X21,X21,0
DI,D2-到达1F,LIFT_D2_AtFirst,1,PRO_AOI_IP_1,0,D2-到达1F,X22,X22,0
...
...
source/DeviceLibrary/Context/Context.cs
查看文件 @
29fc87a
...
...
@@ -6,11 +6,13 @@ namespace DeviceLibrary.Context
{
ServiceContext
serviceContext
=
new
ServiceContext
();
LineManager
lineManager
=
new
LineManager
();
public
void
Init
()
{
LiftContext
.
Init
();
lineManager
.
Init
();
IOManager
.
Init
();
IOManager
.
instance
.
ConnectionIOList
(
LineManager
.
Config
.
DIODeviceNameList
);
}
public
void
Open
()
{
...
...
source/DeviceLibrary/IO/IOManager.cs
查看文件 @
29fc87a
...
...
@@ -5,6 +5,7 @@ using System.Collections.Generic;
using
System.Linq
;
using
System.Text
;
using
System.Threading
;
using
System.Threading.Tasks
;
namespace
DeviceLibrary
{
...
...
@@ -21,21 +22,18 @@ namespace DeviceLibrary
if
(
LineManager
.
Config
.
DOList
.
ContainsKey
(
ioType
))
{
int
trytimes
=
5
;
ConfigIO
configIo
=
LineManager
.
Config
.
DOList
[
ioType
];
ConfigIO
configIo
=
LineManager
.
Config
.
DOList
[
ioType
];
instance
.
WriteSingleDO
(
configIo
.
IO_IP
,
configIo
.
SlaveID
,
configIo
.
GetIOAddr
(),
ioValue
);
instance
.
WriteSingleDO
(
configIo
.
IO_IP
,
configIo
.
SlaveID
,
configIo
.
GetIOAddr
(),
ioValue
);
Thread
.
Sleep
(
60
);
while
(
trytimes
>
0
&&
!
IOValue
(
ioType
).
Equals
(
ioValue
))
{
instance
.
WriteSingleDO
(
configIo
.
IO_IP
,
configIo
.
SlaveID
,
configIo
.
GetIOAddr
(),
ioValue
);
trytimes
--;
}
Thread
.
Sleep
(
100
);
}
else
{
LogUtil
.
error
(
"没有DO="
+
ioType
);
}
}
public
static
void
CIOMove
(
string
ioType
,
IO_VALUE
ioValue
)
public
static
void
CIOMove
(
string
ioType
,
IO_VALUE
ioValue
)
{
if
(!
IOValue
(
ioType
).
Equals
(
ioValue
))
{
...
...
@@ -62,11 +60,11 @@ namespace DeviceLibrary
}
return
ioValue
;
}
public
static
IO_VALUE
DOValue
(
string
ioType
)
public
static
IO_VALUE
DOValue
(
string
ioType
)
{
IO_VALUE
ioValue
=
IO_VALUE
.
None
;
ConfigIO
configIo
=
GetDO
(
ioType
);
ConfigIO
configIo
=
GetDO
(
ioType
);
if
(
configIo
!=
null
)
{
...
...
@@ -78,10 +76,10 @@ namespace DeviceLibrary
}
return
ioValue
;
}
public
static
IO_VALUE
DIValue
(
string
ioType
)
public
static
IO_VALUE
DIValue
(
string
ioType
)
{
IO_VALUE
ioValue
=
IO_VALUE
.
None
;
ConfigIO
configIo
=
GetDI
(
ioType
);
ConfigIO
configIo
=
GetDI
(
ioType
);
if
(
configIo
!=
null
)
{
ioValue
=
instance
.
GetDIValue
(
configIo
.
IO_IP
,
configIo
.
SlaveID
,
configIo
.
GetIOAddr
());
...
...
@@ -92,7 +90,7 @@ namespace DeviceLibrary
}
return
ioValue
;
}
private
static
ConfigIO
GetDI
(
string
ioType
)
private
static
ConfigIO
GetDI
(
string
ioType
)
{
ConfigIO
configIo
=
null
;
if
(
LineManager
.
Config
.
DIList
.
ContainsKey
(
ioType
))
...
...
@@ -101,13 +99,13 @@ namespace DeviceLibrary
}
return
configIo
;
}
private
static
ConfigIO
GetDO
(
string
ioType
)
private
static
ConfigIO
GetDO
(
string
ioType
)
{
ConfigIO
configIo
=
null
;
ConfigIO
configIo
=
null
;
if
(
LineManager
.
Config
.
DOList
.
ContainsKey
(
ioType
))
{
return
LineManager
.
Config
.
DOList
[
ioType
];
}
}
return
configIo
;
}
#
endregion
...
...
@@ -123,7 +121,7 @@ namespace DeviceLibrary
instance
=
new
KNDManager
();
}
}
public
abstract
void
ReadAllDI
(
string
deviceName
,
byte
slaveId
);
public
abstract
void
ReadAllDI
(
string
deviceName
,
byte
slaveId
);
public
abstract
void
ReadAllDO
(
string
deviceName
,
byte
slaveId
);
...
...
@@ -136,7 +134,7 @@ namespace DeviceLibrary
public
abstract
IO_VALUE
GetDOValue
(
string
deviceName
,
byte
slaveID
,
ushort
v
);
public
abstract
IO_VALUE
GetIOValue
(
ConfigIO
configIO
);
...
...
source/DeviceLibrary/Models/LiftInfo.cs
查看文件 @
29fc87a
...
...
@@ -72,7 +72,7 @@ namespace DeviceLibrary.Models
/// <returns></returns>
public
bool
IsIdle
(
out
string
msg
)
{
msg
=
"
ok
"
;
msg
=
""
;
if
(
Monitor
.
TryEnter
(
locObj
,
500
))
{
...
...
@@ -175,23 +175,36 @@ namespace DeviceLibrary.Models
}
if
(
IOManager
.
IOValue
(
$
"{liftId}{SettingString._AGVRequest}"
).
Equals
(
IO_VALUE
.
HIGH
))
{
if
(
IOManager
.
IOValue
(
$
"{liftId}{SettingString._Response}"
).
Equals
(
IO_VALUE
.
HIGH
)
&&
IOManager
.
IOValue
(
$
"{liftId}{SettingString._DoorOpen}"
).
Equals
(
IO_VALUE
.
HIGH
))
{
OpenAGVLeave
(
5
);
LogUtil
.
info
(
$
"{lift} 上一次异常退出,发送AGV离开清除异常状态!"
);
return
false
;
}
if
(
IOManager
.
IOValue
(
$
"{liftId}{SettingString._Response}"
).
Equals
(
IO_VALUE
.
HIGH
))
{
SetState
(
LiftState
.
Busy
);
Status
.
Set
(
lift
);
LogUtil
.
info
(
$
"{lift} 成功!"
)
;
msg
=
"ok"
;
return
true
;
}
}
else
{
IOManager
.
IOMove
(
$
"{liftId}{SettingString._AGVRequest}"
,
IO_VALUE
.
HIGH
);
OpenAGVRequest
(
true
);
Thread
.
Sleep
(
2000
);
if
(
IOManager
.
IOValue
(
$
"{liftId}{SettingString._Response}"
).
Equals
(
IO_VALUE
.
HIGH
))
{
if
(
IOManager
.
IOValue
(
$
"{liftId}{SettingString._DoorOpen}"
).
Equals
(
IO_VALUE
.
HIGH
))
{
OpenAGVLeave
(
5
);
LogUtil
.
info
(
$
"{lift} 上一次异常退出,发送AGV离开清除异常状态!"
);
return
false
;
}
SetState
(
LiftState
.
Busy
);
Status
.
Set
(
lift
);
LogUtil
.
info
(
$
"{lift} 成功!"
)
;
msg
=
"ok"
;
return
true
;
}
msg
=
"电梯未任务应答"
;
...
...
@@ -209,29 +222,29 @@ namespace DeviceLibrary.Models
{
if
(
CanControl
(
doorInfo
))
{
IOManager
.
IOMove
(
$
"{liftId}{SettingString._AGVLeave}"
,
IO_VALUE
.
HIGH
);
Thread
.
Sleep
(
3000
);
bool
rtn
=
IOManager
.
IOValue
(
$
"{liftId}{SettingString._AGVLeave}"
).
Equals
(
IO_VALUE
.
HIGH
);
if
(
rtn
&&
IsDesClient
(
doorInfo
))
if
(
IsDesClient
(
doorInfo
))
{
//关闭送料信号
CloseSendFloor
();
//AGV离开信号,使得门关
CloseDoor
();
Status
.
Clear
();
SetState
(
LiftState
.
Idle
);
//
关闭所有IO
CloseAllDO
(
);
LogUtil
.
info
(
$
"AGV离开,{doorInfo.sourceFloor}[{doorInfo.sourceFloor}]取出电梯[{liftId}]内的产品,清除电梯占用"
);
//
是否继续使用电梯
OpenAGVRequest
(
doorInfo
.
continueUse
);
LogUtil
.
info
(
$
"AGV离开,{doorInfo.sourceFloor}[{doorInfo.sourceFloor}]
[{doorInfo.continueUse}]
取出电梯[{liftId}]内的产品,清除电梯占用"
);
}
if
(
rtn
&&
IsSrcClient
(
doorInfo
))
if
(
IsSrcClient
(
doorInfo
))
{
//关闭呼叫信号
CloseCallFloor
();
if
(!
Status
.
destinationFloor
.
Equals
(
0
))
//AGV离开信号,使得门关
CloseDoor
();
if
(!
Status
.
destinationFloor
.
Equals
(-
1
))
{
RunToFloor
(
Status
.
destinationFloor
);
while
(!
CheckIsInRun
())
{
Thread
.
Sleep
(
3000
);
RunToFloor
(
Status
.
destinationFloor
);
}
LogUtil
.
info
(
$
"AGV离开,{doorInfo.sourceFloor}[{doorInfo.sourceFloor}]将产品送入电梯[{liftId}]"
);
}
}
...
...
@@ -239,44 +252,49 @@ namespace DeviceLibrary.Models
}
return
false
;
}
private
bool
CheckIsInRun
()
{
return
IOManager
.
IOValue
(
$
"{liftId}{SettingString._InRun}"
).
Equals
(
IO_VALUE
.
HIGH
);
}
private
bool
CheckIsFault
()
{
return
IOManager
.
IOValue
(
$
"{liftId}{SettingString._InFault}"
).
Equals
(
IO_VALUE
.
HIGH
);
}
/// <summary>
/// 运行到指定楼层(送料信号)
/// </summary>
/// <param name="floor"></param>
private
void
RunToFloor
(
int
floor
)
{
switch
(
floor
)
{
//case -1:
// IOManager.CIOMove($"{liftId}{SettingString._RunToNegativeFirst}", IO_VALUE.HIGH);
// break;
case
1
:
IOManager
.
CIOMove
(
$
"{liftId}{SettingString._RunToFirst}"
,
IO_VALUE
.
HIGH
);
break
;
Task
.
Factory
.
StartNew
(()
=>
{
switch
(
floor
)
{
//case -1:
// IOManager.CIOMove($"{liftId}{SettingString._RunToNegativeFirst}", IO_VALUE.HIGH);
// break;
case
1
:
IOManager
.
CIOMove
(
$
"{liftId}{SettingString._RunToFirst}"
,
IO_VALUE
.
HIGH
);
break
;
//case 2:
// IOManager.CIOMove($"{liftId}{SettingString._RunToSecond}", IO_VALUE.HIGH);
// break;
//case 2:
// IOManager.CIOMove($"{liftId}{SettingString._RunToSecond}", IO_VALUE.HIGH);
// break;
case
3
:
IOManager
.
CIOMove
(
$
"{liftId}{SettingString._RunToThird}"
,
IO_VALUE
.
HIGH
);
break
;
case
4
:
IOManager
.
CIOMove
(
$
"{liftId}{SettingString._RunToFourth}"
,
IO_VALUE
.
HIGH
);
break
;
}
case
3
:
IOManager
.
CIOMove
(
$
"{liftId}{SettingString._RunToThird}"
,
IO_VALUE
.
HIGH
);
break
;
case
4
:
IOManager
.
CIOMove
(
$
"{liftId}{SettingString._RunToFourth}"
,
IO_VALUE
.
HIGH
);
break
;
}
DateTime
dateTime1
=
DateTime
.
Now
;
//等待运行信号亮
while
(!
CheckIsInRun
())
{
if
((
DateTime
.
Now
-
dateTime1
).
TotalSeconds
>
10
)
{
LogUtil
.
error
(
"检查AGV送料信号有效:等待电梯运行信号超时"
);
break
;
}
Thread
.
Sleep
(
1000
);
}
LogUtil
.
info
(
$
"送料信号:运行到{floor}层"
);
CloseSendFloor
();
});
}
/// <summary>
/// 运行到指定楼层(呼叫信号)
/// </summary>
...
...
@@ -326,7 +344,7 @@ namespace DeviceLibrary.Models
return
;
if
(!
liftId
.
Equals
(
clientStatus
.
liftId
))
return
;
int
floor
=
0
;
int
floor
=
-
1
;
if
(
IOManager
.
IOValue
(
$
"{liftId}{SettingString._AtFirst}"
).
Equals
(
IO_VALUE
.
HIGH
))
{
floor
=
1
;
...
...
@@ -345,6 +363,8 @@ namespace DeviceLibrary.Models
{
Status
.
door
=
"opened"
;
RunState
=
LiftRunState
.
DoorOpen
;
//关闭呼叫信号
CloseCallFloor
();
}
else
{
...
...
@@ -370,19 +390,91 @@ namespace DeviceLibrary.Models
clientInfo
.
SetInfo
(
clientStatus
.
sourceClient
,
clientStatus
.
hasIdleAgv
);
}
}
private
void
Close
AllDO
()
private
void
Close
SendFloor
()
{
IOManager
.
CIOMove
(
$
"{liftId}{SettingString._AGVRequest}"
,
IO_VALUE
.
LOW
);
IOManager
.
CIOMove
(
$
"{liftId}{SettingString._AGVLeave}"
,
IO_VALUE
.
LOW
);
IOManager
.
CIOMove
(
$
"{liftId}{SettingString._RunToFirst}"
,
IO_VALUE
.
LOW
);
IOManager
.
CIOMove
(
$
"{liftId}{SettingString._RunToThird}"
,
IO_VALUE
.
LOW
);
IOManager
.
CIOMove
(
$
"{liftId}{SettingString._RunToFourth}"
,
IO_VALUE
.
LOW
);
LogUtil
.
info
(
"关闭所有送料信号"
);
}
/// <summary>
/// 等待运行信号亮或者关信号
/// </summary>
/// <returns></returns>
private
bool
CheckAGVLeaveOK
()
{
return
!
CheckDoorOpen
()
||
CheckIsInRun
();
}
private
bool
CheckDoorOpen
()
{
return
IOManager
.
IOValue
(
$
"{liftId}{SettingString._DoorOpen}"
).
Equals
(
IO_VALUE
.
HIGH
);
}
private
bool
CheckIsInRun
()
{
return
IOManager
.
IOValue
(
$
"{liftId}{SettingString._InRun}"
).
Equals
(
IO_VALUE
.
HIGH
);
}
private
bool
CheckIsFault
()
{
return
IOManager
.
IOValue
(
$
"{liftId}{SettingString._InFault}"
).
Equals
(
IO_VALUE
.
HIGH
);
}
private
void
OpenAGVLeave
(
bool
open
)
{
if
(
open
)
{
IOManager
.
CIOMove
(
$
"{liftId}{SettingString._AGVLeave}"
,
IO_VALUE
.
HIGH
);
LogUtil
.
info
(
"打开AGV离开信号"
);
}
else
{
IOManager
.
CIOMove
(
$
"{liftId}{SettingString._AGVLeave}"
,
IO_VALUE
.
LOW
);
LogUtil
.
info
(
"关闭AGV离开信号"
);
}
}
private
void
OpenAGVLeave
(
int
second
)
{
Task
.
Factory
.
StartNew
(()
=>
{
OpenAGVLeave
(
true
);
Task
.
Delay
(
second
*
1000
);
OpenAGVLeave
(
false
);
});
}
private
void
CloseDoor
()
{
Task
.
Factory
.
StartNew
(()=>
{
OpenAGVLeave
(
true
);
DateTime
dateTime
=
DateTime
.
Now
;
//门关信号
while
(
CheckDoorOpen
()
&&
(
DateTime
.
Now
-
dateTime
).
TotalMinutes
<
1
)
{
if
((
DateTime
.
Now
-
dateTime
).
TotalSeconds
>
5
)
{
IOManager
.
CIOMove
(
$
"{liftId}{SettingString._AGVLeave}"
,
IO_VALUE
.
HIGH
);
}
Thread
.
Sleep
(
300
);
}
OpenAGVLeave
(
false
);
});
}
private
void
OpenAGVRequest
(
bool
open
)
{
if
(
open
)
{
IOManager
.
CIOMove
(
$
"{liftId}{SettingString._AGVRequest}"
,
IO_VALUE
.
HIGH
);
LogUtil
.
info
(
"打开AGV请求信号"
);
}
else
{
IOManager
.
CIOMove
(
$
"{liftId}{SettingString._AGVRequest}"
,
IO_VALUE
.
LOW
);
LogUtil
.
info
(
"关闭AGV请求信号"
);
}
}
private
void
CloseCallFloor
()
{
IOManager
.
CIOMove
(
$
"{liftId}{SettingString._FirstCall}"
,
IO_VALUE
.
LOW
);
IOManager
.
CIOMove
(
$
"{liftId}{SettingString._ThirdCall}"
,
IO_VALUE
.
LOW
);
IOManager
.
CIOMove
(
$
"{liftId}{SettingString._FourthCall}"
,
IO_VALUE
.
LOW
);
LogUtil
.
info
(
"关闭所有呼叫信号"
);
}
}
/// <summary>
...
...
source/DeviceLibrary/Models/Service/Request/DoorInfo.cs
查看文件 @
29fc87a
...
...
@@ -22,8 +22,11 @@ namespace DeviceLibrary.Models.Service.Request
/// <summary>
/// 架子来源层
/// </summary>
public
int
sourceFloor
{
get
;
set
;
}
=
0
;
public
int
sourceFloor
{
get
;
set
;
}
=
-
1
;
/// <summary>
/// 继续使用电梯
/// </summary>
public
bool
continueUse
{
get
;
set
;}=
false
;
public
override
string
ToString
()
{
return
$
"{sourceClient}[{sourceFloor}]:{liftId}"
;
...
...
source/DeviceLibrary/Models/Service/Response/Status.cs
查看文件 @
29fc87a
...
...
@@ -13,7 +13,7 @@ namespace DeviceLibrary.Models.Service.Response
/// <summary>
/// 当前电梯处于哪一层
/// </summary>
public
int
floor
{
get
;
set
;
}
=
0
;
public
int
floor
{
get
;
set
;
}
=
-
1
;
/// <summary>
/// 电梯门是否打开,打开=opened,关闭=closed
/// </summary>
...
...
@@ -25,7 +25,7 @@ namespace DeviceLibrary.Models.Service.Response
/// <summary>
/// 架子来源楼层
/// </summary>
public
int
sourceFloor
{
get
;
set
;
}
=
0
;
public
int
sourceFloor
{
get
;
set
;
}
=
-
1
;
/// <summary>
/// 架子来源点位
/// </summary>
...
...
@@ -37,7 +37,7 @@ namespace DeviceLibrary.Models.Service.Response
/// <summary>
/// 目的地楼层
/// </summary>
public
int
destinationFloor
{
get
;
set
;
}
=
0
;
public
int
destinationFloor
{
get
;
set
;
}
=
-
1
;
/// <summary>
/// 目的地点位
/// </summary>
...
...
@@ -65,10 +65,10 @@ namespace DeviceLibrary.Models.Service.Response
public
void
Clear
()
{
sourceClient
=
""
;
sourceFloor
=
0
;
sourceFloor
=
-
1
;
sourcePoint
=
""
;
destinationClient
=
""
;
destinationFloor
=
0
;
destinationFloor
=
-
1
;
destinationPoint
=
""
;
}
}
...
...
source/DeviceLibrary/Service/IService.cs
查看文件 @
29fc87a
...
...
@@ -2,7 +2,7 @@
using
System.Runtime.Serialization
;
using
System.ServiceModel
;
using
System.ServiceModel.Web
;
using
System.Threading.Tasks
;
namespace
DeviceLibrary.Service
{
...
...
source/DeviceLibrary/Service/Services.cs
查看文件 @
29fc87a
...
...
@@ -29,6 +29,7 @@ namespace DeviceLibrary.Service
}
else
{
Log
.
Info
(
$
"AGVLeave接口被调用:{doorInfo}"
);
Context
.
LiftContext
.
AGVLeave
(
doorInfo
,
out
string
msg
);
result
.
msg
=
msg
;
}
...
...
@@ -49,6 +50,7 @@ namespace DeviceLibrary.Service
}
else
{
Log
.
Info
(
$
"AGVCall接口被调用:{doorInfo}"
);
Context
.
LiftContext
.
AGVCall
(
doorInfo
,
out
string
msg
);
result
.
msg
=
msg
;
}
...
...
@@ -69,7 +71,8 @@ namespace DeviceLibrary.Service
}
else
{
bool
idle
=
Context
.
LiftContext
.
RequestSendIn
(
sendInInfo
,
out
string
msg
);
Log
.
Info
(
$
"请求接口被调用:{sendInInfo}"
);
bool
idle
=
Context
.
LiftContext
.
RequestSendIn
(
sendInInfo
,
out
string
msg
);
result
.
msg
=
msg
;
}
return
result
;
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论