Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
李娜
/
SO908-XLRStore
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 56ad2460
由
张东亮
编写于
2021-06-01 16:07:25 +0800
浏览文件
选项
浏览文件
标签
下载
差异文件
比较修改
2 个父辈
93b20862
30a616ce
全部展开
显示空白字符变更
内嵌
并排
正在显示
28 个修改的文件
包含
822 行增加
和
171 行删除
source/Common/Setting_Init.cs
source/DeviceLibrary/Config/Config_Store.csv
source/DeviceLibrary/baan/ClampJawBean.cs
source/DeviceLibrary/deviceLibrary/halcon/CodeManager.cs
source/DeviceLibrary/manager/BufferDataManager.cs
source/DeviceLibrary/manager/SServerManager.cs
source/DeviceLibrary/manager/model/DeviceMoveInfo.cs
source/DeviceLibrary/manager/model/DeviceStep.cs
source/DeviceLibrary/manager/model/InOutParam.cs
source/DeviceLibrary/storeBean/EquipBase.cs
source/DeviceLibrary/storeBean/inputBean/BatchMoveBean.cs
source/DeviceLibrary/storeBean/inputBean/BatchMoveBean_Partial.cs
source/DeviceLibrary/storeBean/inputBean/InputEquip.cs
source/DeviceLibrary/storeBean/inputBean/InputEquip_InStore.cs
source/LoadCVSLibrary/storeConfig/config/InputEquip_Config.cs
source/XLRStoreClient/FrmXLRStore.Designer.cs
source/XLRStoreClient/FrmXLRStore.cs
source/XLRStoreClient/XLRStore.csproj
source/XLRStoreClient/inputForm/FrmBatchMove.Designer.cs
source/XLRStoreClient/inputForm/FrmBatchMove.cs
source/XLRStoreClient/inputForm/FrmInputEquip.Designer.cs
source/XLRStoreClient/inputForm/FrmInputEquip.cs
source/XLRStoreClient/useControl/EquipControl.Designer.cs
source/XLRStoreClient/useControl/EquipControl.cs
source/XLRStoreClient/useControl/ReelDataControl.Designer.cs
source/XLRStoreClient/useControl/ReelDataControl.cs
source/XLRStoreClient/useControl/ReelDataControl.resx
source/XLRStoreClient/记录.txt
source/Common/Setting_Init.cs
查看文件 @
56ad246
...
...
@@ -100,6 +100,15 @@ namespace OnlineStore.Common
public
static
string
PNList
=
"PNList"
;
public
static
string
AutoInput
{
get
;
set
;
}
public
static
string
AutoInput
=
"AutoInput"
;
public
static
string
AInStoreInfo
=
"AInStoreInfo"
;
public
static
string
AOutStoreInfo
=
"AOutStoreInfo"
;
public
static
string
BInStoreInfo
=
"BInStoreInfo"
;
public
static
string
BOutStoreInfo
=
"BOutStoreInfo"
;
public
static
string
AShelfInfo
=
"AShelfInfo"
;
public
static
string
BShelfInfo
=
"BShelfInfo"
;
}
}
source/DeviceLibrary/Config/Config_Store.csv
查看文件 @
56ad246
类型,分类编号,说明,名称,属性值,设备名称,电器定义,目标速度,加速度,减速度,出力,距离,推压速度,脆盘目标速度,脆盘加速度,脆盘减速度,脆盘出力,脆盘距离,脆盘推压速度
CLAW,1,
移栽D1_
夹爪,CLAW_Input,0,COM13,,100,500,500,60,6,20,15,15,15,20,20,15
CLAW,1,
入料机构
夹爪,CLAW_Input,0,COM13,,100,500,500,60,6,20,15,15,15,20,20,15
PRO,0,当多久没操作时流水线休眠(秒),Sleep_MSeconds,600,,,,,,,,,,,,,,
PRO,0,气压检测信号关闭需要持续的时间,Airpressure_CheckSeconds,600,,,,,,,,,,,,,,
PRO,0,IO信号超时时间(秒),IOSingle_TimerOut,15,,,,,,,,,,,,,,
...
...
source/DeviceLibrary/baan/ClampJawBean.cs
查看文件 @
56ad246
...
...
@@ -48,15 +48,15 @@ namespace OnlineStore.DeviceLibrary
rmaxis
.
ClosePort
();
}
}
public
void
Push
(
DeviceMoveInfo
moveInfo
,
bool
checkHasReel
,
string
[]
code
)
//public void Push(DeviceMoveInfo moveInfo , bool checkHasReel , string[] code )
//{
// ClampPush(moveInfo, checkHasReel, code);
//}
public
void
Push
(
DeviceMoveInfo
moveInfo
=
null
,
bool
checkHasReel
=
true
,
params
string
[]
code
)
{
ClampPush
(
moveInfo
,
checkHasReel
,
code
);
}
public
void
Push
(
DeviceMoveInfo
moveInfo
=
null
,
bool
checkHasReel
=
true
,
string
code
=
""
)
{
ClampPush
(
moveInfo
,
checkHasReel
,
code
);
}
public
void
ClampPush
(
DeviceMoveInfo
moveInfo
,
bool
checkHasReel
,
params
string
[]
code
)
private
void
ClampPush
(
DeviceMoveInfo
moveInfo
,
bool
checkHasReel
,
params
string
[]
code
)
{
bool
iscrisp
=
StoreManager
.
IsCrispReel
(
code
);
float
distance
=
config
.
Distance
;
...
...
source/DeviceLibrary/deviceLibrary/halcon/CodeManager.cs
查看文件 @
56ad246
...
...
@@ -310,6 +310,7 @@ namespace OnlineStore.DeviceLibrary
public
static
bool
HasRightCode
(
params
string
[]
codes
)
{
return
true
;
//640104 * 3331001202 * 210417624 * 600 * 0011
//分号分割后长度=4,L,E,B,R
try
...
...
source/DeviceLibrary/manager/BufferDataManager.cs
查看文件 @
56ad246
using
System
;
using
OnlineStore.Common
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
...
...
@@ -8,23 +9,102 @@ namespace OnlineStore.DeviceLibrary
{
public
class
BufferDataManager
{
private
static
InOutPosInfo
aInStoreInfo
=
null
;
private
static
InOutPosInfo
aOutStoreInfo
=
null
;
private
static
InOutPosInfo
bInStoreInfo
=
null
;
private
static
InOutPosInfo
bOutStoreInfo
=
null
;
/// <summary>
/// A进料上暂存区料盘信息,null时无料
/// </summary>
public
static
InOutPosInfo
AInStoreInfo
=
null
;
public
static
InOutPosInfo
AInStoreInfo
{
get
{
return
aInStoreInfo
;
}
set
{
aInStoreInfo
=
value
;
SaveData
(
Setting_Init
.
AInStoreInfo
,
value
);
}
}
/// <summary>
/// A出料下暂存区料盘信息,null时无料
/// </summary>
public
static
InOutPosInfo
AOutStoreInfo
=
null
;
public
static
InOutPosInfo
AOutStoreInfo
{
get
{
return
aOutStoreInfo
;
}
set
{
aOutStoreInfo
=
value
;
SaveData
(
Setting_Init
.
AOutStoreInfo
,
value
);
}
}
/// <summary>
/// B进料上暂存区料盘信息,null时无料
/// </summary>
public
static
InOutPosInfo
BInStoreInfo
=
null
;
public
static
InOutPosInfo
BInStoreInfo
{
get
{
return
bInStoreInfo
;
}
set
{
bInStoreInfo
=
value
;
SaveData
(
Setting_Init
.
BInStoreInfo
,
value
);
}
}
/// <summary>
/// B出料下暂存区料盘信息,null时无料
/// </summary>
public
static
InOutPosInfo
BOutStoreInfo
=
null
;
public
static
InOutPosInfo
BOutStoreInfo
{
get
{
return
bOutStoreInfo
;
}
set
{
bOutStoreInfo
=
value
;
SaveData
(
Setting_Init
.
BOutStoreInfo
,
value
);
}
}
public
static
void
InitData
()
{
AInStoreInfo
=
LoadInoutPosInfo
(
Setting_Init
.
AInStoreInfo
);
AOutStoreInfo
=
LoadInoutPosInfo
(
Setting_Init
.
AOutStoreInfo
);
BInStoreInfo
=
LoadInoutPosInfo
(
Setting_Init
.
BInStoreInfo
);
BOutStoreInfo
=
LoadInoutPosInfo
(
Setting_Init
.
BOutStoreInfo
);
}
private
static
InOutPosInfo
LoadInoutPosInfo
(
string
configStr
)
{
string
saveData
=
ConfigAppSettings
.
GetValue
(
configStr
);
if
(!
String
.
IsNullOrEmpty
(
saveData
))
{
InOutPosInfo
ainPos
=
JsonHelper
.
DeserializeJsonToObject
<
InOutPosInfo
>(
saveData
);
if
(
ainPos
!=
null
&&
(!
ainPos
.
barcode
.
Equals
(
""
))
&&
(!
ainPos
.
PosId
.
Equals
(
""
)))
{
return
ainPos
;
}
}
return
null
;
}
public
static
T
LoadData
<
T
>(
string
configStr
)
where
T
:
class
{
string
saveData
=
ConfigAppSettings
.
GetValue
(
configStr
);
if
(!
String
.
IsNullOrEmpty
(
saveData
))
{
T
data
=
JsonHelper
.
DeserializeJsonToObject
<
T
>(
saveData
);
return
data
;
}
return
null
;
}
public
static
void
SaveData
<
T
>(
string
configStr
,
T
value
)
where
T
:
class
{
string
jsonData
=
""
;
if
(!(
value
==
null
))
{
JsonHelper
.
SerializeObject
(
value
);
}
ConfigAppSettings
.
SaveValue
(
configStr
,
jsonData
);
LogUtil
.
info
(
$
"保存配置:[{ configStr}]=[{jsonData }]"
);
}
}
}
source/DeviceLibrary/manager/SServerManager.cs
查看文件 @
56ad246
...
...
@@ -466,7 +466,7 @@ namespace OnlineStore.DeviceLibrary
// 参数:cids: 多个 cid
//code: 条码内容
Dictionary
<
string
,
string
>
paramMap
=
new
Dictionary
<
string
,
string
>();
//paramMap.Add("cids", LineServer.GetAllCID(feedEquipId)
);
paramMap
.
Add
(
"cids"
,
StoreManager
.
Config
.
CID
);
paramMap
.
Add
(
"code"
,
codeStr
);
paramMap
.
Add
(
ParamDefine
.
rfid
,
rfid
);
...
...
@@ -520,14 +520,14 @@ namespace OnlineStore.DeviceLibrary
result
.
Result
=
serverResult
.
result
;
if
(!
serverResult
.
pos
.
Equals
(
""
))
{
//
仓位命名: 4D01020304
//
第1和第2位表示楼层(4D)
//
第3和第4位表示料仓(01) 01 - 18为流水线料仓, 19 - 24为包装料仓
//
第5和第6位表示列(02)
//
第7和第8位表示行(03)
//
第9和第10位表示隔板位置(04)
//
例如: 4D12010124 表示4楼12号料仓第1列第1行架子上的第24个隔板位置
//
4D19050208 表示4楼19号料仓(包装料仓)第5列第2行架子上的第8个隔板位置
//
库位号格式:
//
例:05AA03040102
//
05:第1和第2位表示料仓编号,01 - 08
//
AA:第3和第4位存储机构A面或B面,AA或者BB
//
03:第5和第6位表示抽屉在第几行
//
04:第7和第8位表示抽屉在第几列
//
01:第9和第10位表示在抽屉中的第几行
//
02:第11和第12位表示在抽屉中的第几列
string
posId
=
serverResult
.
pos
;
//根据库位号查找移栽
...
...
source/DeviceLibrary/manager/model/DeviceMoveInfo.cs
查看文件 @
56ad246
...
...
@@ -278,6 +278,16 @@ namespace OnlineStore.DeviceLibrary
wait
.
IsEnd
=
false
;
return
wait
;
}
public
static
WaitResultInfo
WaitAxisOrg
(
ConfigMoveAxis
axis
,
IO_VALUE
value
)
{
WaitResultInfo
wait
=
new
WaitResultInfo
();
wait
.
CanWhileMoveCount
=
0
;
wait
.
WaitType
=
WaitEnum
.
W006_AxisOrg
;
wait
.
AxisInfo
=
axis
;
wait
.
IoValue
=
value
;
wait
.
IsEnd
=
false
;
return
wait
;
}
public
static
WaitResultInfo
WaitTime
(
int
MScends
)
{
...
...
source/DeviceLibrary/manager/model/DeviceStep.cs
查看文件 @
56ad246
此文件的差异被折叠,
点击展开。
source/DeviceLibrary/manager/model/InOutParam.cs
查看文件 @
56ad246
...
...
@@ -57,8 +57,8 @@ namespace OnlineStore.DeviceLibrary
/// 入料机构从哪个料串取料,或出库放到哪个料串
/// 0=未知,1=A侧料串,2=B侧料串
/// </summary>
public
int
ShelfType
{
get
;
set
;
}
=
0
;
}
public
int
ShelfType
{
get
;
set
;
}=
0
;
}
/// <summary>
/// 出入库料盘信息
/// </summary>
...
...
@@ -136,89 +136,6 @@ namespace OnlineStore.DeviceLibrary
public
bool
IsNG
{
get
;
set
;
}
=
false
;
public
string
NgMsg
{
get
;
set
;
}
=
""
;
/// <summary>
/// 库位在存储机构哪个面
/// 0=未知,1=A面,2=B面
/// 例:05AA03040102
// 05:表示料仓编号,01-08
// AA:存储机构A面或B面,AA或者BB
// 03:表示抽屉在第几行
// 04:表示抽屉在第几列
// 01:表示在抽屉中的第几行
//02:表示在抽屉中的第几列
/// </summary>
public
string
PosSide
{
get
{
if
(
PosId
.
Substring
(
2
,
2
).
Equals
(
"AA"
))
return
"A"
;
else
if
(
PosId
.
Substring
(
2
,
2
).
Equals
(
"BB"
))
return
"B"
;
return
""
;
}
}
/// <summary>
/// 检查库位是否存在
/// </summary>
/// <returns></returns>
public
bool
CheckPosition
()
{
BoxPosition
position
=
CSVPositionReader
<
BoxPosition
>.
GetPositon
(
PosId
);
if
(
position
==
null
)
{
return
false
;
}
return
true
;
}
/// <summary>
/// 获取料盘所在料屉的层序号
/// </summary>
/// <returns></returns>
public
int
GetTrayRow
()
{
int
.
TryParse
(
PosId
.
Substring
(
4
,
2
),
out
int
result
);
return
result
;
}
/// <summary>
/// 获取料盘所在料屉的列序号
/// </summary>
/// <returns></returns>
public
int
GetTrayColumn
()
{
int
.
TryParse
(
PosId
.
Substring
(
6
,
2
),
out
int
result
);
return
result
;
}
/// <summary>
/// 获取料盘在抽屉里的行
/// </summary>
/// <returns></returns>
public
int
GetRowInTray
()
{
int
.
TryParse
(
PosId
.
Substring
(
8
,
2
),
out
int
result
);
return
result
;
}
/// <summary>
/// 获取料盘在抽屉里的列
/// </summary>
/// <returns></returns>
public
int
GetColumnInTray
()
{
int
.
TryParse
(
PosId
.
Substring
(
10
,
2
),
out
int
result
);
return
result
;
}
/// <summary>
/// 拷贝一个新的实例
/// </summary>
/// <returns></returns>
public
InOutPosInfo
ToCopy
()
{
InOutPosInfo
posInfo
=
new
InOutPosInfo
();
System
.
Reflection
.
PropertyInfo
[]
info1
=
posInfo
.
GetType
().
GetProperties
();
System
.
Reflection
.
PropertyInfo
[]
info2
=
this
.
GetType
().
GetProperties
();
for
(
int
i
=
0
;
i
<
info1
.
Length
;
i
++)
info1
[
i
].
SetValue
(
posInfo
,
info2
[
i
].
GetValue
(
this
));
return
posInfo
;
}
}
/// <summary>
/// 出入库位置信息
...
...
source/DeviceLibrary/storeBean/EquipBase.cs
查看文件 @
56ad246
...
...
@@ -717,5 +717,12 @@ namespace OnlineStore.DeviceLibrary
}
return
Color
.
White
;
}
protected
void
MoveTimeOut
(
DeviceMoveInfo
move
,
string
msg
)
{
WarnMsg
=
move
.
Name
+
"["
+
move
.
MoveStep
+
"] "
+
msg
+
" ["
+
FormUtil
.
GetSpanStr
(
move
.
StepSpan
())
+
"]"
;
int
logId
=
DeviceID
*
10000
+
(
int
)
move
.
MoveStep
;
LogUtil
.
error
(
WarnMsg
,
logId
);
Alarm
(
AlarmType
.
IoSingleTimeOut
);
}
}
}
source/DeviceLibrary/storeBean/inputBean/BatchMoveBean.cs
查看文件 @
56ad246
...
...
@@ -4,6 +4,7 @@ using OnlineStore.LoadCSVLibrary;
using
System
;
using
System.Collections.Generic
;
using
System.Diagnostics
;
using
System.Drawing
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
...
...
@@ -12,13 +13,15 @@ namespace OnlineStore.DeviceLibrary
{
public
partial
class
BatchMoveBean
{
public
string
Name
=
"入料"
;
public
bool
ShelfAutoOut
=
true
;
public
bool
ShelfNeedLeave
=
false
;
public
string
Name
=
"料口"
;
public
AxisBean
BatchAxis
=
null
;
public
int
EquipType
=
1
;
//1=左侧A,2=右侧B
public
DeviceMoveInfo
MoveInfo
;
public
string
WarnMsg
=
""
;
p
rivate
string
CameraName
=
""
;
p
rivate
string
AgvName
=
""
;
p
ublic
string
CameraName
=
""
;
p
ublic
string
AgvName
=
""
;
private
string
RfidIP
=
""
;
public
int
BatchAxisP1
=
0
;
public
int
BatchAxisP2
=
0
;
...
...
@@ -37,6 +40,7 @@ namespace OnlineStore.DeviceLibrary
string
ioAdd
=
"_A"
;
if
(
EquipType
.
Equals
(
1
))
{
Name
=
"A料口 "
;
this
.
BatchAxisP1
=
config
.
BatchAxisP1_A
;
this
.
BatchAxisP2
=
config
.
BatchAxisP2_A
;
ioAdd
=
"_A"
;
...
...
@@ -46,6 +50,7 @@ namespace OnlineStore.DeviceLibrary
}
else
{
Name
=
"B料口 "
;
this
.
BatchAxisP1
=
config
.
BatchAxisP1_B
;
this
.
BatchAxisP2
=
config
.
BatchAxisP2_B
;
ioAdd
=
"_B"
;
...
...
@@ -54,9 +59,9 @@ namespace OnlineStore.DeviceLibrary
this
.
RfidIP
=
config
.
PRO_RFIP_B
;
}
Name
=
"入料 "
+
ioAdd
;
MoveInfo
=
new
DeviceMoveInfo
(
Name
);
IO_
MAxis_Check
=
IO_MAxis_
Check
+
ioAdd
;
IO_
ReelCheck
=
IO_Reel
Check
+
ioAdd
;
IO_LineIn_Check
=
IO_LineIn_Check
+
ioAdd
;
IO_LineEnd_Check
=
IO_LineEnd_Check
+
ioAdd
;
IO_Shelf_StopUp
=
IO_Shelf_StopUp
+
ioAdd
;
...
...
@@ -64,7 +69,7 @@ namespace OnlineStore.DeviceLibrary
IO_LineStart
=
IO_LineStart
+
ioAdd
;
IO_LineBack
=
IO_LineBack
+
ioAdd
;
DIList
.
Add
(
IO_
MAxis_
Check
);
DIList
.
Add
(
IO_
Reel
Check
);
DIList
.
Add
(
IO_LineIn_Check
);
DIList
.
Add
(
IO_LineEnd_Check
);
DIList
.
Add
(
IO_Shelf_StopUp
);
...
...
@@ -86,26 +91,28 @@ namespace OnlineStore.DeviceLibrary
{
if
(
Robot
.
AutoInput
&&
Robot
.
IOValue
(
IO_LineIn_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
StartInstore
(
new
InOutParam
());
StartInstore
(
new
InOutParam
());
}
}
}
else
if
(
MoveInfo
.
MoveType
.
Equals
(
MoveType
.
Reset
))
{
ResetProcess
();
}
else
if
(
MoveInfo
.
MoveType
.
Equals
(
MoveType
.
InStore
))
}
else
if
(
MoveInfo
.
MoveType
.
Equals
(
MoveType
.
InStore
))
{
}
else
if
(
MoveInfo
.
MoveType
.
Equals
(
MoveType
.
OutStore
))
InstoreProcess
();
}
else
if
(
MoveInfo
.
MoveType
.
Equals
(
MoveType
.
OutStore
))
{
OutstoreProcess
();
}
//判断是否无料串
if
(
Robot
.
IOValue
(
IO_LineIn_Check
).
Equals
(
IO_VALUE
.
LOW
)
&&
Robot
.
IOValue
(
IO_LineEnd_Check
).
Equals
(
IO_VALUE
.
LOW
)
&&
Robot
.
CylinderIsOk
(
IO_Shelf_StopUp
,
IO_Shelf_StopDown
)
)
&&
Robot
.
CylinderIsOk
(
IO_Shelf_StopUp
,
IO_Shelf_StopDown
))
{
if
(
StoreManager
.
checkWatch
(
shelfWatch
,
10000
,
true
))
{
...
...
@@ -228,7 +235,7 @@ namespace OnlineStore.DeviceLibrary
#
region
左右入料口共有
IO
//伺服料盘检测
private
string
IO_
MAxis_Check
=
"MAxis_
Check"
;
private
string
IO_
ReelCheck
=
"Reel
Check"
;
//料串前端检测
private
string
IO_LineIn_Check
=
"LineIn_Check"
;
//料串到位检测
...
...
@@ -475,10 +482,34 @@ namespace OnlineStore.DeviceLibrary
}
/// <summary>
/// 料串准备好出库
/// </summary>
/// <returns></returns>
internal
bool
ShelfReadyOut
(
InOutPosInfo
posInfo
,
bool
SendShelfOut
)
{
if
(
MoveInfo
.
MoveType
.
Equals
(
MoveType
.
OutStore
)
&&
MoveInfo
.
IsStep
(
StepEnum
.
IS11_ShelfReady
))
{
//TODO 验证料串是否同一个,不是同一个直接送出料串
if
(
String
.
IsNullOrEmpty
(
CurrShelf
.
XuniRfid
))
{
return
true
;
}
else
if
(
posInfo
.
rfid
.
Equals
(
CurrShelf
.
XuniRfid
))
{
return
true
;
}
else
if
(
SendShelfOut
)
{
SendOutShelfLeave
(
""
);
}
}
return
false
;
}
#
region
提升轴匀速上升处理
public
bool
LastMoveIsTest
=
true
;
public
void
BatchAxisToP2
(
bool
isFirstMove
=
true
,
bool
isWait
=
true
,
bool
IsTest
=
false
)
{
int
targetP2
=
BatchAxisP2
;
...
...
@@ -508,7 +539,7 @@ namespace OnlineStore.DeviceLibrary
BatchAxis
.
Config
.
TargetPosition
=
targetP2
;
BatchAxis
.
AbsMove
(
null
,
targetP2
,
targetSpeed
);
//开始检测信号
BatchAxis
.
BatchAxisStartCheck
(
IO_
MAxis_
Check
,
IO_VALUE
.
HIGH
);
BatchAxis
.
BatchAxisStartCheck
(
IO_
Reel
Check
,
IO_VALUE
.
HIGH
);
LastMoveIsTest
=
IsTest
;
}
#
endregion
...
...
@@ -518,12 +549,12 @@ namespace OnlineStore.DeviceLibrary
if
(
MoveInfo
.
MoveType
.
Equals
(
MoveType
.
OutStore
))
{
string
code
=
MoveInfo
.
MoveParam
!=
null
?
MoveInfo
.
MoveParam
.
PosInfo
.
ToStr
()
:
""
;
return
"料串:"
+
CurrShelf
.
ToStr
()
+
", 出料:"
+
" "
+
MoveInfo
.
MoveStep
+
" \r\n"
+
code
+
"\n"
;
return
CurrShelf
.
ToStr
()
+
", 出料:"
+
" "
+
MoveInfo
.
MoveStep
+
" \r\n"
+
code
+
"\n"
;
}
else
if
(
MoveInfo
.
MoveType
.
Equals
(
MoveType
.
InStore
))
{
string
code
=
MoveInfo
.
MoveParam
!=
null
?
MoveInfo
.
MoveParam
.
PosInfo
.
ToStr
()
:
""
;
return
"料串:"
+
CurrShelf
.
ToStr
()
+
", 入料:"
+
" "
+
MoveInfo
.
MoveStep
+
"
"
+
code
+
"\n"
;
return
CurrShelf
.
ToStr
()
+
", 入料:"
+
" "
+
MoveInfo
.
MoveStep
+
" \r\n
"
+
code
+
"\n"
;
}
else
{
...
...
@@ -533,11 +564,34 @@ namespace OnlineStore.DeviceLibrary
}
else
{
return
"料串:"
+
CurrShelf
.
ShelfRfid
;
return
CurrShelf
.
ToStr
();
}
}
}
public
Color
GetShowColor
()
{
Color
color
=
Robot
.
GetShowColor
();
if
(
Robot
.
runStatus
>
RunStatus
.
Wait
)
{
if
(
alarmType
.
Equals
(
AlarmType
.
IoSingleTimeOut
))
{
color
=
Color
.
LightCoral
;
}
else
if
(
alarmType
.
Equals
(
AlarmType
.
None
).
Equals
(
false
))
{
color
=
Color
.
Red
;
}
else
if
(
MoveInfo
.
MoveType
.
Equals
(
MoveType
.
InStore
)
||
MoveInfo
.
MoveType
.
Equals
(
MoveType
.
OutStore
))
{
color
=
Color
.
LimeGreen
;
}
}
return
color
;
}
protected
void
WorkLog
(
string
msg
)
{
LogUtil
.
info
(
Name
+
" ["
+
MoveInfo
.
MoveStep
+
"]"
+
msg
);
...
...
source/DeviceLibrary/storeBean/inputBean/BatchMoveBean_Partial.cs
查看文件 @
56ad246
此文件的差异被折叠,
点击展开。
source/DeviceLibrary/storeBean/inputBean/InputEquip.cs
查看文件 @
56ad246
...
...
@@ -35,7 +35,7 @@ namespace OnlineStore.DeviceLibrary
baseConfig
=
config
;
this
.
Config
=
config
;
IsDebug
=
config
.
IsDebug
.
Equals
(
1
);
Name
=
(
" "
+
"
入
料机构"
+
" "
).
ToUpper
();
Name
=
(
" "
+
"
上
料机构"
+
" "
).
ToUpper
();
Init
();
ledProcessTimer
.
Elapsed
+=
LedProcess
;
IoCheckTimer
.
Elapsed
+=
IoCheckTimerProcess
;
...
...
@@ -136,7 +136,7 @@ namespace OnlineStore.DeviceLibrary
// 1,处于A,B,NG料口是,可以直接回取料升降轴。
// 2,处于A, B两个暂存区时,升降轴先运动到该暂存区的取放料高点,旋转轴再回原点或待机点。
//验证旋转轴位置 TODO
if
(
MiddleAxis
.
IsInPosition
(
Config
.
Middle_P4_AUpper
))
if
(
MiddleAxis
.
IsInPosition
(
Config
.
Middle_P4_AUpper
)
)
{
MoveInfo
.
NextMoveStep
(
StepEnum
.
IR02_UpdownUpMove
);
LogInfo
(
$
"复位 {MoveInfo.SLog}:当前旋转轴在 A上暂存区 {Config.Middle_P4_AUpper},升降轴先到P4:{Config.Updown_P4_AUpperH}"
);
...
...
@@ -204,10 +204,7 @@ namespace OnlineStore.DeviceLibrary
{
MoveInfo
.
NextMoveStep
(
StepEnum
.
IR07_ClampRelax
);
LogInfo
(
$
"复位{MoveInfo.SLog}:夹爪气缸放松"
);
if
(
Config
.
UseClampJaw
.
Equals
(
1
))
{
ClampJaw
.
Relax
(
MoveInfo
);
}
ClampRelax
(
MoveInfo
,
MoveInfo
.
MoveParam
.
PosInfo
.
barcode
);
}
else
if
(
MoveInfo
.
IsStep
(
StepEnum
.
IR07_ClampRelax
))
{
...
...
@@ -283,28 +280,48 @@ namespace OnlineStore.DeviceLibrary
if
(
BatchMove_A
.
MoveInfo
.
MoveType
.
Equals
(
MoveType
.
InStore
)
&&
BatchMove_A
.
MoveInfo
.
IsStep
(
StepEnum
.
IB10_ScanOK
))
{
LogInfo
(
"A侧开始取料"
);
string
code
=
BatchMove_A
.
MoveInfo
.
MoveParam
.
PosInfo
.
barcode
;
InOutPosInfo
posInfo
=
new
InOutPosInfo
(
code
,
""
);
posInfo
.
NgMsg
=
BatchMove_A
.
MoveInfo
.
MoveParam
.
PosInfo
.
NgMsg
;
posInfo
.
IsNG
=
BatchMove_A
.
MoveInfo
.
MoveParam
.
PosInfo
.
IsNG
;
InOutParam
param
=
new
InOutParam
(
posInfo
);
param
.
ShelfType
=
1
;
StartInstore
(
param
);
LogInfo
(
"A侧开始取料"
);
StartInstore
(
BatchMove_A
.
GetInstoreParam
());
}
else
if
(
BatchMove_B
.
MoveInfo
.
MoveType
.
Equals
(
MoveType
.
InStore
)
&&
BatchMove_B
.
MoveInfo
.
IsStep
(
StepEnum
.
IB10_ScanOK
))
{
LogInfo
(
"B侧开始取料"
);
string
code
=
BatchMove_B
.
MoveInfo
.
MoveParam
.
PosInfo
.
barcode
;
InOutPosInfo
posInfo
=
new
InOutPosInfo
(
code
,
""
);
posInfo
.
NgMsg
=
BatchMove_B
.
MoveInfo
.
MoveParam
.
PosInfo
.
NgMsg
;
posInfo
.
IsNG
=
BatchMove_B
.
MoveInfo
.
MoveParam
.
PosInfo
.
IsNG
;
InOutParam
param
=
new
InOutParam
(
posInfo
);
StartInstore
(
BatchMove_B
.
GetInstoreParam
());
}
//TODO 如果出料暂存区有料,且空料串准备完成,开始出料
else
if
(
BatchMove_A
.
MoveInfo
.
MoveType
.
Equals
(
MoveType
.
OutStore
)
&&
BatchMove_A
.
MoveInfo
.
IsStep
(
StepEnum
.
IS11_ShelfReady
))
{
if
(
BufferDataManager
.
AOutStoreInfo
!=
null
)
{
InOutParam
param
=
new
InOutParam
(
BufferDataManager
.
AOutStoreInfo
);
param
.
ShelfType
=
1
;
LogInfo
(
$
"A下暂存区物料{param.PosInfo.ToStr()},准备出库到料串{param.ShelfType}"
);
StartOutstore
(
param
);
}
else
if
(
BufferDataManager
.
BOutStoreInfo
!=
null
)
{
InOutParam
param
=
new
InOutParam
(
BufferDataManager
.
AOutStoreInfo
);
param
.
ShelfType
=
1
;
LogInfo
(
$
"B下暂存区物料{param.PosInfo.ToStr()},准备出库到料串{param.ShelfType}"
);
StartOutstore
(
param
);
}
}
else
if
(
BatchMove_B
.
MoveInfo
.
MoveType
.
Equals
(
MoveType
.
OutStore
)
&&
BatchMove_B
.
MoveInfo
.
IsStep
(
StepEnum
.
IS11_ShelfReady
))
{
if
(
BufferDataManager
.
AOutStoreInfo
!=
null
)
{
InOutParam
param
=
new
InOutParam
(
BufferDataManager
.
AOutStoreInfo
);
param
.
ShelfType
=
2
;
StartInstore
(
param
);
}
else
LogInfo
(
$
"A下暂存区物料{param.PosInfo.ToStr()},准备出库到料串{param.ShelfType}"
);
StartOutstore
(
param
);
}
else
if
(
BufferDataManager
.
BOutStoreInfo
!=
null
)
{
//TODO 如果出料暂存区有料,且空料串准备完成,开始出料
InOutParam
param
=
new
InOutParam
(
BufferDataManager
.
AOutStoreInfo
);
param
.
ShelfType
=
2
;
LogInfo
(
$
"B下暂存区物料{param.PosInfo.ToStr()},准备出库到料串{param.ShelfType}"
);
StartOutstore
(
param
);
}
}
}
...
...
@@ -338,7 +355,7 @@ namespace OnlineStore.DeviceLibrary
}
private
DateTime
checkAlarmTime
=
DateTime
.
Now
;
p
ublic
void
CheckAxisAlarm
()
p
rivate
void
CheckAxisAlarm
()
{
if
(
alarmType
.
Equals
(
AlarmType
.
AxisAlarm
)
||
alarmType
.
Equals
(
AlarmType
.
AxisMoveError
))
{
...
...
@@ -404,6 +421,30 @@ namespace OnlineStore.DeviceLibrary
}
}
private
void
ClampWork
(
DeviceMoveInfo
moveInfo
,
bool
isCheck
,
params
string
[]
codes
)
{
if
(
Config
.
UseClampJaw
.
Equals
(
1
))
{
ClampJaw
.
Push
(
moveInfo
,
isCheck
,
codes
);
}
else
{
}
}
private
void
ClampRelax
(
DeviceMoveInfo
moveInfo
,
params
string
[]
codes
)
{
if
(
Config
.
UseClampJaw
.
Equals
(
1
))
{
ClampJaw
.
Relax
(
moveInfo
,
codes
);
}
else
{
}
}
}
}
source/DeviceLibrary/storeBean/inputBean/InputEquip_InStore.cs
查看文件 @
56ad246
此文件的差异被折叠,
点击展开。
source/LoadCVSLibrary/storeConfig/config/InputEquip_Config.cs
查看文件 @
56ad246
...
...
@@ -93,7 +93,6 @@ namespace OnlineStore.LoadCSVLibrary
[
ConfigProAttribute
(
"BatchAxisP2_A"
)]
public
int
BatchAxisP2_A
{
get
;
set
;
}
public
int
Height_ChangeValue_A
{
get
;
set
;
}
/// <summary>
/// PRO,0,提升轴待机点_B侧,BatchAxisP1_B,1000,,,,,,,,,,,,
/// </summary>
...
...
source/XLRStoreClient/FrmXLRStore.Designer.cs
查看文件 @
56ad246
此文件的差异被折叠,
点击展开。
source/XLRStoreClient/FrmXLRStore.cs
查看文件 @
56ad246
...
...
@@ -56,7 +56,8 @@ namespace OnlineStore.XLRStore
//tabControl1.TabPages.Remove(tabPage5);
timer1
.
Start
();
}
private
FrmInputEquip
inputEquip
=
null
;
private
FrmBoxEquip
box
=
null
;
private
void
LoadStoreData
()
{
formLineStatus
(
false
);
...
...
@@ -70,9 +71,10 @@ namespace OnlineStore.XLRStore
Application
.
Exit
();
return
;
}
FrmInputEquip
inputEquip
=
new
FrmInputEquip
(
StoreManager
.
XLRStore
.
inputEquip
);
inputEquip
=
new
FrmInputEquip
(
StoreManager
.
XLRStore
.
inputEquip
);
AddForm
(
" 入料机构 "
,
inputEquip
);
FrmBoxEquip
box
=
new
FrmBoxEquip
(
StoreManager
.
XLRStore
.
boxEquip
);
box
=
new
FrmBoxEquip
(
StoreManager
.
XLRStore
.
boxEquip
);
AddForm
(
" 仓储机构 "
,
box
);
托盘初始化
ToolStripMenuItem
.
Visible
=
ConfigAppSettings
.
GetIntValue
(
Setting_Init
.
OpenRFIDWrite
).
Equals
(
1
);
...
...
@@ -97,8 +99,75 @@ namespace OnlineStore.XLRStore
LogUtil
.
logBox
=
this
.
logBox
;
lastLogTime
=
DateTime
.
Now
.
AddMinutes
(-
10
);
this
.
Opacity
=
100
;
ReelControlA1
.
ShowData
(
"A上暂存区物料"
,
BufferDataManager
.
AInStoreInfo
);
ReelControlA2
.
ShowData
(
"A下暂存区物料"
,
BufferDataManager
.
AOutStoreInfo
);
ReelControlB1
.
ShowData
(
"B上暂存区物料"
,
BufferDataManager
.
BInStoreInfo
);
ReelControlB2
.
ShowData
(
"B下暂存区物料"
,
BufferDataManager
.
BOutStoreInfo
);
ReelControlA1
.
linkClear
.
Click
+=
LinkClear_ClickA1
;
ReelControlA1
.
linkClear
.
Click
+=
LinkClear_ClickA2
;
ReelControlA1
.
linkClear
.
Click
+=
LinkClear_ClickB1
;
ReelControlA1
.
linkClear
.
Click
+=
LinkClear_ClickB2
;
BoxControl
.
InitData
(
StoreManager
.
XLRStore
.
boxEquip
.
Name
);
InputControl
.
InitData
(
StoreManager
.
XLRStore
.
inputEquip
.
Name
);
ShelfAControl
.
InitData
(
StoreManager
.
XLRStore
.
inputEquip
.
BatchMove_A
.
Name
);
ShelfBControl
.
InitData
(
StoreManager
.
XLRStore
.
inputEquip
.
BatchMove_B
.
Name
);
LoadOk
=
true
;
}
private
void
LinkClear_ClickA1
(
object
sender
,
EventArgs
e
)
{
if
(
BufferDataManager
.
AInStoreInfo
==
null
)
{
return
;
}
DialogResult
result
=
MessageBox
.
Show
(
"确定清除A上暂存区物料:"
+
BufferDataManager
.
AInStoreInfo
.
ToStr
(),
""
,
MessageBoxButtons
.
OKCancel
);
if
(
result
.
Equals
(
DialogResult
.
OK
))
{
LogUtil
.
info
(
Name
+
"手动清除A上暂存区物料:"
+
BufferDataManager
.
AInStoreInfo
.
ToStr
());
BufferDataManager
.
AInStoreInfo
=
null
;
}
}
private
void
LinkClear_ClickA2
(
object
sender
,
EventArgs
e
)
{
if
(
BufferDataManager
.
AOutStoreInfo
==
null
)
{
return
;
}
DialogResult
result
=
MessageBox
.
Show
(
"确定清除A下暂存区物料:"
+
BufferDataManager
.
AOutStoreInfo
.
ToStr
(),
""
,
MessageBoxButtons
.
OKCancel
);
if
(
result
.
Equals
(
DialogResult
.
OK
))
{
LogUtil
.
info
(
Name
+
"手动清除A下暂存区物料:"
+
BufferDataManager
.
AOutStoreInfo
.
ToStr
());
BufferDataManager
.
AOutStoreInfo
=
null
;
}
}
private
void
LinkClear_ClickB1
(
object
sender
,
EventArgs
e
)
{
if
(
BufferDataManager
.
BInStoreInfo
==
null
)
{
return
;
}
DialogResult
result
=
MessageBox
.
Show
(
"确定清除B上暂存区物料:"
+
BufferDataManager
.
BInStoreInfo
.
ToStr
(),
""
,
MessageBoxButtons
.
OKCancel
);
if
(
result
.
Equals
(
DialogResult
.
OK
))
{
LogUtil
.
info
(
Name
+
"手动清除B上暂存区物料:"
+
BufferDataManager
.
BInStoreInfo
.
ToStr
());
BufferDataManager
.
BInStoreInfo
=
null
;
}
}
private
void
LinkClear_ClickB2
(
object
sender
,
EventArgs
e
)
{
if
(
BufferDataManager
.
BOutStoreInfo
==
null
)
{
return
;
}
DialogResult
result
=
MessageBox
.
Show
(
"确定清除B下暂存区物料:"
+
BufferDataManager
.
BOutStoreInfo
.
ToStr
(),
""
,
MessageBoxButtons
.
OKCancel
);
if
(
result
.
Equals
(
DialogResult
.
OK
))
{
LogUtil
.
info
(
Name
+
"手动清除B下暂存区物料:"
+
BufferDataManager
.
BOutStoreInfo
.
ToStr
());
BufferDataManager
.
BOutStoreInfo
=
null
;
}
}
private
void
AddForm
(
string
text
,
Form
form
)
{
//text = text.PadRight(10, ' ');
...
...
@@ -372,14 +441,13 @@ namespace OnlineStore.XLRStore
lblWarnMsg
.
Text
=
warnMsg
;
BoxEquip
box
=
StoreManager
.
XLRStore
.
boxEquip
;
BoxControl
.
ShowData
(
box
.
IsDebug
,
box
.
GetRunStr
(),
box
.
WarnMsg
,
box
.
MoveInfo
,
box
.
GetShowColor
());
InputEquip
input
=
StoreManager
.
XLRStore
.
inputEquip
;
InputControl
.
ShowData
(
input
.
IsDebug
,
input
.
GetRunStr
(),
input
.
WarnMsg
,
input
.
MoveInfo
,
input
.
GetShowColor
());
ShelfAControl
.
ShowData
(
true
,
""
,
input
.
BatchMove_A
.
WarnMsg
,
input
.
BatchMove_A
.
MoveInfo
,
input
.
BatchMove_A
.
GetShowColor
(),
input
.
BatchMove_A
.
CurrShelf
?.
ToStr
());
ShelfBControl
.
ShowData
(
true
,
""
,
input
.
BatchMove_B
.
WarnMsg
,
input
.
BatchMove_B
.
MoveInfo
,
input
.
BatchMove_B
.
GetShowColor
(),
input
.
BatchMove_B
.
CurrShelf
?.
ToStr
());
string
bufStr
=
""
;
bufStr
+=
"A进料暂存料盘:"
+
BufferDataManager
.
AInStoreInfo
?.
ToStr
()+
"\r\n"
;
bufStr
+=
"A出料暂存料盘:"
+
BufferDataManager
.
AOutStoreInfo
?.
ToStr
()
+
"\r\n"
;
bufStr
+=
"A进料暂存料盘:"
+
BufferDataManager
.
BInStoreInfo
?.
ToStr
()
+
"\r\n"
;
bufStr
+=
"A出料暂存料盘:"
+
BufferDataManager
.
BOutStoreInfo
?.
ToStr
()
+
""
;
lblBufferInfo
.
Text
=
bufStr
;
if
(
StoreBean
.
runStatus
>
RunStatus
.
Wait
)
...
...
@@ -579,5 +647,22 @@ namespace OnlineStore.XLRStore
LogUtil
.
error
(
"FrmCrispTray 出错:"
+
ex
.
ToString
());
}
}
private
void
timer2_Tick
(
object
sender
,
EventArgs
e
)
{
}
private
void
tabControl1_SelectedIndexChanged
(
object
sender
,
EventArgs
e
)
{
if
(!
LoadOk
)
{
return
;
}
if
(
inputEquip
!=
null
)
{
inputEquip
.
FrmInputEquip_VisibleChanged
(
null
,
null
);
}
}
}
}
source/XLRStoreClient/XLRStore.csproj
查看文件 @
56ad246
...
...
@@ -86,6 +86,7 @@
<Reference Include="UserFromControl">
<HintPath>..\..\dll\UserFromControl.dll</HintPath>
</Reference>
<Reference Include="XLRStore, Version=1.0.7818.19677, Culture=neutral, PublicKeyToken=null" />
</ItemGroup>
<ItemGroup>
<Compile Include="boxForm\FrmAxisMove.cs">
...
...
@@ -169,6 +170,12 @@
<Compile Include="useControl\ClampJawControl.Designer.cs">
<DependentUpon>ClampJawControl.cs</DependentUpon>
</Compile>
<Compile Include="useControl\ReelDataControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="useControl\ReelDataControl.Designer.cs">
<DependentUpon>ReelDataControl.cs</DependentUpon>
</Compile>
<Compile Include="useControl\EquipControl.cs">
<SubType>UserControl</SubType>
</Compile>
...
...
@@ -224,6 +231,9 @@
<EmbeddedResource Include="useControl\ClampJawControl.resx">
<DependentUpon>ClampJawControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="useControl\ReelDataControl.resx">
<DependentUpon>ReelDataControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="useControl\EquipControl.resx">
<DependentUpon>EquipControl.cs</DependentUpon>
</EmbeddedResource>
...
...
source/XLRStoreClient/inputForm/FrmBatchMove.Designer.cs
查看文件 @
56ad246
此文件的差异被折叠,
点击展开。
source/XLRStoreClient/inputForm/FrmBatchMove.cs
查看文件 @
56ad246
...
...
@@ -42,7 +42,7 @@ namespace OnlineStore.XLRStore
}
lblWarnMsg
.
Text
=
moveBean
.
WarnMsg
;
lblCurrInfo
.
Text
=
moveBean
.
GetMoveStr
();
lblAgvInfo
.
Text
=
"AGV "
+
moveBean
.
AgvName
+
" :"
+
AgvClient
.
GetAction
(
moveBean
.
AgvName
);
}
catch
(
Exception
ex
)
{
...
...
@@ -69,12 +69,14 @@ namespace OnlineStore.XLRStore
private
void
FrmStoreIOStatus_Load
(
object
sender
,
EventArgs
e
)
{
this
.
chbAutoOut
.
Checked
=
moveBean
.
ShelfAutoOut
;
axisMoveControl1
.
LoadData
(
StoreManager
.
XLRStore
.
inputEquip
,
new
AxisBean
[]
{
moveBean
.
BatchAxis
});
lblName
.
Text
=
moveBean
.
Name
;
batchAxisP1
.
SetMoveData
(
moveBean
.
BatchAxis
,
StoreManager
.
XLRStore
.
inputEquip
.
Config
.
BatchAxis_P1Speed
,
moveBean
.
BatchAxisP1
);
batchAxisP2
.
SetMoveData
(
moveBean
.
BatchAxis
,
StoreManager
.
XLRStore
.
inputEquip
.
Config
.
BatchAxis_P2Speed
,
moveBean
.
BatchAxisP2
);
lblWarnMsg
.
Text
=
moveBean
.
WarnMsg
;
lblCurrInfo
.
Text
=
moveBean
.
GetMoveStr
();
lblAgvInfo
.
Text
=
"AGV "
+
moveBean
.
AgvName
+
" :"
+
AgvClient
.
GetAction
(
moveBean
.
AgvName
);
IsLoad
=
true
;
}
...
...
@@ -204,6 +206,73 @@ namespace OnlineStore.XLRStore
btnTestStop
.
Enabled
=
false
;
}
}
private
void
chbAutoOut_CheckedChanged
(
object
sender
,
EventArgs
e
)
{
if
(!
IsLoad
)
{
return
;
}
moveBean
.
ShelfAutoOut
=
chbAutoOut
.
Checked
;
LogUtil
.
info
(
moveBean
.
Name
+
"用户切换料架入库完成自动出库: "
+
moveBean
.
ShelfAutoOut
);
}
private
void
btnShelfOut_Click
(
object
sender
,
EventArgs
e
)
{
if
(!
IsLoad
)
{
return
;
}
moveBean
.
ShelfNeedLeave
=
true
;
LogUtil
.
info
(
moveBean
.
Name
+
"用户点击:"
+
btnShelfOut
.
Text
);
}
private
void
btnScanTest_Click
(
object
sender
,
EventArgs
e
)
{
if
(!
IsLoad
)
{
return
;
}
string
camera
=
moveBean
.
CameraName
;
List
<
string
>
LastCodeList
=
CodeManager
.
CameraScan
(
camera
,
moveBean
.
Name
.
Trim
()
+
"测试"
);
string
msg
=
CodeManager
.
ProcessCode
(
LastCodeList
);
LogUtil
.
info
(
moveBean
.
Name
+
"["
+
camera
+
"]扫码测试结果:\r\n"
+
msg
);
MessageBox
.
Show
(
moveBean
.
Name
+
"["
+
camera
+
"]扫码测试结果:"
+
msg
);
}
private
void
Shelf_StopUp_A_Click
(
object
sender
,
EventArgs
e
)
{
LogUtil
.
info
(
moveBean
.
Name
+
"点击:"
+
Shelf_StopUp_A
.
Text
);
moveBean
.
StopUp
();
}
private
void
Shelf_StopDown_A_Click
(
object
sender
,
EventArgs
e
)
{
LogUtil
.
info
(
moveBean
.
Name
+
"点击:"
+
Shelf_StopDown_A
.
Text
);
moveBean
.
StopDown
();
}
private
void
LineStart_A_Click
(
object
sender
,
EventArgs
e
)
{
LogUtil
.
info
(
moveBean
.
Name
+
"点击:"
+
LineStart_A
.
Text
);
moveBean
.
LineRun
();
}
private
void
LineBack_A_Click
(
object
sender
,
EventArgs
e
)
{
LogUtil
.
info
(
moveBean
.
Name
+
"点击:"
+
LineBack_A
.
Text
);
moveBean
.
LineBack
();
}
private
void
LineStop_A_Click
(
object
sender
,
EventArgs
e
)
{
LogUtil
.
info
(
moveBean
.
Name
+
"点击:"
+
LineStop_A
.
Text
);
moveBean
.
LineStop
();
}
}
}
...
...
source/XLRStoreClient/inputForm/FrmInputEquip.Designer.cs
查看文件 @
56ad246
此文件的差异被折叠,
点击展开。
source/XLRStoreClient/inputForm/FrmInputEquip.cs
查看文件 @
56ad246
...
...
@@ -201,6 +201,7 @@ namespace OnlineStore.XLRStore
}
}
lblThisSta
.
Text
=
inputEquip
.
WarnMsg
;
lblMoveInfo
.
Text
=
inputEquip
.
GetMoveStr
();
string
text
=
""
;
}
...
...
@@ -306,7 +307,7 @@ namespace OnlineStore.XLRStore
FrmBatchMove
frmMove2
=
new
FrmBatchMove
(
inputEquip
.
BatchMove_B
);
AddForm
(
tabControl1
,
" "
+
inputEquip
.
BatchMove_B
.
Name
+
" "
,
frmMove2
);
PointEditEnable
(
false
);
LoadPoint
();
IsLoad
=
true
;
}
...
...
@@ -579,6 +580,48 @@ namespace OnlineStore.XLRStore
{
}
private
void
PointEditEnable
(
bool
enable
)
{
groupBox2
.
Enabled
=
enable
;
groupBox5
.
Enabled
=
enable
;
groupBox7
.
Enabled
=
enable
;
groupBox8
.
Enabled
=
enable
;
groupBox9
.
Enabled
=
enable
;
groupBox10
.
Enabled
=
enable
;
groupBox11
.
Enabled
=
enable
;
}
private
void
chbPointEditEnable_CheckedChanged
(
object
sender
,
EventArgs
e
)
{
if
(!
IsLoad
)
{
return
;
}
PointEditEnable
(
chbPointEditEnable
.
Checked
);
}
internal
void
FrmInputEquip_VisibleChanged
(
object
sender
,
EventArgs
e
)
{
if
(!
IsLoad
)
{
return
;
}
chbPointEditEnable
.
Checked
=
false
;
}
private
void
tabControl1_SelectedIndexChanged
(
object
sender
,
EventArgs
e
)
{
if
(!
IsLoad
)
{
return
;
}
chbPointEditEnable
.
Checked
=
false
;
}
private
void
tabPage2_Click
(
object
sender
,
EventArgs
e
)
{
}
}
}
...
...
source/XLRStoreClient/useControl/EquipControl.Designer.cs
查看文件 @
56ad246
此文件的差异被折叠,
点击展开。
source/XLRStoreClient/useControl/EquipControl.cs
查看文件 @
56ad246
此文件的差异被折叠,
点击展开。
source/XLRStoreClient/useControl/ReelDataControl.Designer.cs
0 → 100644
查看文件 @
56ad246
namespace
OnlineStore.XLRStore
{
partial
class
ReelDataControl
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private
System
.
ComponentModel
.
IContainer
components
=
null
;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected
override
void
Dispose
(
bool
disposing
)
{
if
(
disposing
&&
(
components
!=
null
))
{
components
.
Dispose
();
}
base
.
Dispose
(
disposing
);
}
#
region
组件设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private
void
InitializeComponent
()
{
this
.
lblText
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lblReelInfo
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
panName
=
new
System
.
Windows
.
Forms
.
Panel
();
this
.
linkClear
=
new
System
.
Windows
.
Forms
.
LinkLabel
();
this
.
panName
.
SuspendLayout
();
this
.
SuspendLayout
();
//
// lblText
//
this
.
lblText
.
Anchor
=
((
System
.
Windows
.
Forms
.
AnchorStyles
)(((
System
.
Windows
.
Forms
.
AnchorStyles
.
Top
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Left
)
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Right
)));
this
.
lblText
.
BackColor
=
System
.
Drawing
.
Color
.
Transparent
;
this
.
lblText
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
10.5F
,
System
.
Drawing
.
FontStyle
.
Bold
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
lblText
.
ForeColor
=
System
.
Drawing
.
Color
.
Black
;
this
.
lblText
.
Location
=
new
System
.
Drawing
.
Point
(-
2
,
2
);
this
.
lblText
.
Name
=
"lblText"
;
this
.
lblText
.
Size
=
new
System
.
Drawing
.
Size
(
154
,
19
);
this
.
lblText
.
TabIndex
=
1
;
this
.
lblText
.
Text
=
"暂存区物料信息"
;
this
.
lblText
.
TextAlign
=
System
.
Drawing
.
ContentAlignment
.
MiddleCenter
;
this
.
lblText
.
MouseEnter
+=
new
System
.
EventHandler
(
this
.
lblText_MouseEnter
);
this
.
lblText
.
MouseLeave
+=
new
System
.
EventHandler
(
this
.
lblText_MouseLeave
);
//
// lblReelInfo
//
this
.
lblReelInfo
.
Anchor
=
((
System
.
Windows
.
Forms
.
AnchorStyles
)((((
System
.
Windows
.
Forms
.
AnchorStyles
.
Top
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Bottom
)
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Left
)
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Right
)));
this
.
lblReelInfo
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
lblReelInfo
.
ForeColor
=
System
.
Drawing
.
Color
.
Black
;
this
.
lblReelInfo
.
ImageAlign
=
System
.
Drawing
.
ContentAlignment
.
MiddleLeft
;
this
.
lblReelInfo
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
31
);
this
.
lblReelInfo
.
Name
=
"lblReelInfo"
;
this
.
lblReelInfo
.
Size
=
new
System
.
Drawing
.
Size
(
248
,
89
);
this
.
lblReelInfo
.
TabIndex
=
3
;
this
.
lblReelInfo
.
Text
=
"暂无物料"
;
this
.
lblReelInfo
.
TextAlign
=
System
.
Drawing
.
ContentAlignment
.
MiddleCenter
;
this
.
lblReelInfo
.
MouseEnter
+=
new
System
.
EventHandler
(
this
.
lblText_MouseEnter
);
this
.
lblReelInfo
.
MouseLeave
+=
new
System
.
EventHandler
(
this
.
lblText_MouseLeave
);
//
// panName
//
this
.
panName
.
Anchor
=
((
System
.
Windows
.
Forms
.
AnchorStyles
)(((
System
.
Windows
.
Forms
.
AnchorStyles
.
Top
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Left
)
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Right
)));
this
.
panName
.
BackColor
=
System
.
Drawing
.
Color
.
Transparent
;
this
.
panName
.
Controls
.
Add
(
this
.
linkClear
);
this
.
panName
.
Controls
.
Add
(
this
.
lblText
);
this
.
panName
.
Location
=
new
System
.
Drawing
.
Point
(
1
,
1
);
this
.
panName
.
Name
=
"panName"
;
this
.
panName
.
Size
=
new
System
.
Drawing
.
Size
(
248
,
28
);
this
.
panName
.
TabIndex
=
7
;
this
.
panName
.
MouseEnter
+=
new
System
.
EventHandler
(
this
.
lblText_MouseEnter
);
this
.
panName
.
MouseLeave
+=
new
System
.
EventHandler
(
this
.
lblText_MouseLeave
);
//
// linkClear
//
this
.
linkClear
.
Anchor
=
((
System
.
Windows
.
Forms
.
AnchorStyles
)((
System
.
Windows
.
Forms
.
AnchorStyles
.
Top
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Right
)));
this
.
linkClear
.
AutoSize
=
true
;
this
.
linkClear
.
Location
=
new
System
.
Drawing
.
Point
(
158
,
9
);
this
.
linkClear
.
Name
=
"linkClear"
;
this
.
linkClear
.
Size
=
new
System
.
Drawing
.
Size
(
77
,
12
);
this
.
linkClear
.
TabIndex
=
2
;
this
.
linkClear
.
TabStop
=
true
;
this
.
linkClear
.
Text
=
"清除料盘信息"
;
this
.
linkClear
.
MouseEnter
+=
new
System
.
EventHandler
(
this
.
lblText_MouseEnter
);
this
.
linkClear
.
MouseLeave
+=
new
System
.
EventHandler
(
this
.
lblText_MouseLeave
);
//
// ReelDataControl
//
this
.
AutoScaleDimensions
=
new
System
.
Drawing
.
SizeF
(
96F
,
96F
);
this
.
AutoScaleMode
=
System
.
Windows
.
Forms
.
AutoScaleMode
.
Dpi
;
this
.
BackColor
=
System
.
Drawing
.
Color
.
White
;
this
.
BorderStyle
=
System
.
Windows
.
Forms
.
BorderStyle
.
FixedSingle
;
this
.
Controls
.
Add
(
this
.
panName
);
this
.
Controls
.
Add
(
this
.
lblReelInfo
);
this
.
Name
=
"ReelDataControl"
;
this
.
Size
=
new
System
.
Drawing
.
Size
(
250
,
121
);
this
.
Load
+=
new
System
.
EventHandler
(
this
.
EquipControl_Load
);
this
.
MouseEnter
+=
new
System
.
EventHandler
(
this
.
ReelDataControl_MouseEnter
);
this
.
MouseLeave
+=
new
System
.
EventHandler
(
this
.
ReelDataControl_MouseLeave
);
this
.
panName
.
ResumeLayout
(
false
);
this
.
panName
.
PerformLayout
();
this
.
ResumeLayout
(
false
);
}
#
endregion
private
System
.
Windows
.
Forms
.
Label
lblText
;
private
System
.
Windows
.
Forms
.
Label
lblReelInfo
;
private
System
.
Windows
.
Forms
.
Panel
panName
;
public
System
.
Windows
.
Forms
.
LinkLabel
linkClear
;
}
}
source/XLRStoreClient/useControl/ReelDataControl.cs
0 → 100644
查看文件 @
56ad246
using
System
;
using
System.Collections.Generic
;
using
System.ComponentModel
;
using
System.Drawing
;
using
System.Data
;
using
System.Linq
;
using
System.Text
;
using
System.Windows.Forms
;
using
OnlineStore.DeviceLibrary
;
namespace
OnlineStore.XLRStore
{
public
partial
class
ReelDataControl
:
UserControl
{
public
string
ReelText
{
get
{
return
lblText
.
Text
;
}
set
{
lblText
.
Text
=
value
;
}
}
public
Color
ColorStatus
{
get
{
return
this
.
BackColor
;
}
set
{
this
.
BackColor
=
value
;
}
}
public
void
SelectStyle
()
{
panName
.
BackColor
=
Color
.
DeepSkyBlue
;
}
public
void
UnSelectStyle
()
{
panName
.
BackColor
=
Color
.
Transparent
;
}
public
void
ShowData
(
string
text
,
InOutPosInfo
posInfo
)
{
lblText
.
Text
=
text
;
if
(
posInfo
==
null
)
{
lblReelInfo
.
Text
=
""
;
this
.
BackColor
=
Color
.
White
;
linkClear
.
Visible
=
false
;
}
else
{
lblReelInfo
.
Text
=
posInfo
.
ToStr
();
this
.
BackColor
=
Color
.
LimeGreen
;
linkClear
.
Visible
=
true
;
}
}
public
ReelDataControl
()
{
InitializeComponent
();
}
private
void
EquipControl_Load
(
object
sender
,
EventArgs
e
)
{
}
private
void
ReelDataControl_MouseEnter
(
object
sender
,
EventArgs
e
)
{
SelectStyle
();
}
private
void
ReelDataControl_MouseLeave
(
object
sender
,
EventArgs
e
)
{
UnSelectStyle
();
}
private
void
lblText_MouseEnter
(
object
sender
,
EventArgs
e
)
{
SelectStyle
();
}
private
void
lblText_MouseLeave
(
object
sender
,
EventArgs
e
)
{
UnSelectStyle
();
}
}
}
source/XLRStoreClient/useControl/ReelDataControl.resx
0 → 100644
查看文件 @
56ad246
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file
source/XLRStoreClient/记录.txt
查看文件 @
56ad246
库位号格式:
库位号格式:
例:05AA03040102
05:表示料仓编号,01-08
AA:存储机构A面或B面,AA或者BB
03:表示抽屉在第几行
04:表示抽屉在第几列
01:表示在抽屉中的第几行
02:表示在抽屉中的第几列
\ No newline at end of file
05:第1和第2位表示料仓编号,01 - 08
AA:第3和第4位存储机构A面或B面,AA或者BB
03:第5和第6位表示抽屉在第几行
04:第7和第8位表示抽屉在第几列
01:第9和第10位表示在抽屉中的第几行
02:第11和第12位表示在抽屉中的第几列
\ No newline at end of file
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论