Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
张东亮
/
SO775-AGV
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 2a83d3c4
由
张东亮
编写于
2021-04-28 11:54:52 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
0428
1 个父辈
3c66cc7b
隐藏空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
148 行增加
和
63 行删除
AGVDispatch/App.config
AGVDispatch/FrmMain.Designer.cs
AGVDispatch/FrmMain.cs
AGVDispatch/Manual.Designer.cs
AGVDispatch/Manual.cs
AGVDispatch/Properties/AssemblyInfo.cs
AGV_UI/Status.Designer.cs
AGV_UI/Status.cs
AGV_UI/Status.resx
Common/SettingString.cs
DeviceLibrary/bean/job/GetShelfJob.cs
DeviceLibrary/bean/jobType/BoxInJobType.cs
AGVDispatch/App.config
查看文件 @
2a83d3c
...
@@ -14,6 +14,7 @@
...
@@ -14,6 +14,7 @@
<
add
key
=
"AGVServerPort"
value
=
"9501"
/>
<
add
key
=
"AGVServerPort"
value
=
"9501"
/>
<
add
key
=
"Use_Fleet"
value
=
"False"
/>
<
add
key
=
"Use_Fleet"
value
=
"False"
/>
<
add
key
=
"ChargeThreshold"
value
=
"20,90"
/>
<
add
key
=
"ChargeThreshold"
value
=
"20,90"
/>
<
add
key
=
"MixingString"
value
=
"B1,B2"
/>
<
add
key
=
"LimitPoints"
value
=
"0,0;0,0;0,0;0,0"
/>
<
add
key
=
"LimitPoints"
value
=
"0,0;0,0;0,0;0,0"
/>
</
appSettings
>
</
appSettings
>
...
...
AGVDispatch/FrmMain.Designer.cs
查看文件 @
2a83d3c
...
@@ -55,8 +55,6 @@
...
@@ -55,8 +55,6 @@
this
.
tabPage3
=
new
System
.
Windows
.
Forms
.
TabPage
();
this
.
tabPage3
=
new
System
.
Windows
.
Forms
.
TabPage
();
this
.
groupBox1
=
new
System
.
Windows
.
Forms
.
GroupBox
();
this
.
groupBox1
=
new
System
.
Windows
.
Forms
.
GroupBox
();
this
.
richTextBox1
=
new
System
.
Windows
.
Forms
.
RichTextBox
();
this
.
richTextBox1
=
new
System
.
Windows
.
Forms
.
RichTextBox
();
this
.
groupBox2
=
new
System
.
Windows
.
Forms
.
GroupBox
();
this
.
tabControlAGV
=
new
System
.
Windows
.
Forms
.
TabControl
();
this
.
tableLayoutPanel4
=
new
System
.
Windows
.
Forms
.
TableLayoutPanel
();
this
.
tableLayoutPanel4
=
new
System
.
Windows
.
Forms
.
TableLayoutPanel
();
this
.
flowPanelKanBan
=
new
System
.
Windows
.
Forms
.
FlowLayoutPanel
();
this
.
flowPanelKanBan
=
new
System
.
Windows
.
Forms
.
FlowLayoutPanel
();
this
.
lblCharge1
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lblCharge1
=
new
System
.
Windows
.
Forms
.
Label
();
...
@@ -78,7 +76,6 @@
...
@@ -78,7 +76,6 @@
this
.
groupBox4
.
SuspendLayout
();
this
.
groupBox4
.
SuspendLayout
();
this
.
tabPage3
.
SuspendLayout
();
this
.
tabPage3
.
SuspendLayout
();
this
.
groupBox1
.
SuspendLayout
();
this
.
groupBox1
.
SuspendLayout
();
this
.
groupBox2
.
SuspendLayout
();
this
.
tableLayoutPanel4
.
SuspendLayout
();
this
.
tableLayoutPanel4
.
SuspendLayout
();
this
.
SuspendLayout
();
this
.
SuspendLayout
();
//
//
...
@@ -109,6 +106,7 @@
...
@@ -109,6 +106,7 @@
this
.
tabControl1
.
SelectedIndex
=
0
;
this
.
tabControl1
.
SelectedIndex
=
0
;
this
.
tabControl1
.
Size
=
new
System
.
Drawing
.
Size
(
1184
,
450
);
this
.
tabControl1
.
Size
=
new
System
.
Drawing
.
Size
(
1184
,
450
);
this
.
tabControl1
.
TabIndex
=
7
;
this
.
tabControl1
.
TabIndex
=
7
;
this
.
tabControl1
.
SelectedIndexChanged
+=
new
System
.
EventHandler
(
this
.
tabControl1_SelectedIndexChanged
);
//
//
// tabPage1
// tabPage1
//
//
...
@@ -339,13 +337,12 @@
...
@@ -339,13 +337,12 @@
// tabPage3
// tabPage3
//
//
this
.
tabPage3
.
Controls
.
Add
(
this
.
groupBox1
);
this
.
tabPage3
.
Controls
.
Add
(
this
.
groupBox1
);
this
.
tabPage3
.
Controls
.
Add
(
this
.
groupBox2
);
this
.
tabPage3
.
Location
=
new
System
.
Drawing
.
Point
(
4
,
22
);
this
.
tabPage3
.
Location
=
new
System
.
Drawing
.
Point
(
4
,
22
);
this
.
tabPage3
.
Name
=
"tabPage3"
;
this
.
tabPage3
.
Name
=
"tabPage3"
;
this
.
tabPage3
.
Padding
=
new
System
.
Windows
.
Forms
.
Padding
(
3
);
this
.
tabPage3
.
Padding
=
new
System
.
Windows
.
Forms
.
Padding
(
3
);
this
.
tabPage3
.
Size
=
new
System
.
Drawing
.
Size
(
1176
,
424
);
this
.
tabPage3
.
Size
=
new
System
.
Drawing
.
Size
(
1176
,
424
);
this
.
tabPage3
.
TabIndex
=
2
;
this
.
tabPage3
.
TabIndex
=
2
;
this
.
tabPage3
.
Text
=
"
AGV&
日志"
;
this
.
tabPage3
.
Text
=
"日志"
;
this
.
tabPage3
.
UseVisualStyleBackColor
=
true
;
this
.
tabPage3
.
UseVisualStyleBackColor
=
true
;
//
//
// groupBox1
// groupBox1
...
@@ -354,7 +351,7 @@
...
@@ -354,7 +351,7 @@
this
.
groupBox1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
groupBox1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
groupBox1
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
3
);
this
.
groupBox1
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
3
);
this
.
groupBox1
.
Name
=
"groupBox1"
;
this
.
groupBox1
.
Name
=
"groupBox1"
;
this
.
groupBox1
.
Size
=
new
System
.
Drawing
.
Size
(
752
,
418
);
this
.
groupBox1
.
Size
=
new
System
.
Drawing
.
Size
(
1170
,
418
);
this
.
groupBox1
.
TabIndex
=
33
;
this
.
groupBox1
.
TabIndex
=
33
;
this
.
groupBox1
.
TabStop
=
false
;
this
.
groupBox1
.
TabStop
=
false
;
this
.
groupBox1
.
Text
=
"日志"
;
this
.
groupBox1
.
Text
=
"日志"
;
...
@@ -364,32 +361,10 @@
...
@@ -364,32 +361,10 @@
this
.
richTextBox1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
richTextBox1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
richTextBox1
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
17
);
this
.
richTextBox1
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
17
);
this
.
richTextBox1
.
Name
=
"richTextBox1"
;
this
.
richTextBox1
.
Name
=
"richTextBox1"
;
this
.
richTextBox1
.
Size
=
new
System
.
Drawing
.
Size
(
746
,
398
);
this
.
richTextBox1
.
Size
=
new
System
.
Drawing
.
Size
(
1164
,
398
);
this
.
richTextBox1
.
TabIndex
=
0
;
this
.
richTextBox1
.
TabIndex
=
0
;
this
.
richTextBox1
.
Text
=
""
;
this
.
richTextBox1
.
Text
=
""
;
//
//
// groupBox2
//
this
.
groupBox2
.
Controls
.
Add
(
this
.
tabControlAGV
);
this
.
groupBox2
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Right
;
this
.
groupBox2
.
Location
=
new
System
.
Drawing
.
Point
(
755
,
3
);
this
.
groupBox2
.
Margin
=
new
System
.
Windows
.
Forms
.
Padding
(
2
);
this
.
groupBox2
.
Name
=
"groupBox2"
;
this
.
groupBox2
.
Padding
=
new
System
.
Windows
.
Forms
.
Padding
(
2
);
this
.
groupBox2
.
Size
=
new
System
.
Drawing
.
Size
(
418
,
418
);
this
.
groupBox2
.
TabIndex
=
32
;
this
.
groupBox2
.
TabStop
=
false
;
this
.
groupBox2
.
Text
=
"AGV手动"
;
//
// tabControlAGV
//
this
.
tabControlAGV
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
tabControlAGV
.
Location
=
new
System
.
Drawing
.
Point
(
2
,
16
);
this
.
tabControlAGV
.
Name
=
"tabControlAGV"
;
this
.
tabControlAGV
.
SelectedIndex
=
0
;
this
.
tabControlAGV
.
Size
=
new
System
.
Drawing
.
Size
(
414
,
400
);
this
.
tabControlAGV
.
TabIndex
=
47
;
//
// tableLayoutPanel4
// tableLayoutPanel4
//
//
this
.
tableLayoutPanel4
.
ColumnCount
=
1
;
this
.
tableLayoutPanel4
.
ColumnCount
=
1
;
...
@@ -511,7 +486,6 @@
...
@@ -511,7 +486,6 @@
this
.
groupBox4
.
PerformLayout
();
this
.
groupBox4
.
PerformLayout
();
this
.
tabPage3
.
ResumeLayout
(
false
);
this
.
tabPage3
.
ResumeLayout
(
false
);
this
.
groupBox1
.
ResumeLayout
(
false
);
this
.
groupBox1
.
ResumeLayout
(
false
);
this
.
groupBox2
.
ResumeLayout
(
false
);
this
.
tableLayoutPanel4
.
ResumeLayout
(
false
);
this
.
tableLayoutPanel4
.
ResumeLayout
(
false
);
this
.
ResumeLayout
(
false
);
this
.
ResumeLayout
(
false
);
...
@@ -524,7 +498,6 @@
...
@@ -524,7 +498,6 @@
private
System
.
Windows
.
Forms
.
TableLayoutPanel
tableLayoutPanel4
;
private
System
.
Windows
.
Forms
.
TableLayoutPanel
tableLayoutPanel4
;
private
System
.
Windows
.
Forms
.
FlowLayoutPanel
flowPanelKanBan
;
private
System
.
Windows
.
Forms
.
FlowLayoutPanel
flowPanelKanBan
;
private
System
.
Windows
.
Forms
.
TabPage
tabPage3
;
private
System
.
Windows
.
Forms
.
TabPage
tabPage3
;
private
System
.
Windows
.
Forms
.
GroupBox
groupBox2
;
private
System
.
Windows
.
Forms
.
Label
lblCharge1
;
private
System
.
Windows
.
Forms
.
Label
lblCharge1
;
private
System
.
Windows
.
Forms
.
Label
lblCharge2
;
private
System
.
Windows
.
Forms
.
Label
lblCharge2
;
private
System
.
Windows
.
Forms
.
Label
lblStandy1
;
private
System
.
Windows
.
Forms
.
Label
lblStandy1
;
...
@@ -532,7 +505,6 @@
...
@@ -532,7 +505,6 @@
private
System
.
Windows
.
Forms
.
Label
lblStandy3
;
private
System
.
Windows
.
Forms
.
Label
lblStandy3
;
private
System
.
Windows
.
Forms
.
Label
lblStandy4
;
private
System
.
Windows
.
Forms
.
Label
lblStandy4
;
private
System
.
Windows
.
Forms
.
Label
lblLimit
;
private
System
.
Windows
.
Forms
.
Label
lblLimit
;
private
System
.
Windows
.
Forms
.
TabControl
tabControlAGV
;
private
System
.
Windows
.
Forms
.
GroupBox
groupBox1
;
private
System
.
Windows
.
Forms
.
GroupBox
groupBox1
;
private
System
.
Windows
.
Forms
.
RichTextBox
richTextBox1
;
private
System
.
Windows
.
Forms
.
RichTextBox
richTextBox1
;
private
System
.
Windows
.
Forms
.
TableLayoutPanel
tableLayoutPanel2
;
private
System
.
Windows
.
Forms
.
TableLayoutPanel
tableLayoutPanel2
;
...
...
AGVDispatch/FrmMain.cs
查看文件 @
2a83d3c
...
@@ -44,6 +44,7 @@ namespace AGVControl
...
@@ -44,6 +44,7 @@ namespace AGVControl
}
}
));
));
}
}
static
Dictionary
<
string
,
Form
>
agvManual
=
new
Dictionary
<
string
,
Form
>();
private
void
ShowConfig
()
private
void
ShowConfig
()
{
{
int
n
;
int
n
;
...
@@ -53,8 +54,10 @@ namespace AGVControl
...
@@ -53,8 +54,10 @@ namespace AGVControl
if
(
input
!=
null
&&
input
.
Length
==
4
)
if
(
input
!=
null
&&
input
.
Length
==
4
)
DeviceLibrary
.
Context
.
agvInfo
[
i
].
IsExistShelf
=
input
[
3
];
DeviceLibrary
.
Context
.
agvInfo
[
i
].
IsExistShelf
=
input
[
3
];
flowPanelKanBan
.
Controls
.
Add
(
DeviceLibrary
.
Context
.
agvInfo
[
i
].
StateKanban
);
flowPanelKanBan
.
Controls
.
Add
(
DeviceLibrary
.
Context
.
agvInfo
[
i
].
StateKanban
);
AddForm
(
DeviceLibrary
.
Context
.
agvInfo
[
i
].
Name
,
new
Manual
(
DeviceLibrary
.
Context
.
agvInfo
[
i
]));
//
AddForm(DeviceLibrary.Context.agvInfo[i].Name, new Manual(DeviceLibrary.Context.agvInfo[i]));
DeviceLibrary
.
Context
.
agvInfo
[
i
].
StateKanban
.
Init
();
DeviceLibrary
.
Context
.
agvInfo
[
i
].
StateKanban
.
Init
();
Context
.
agvInfo
[
i
].
StateKanban
.
Click
+=
StateKanban_Click
;
agvManual
.
Add
(
DeviceLibrary
.
Context
.
agvInfo
[
i
].
Name
,
new
Manual
(
DeviceLibrary
.
Context
.
agvInfo
[
i
]));
}
}
for
(
int
i
=
0
;
i
<
DeviceLibrary
.
Context
.
nodeInfo
.
Count
;
i
++)
for
(
int
i
=
0
;
i
<
DeviceLibrary
.
Context
.
nodeInfo
.
Count
;
i
++)
...
@@ -71,6 +74,25 @@ namespace AGVControl
...
@@ -71,6 +74,25 @@ namespace AGVControl
}
}
}
}
private
void
StateKanban_Click
(
object
sender
,
EventArgs
e
)
{
if
(
sender
is
AGV_UI
.
Status
)
{
AGV_UI
.
Status
status
=
(
AGV_UI
.
Status
)
sender
;
if
(
agvManual
[
status
.
AGVName
].
IsDisposed
)
{
Agv_Info
agv
=
Context
.
agvInfo
.
Find
(
s
=>
s
.
Name
.
Equals
(
status
.
AGVName
));
if
(
agv
!=
null
)
{
agvManual
[
status
.
AGVName
]
=
new
Manual
(
agv
);
agvManual
[
status
.
AGVName
].
Show
();
}
}
else
agvManual
[
status
.
AGVName
].
Show
();
}
}
private
void
ItemShow_Click
(
object
sender
,
EventArgs
e
)
private
void
ItemShow_Click
(
object
sender
,
EventArgs
e
)
{
{
Show
();
Show
();
...
@@ -129,8 +151,8 @@ namespace AGVControl
...
@@ -129,8 +151,8 @@ namespace AGVControl
if
(
idx
>
-
1
)
if
(
idx
>
-
1
)
{
{
DeviceLibrary
.
Context
.
nodeInfo
[
idx
].
Online
=
online
;
DeviceLibrary
.
Context
.
nodeInfo
[
idx
].
Online
=
online
;
DeviceLibrary
.
Context
.
nodeInfo
[
idx
].
IsUse
=
onlin
e
;
bool
isuse
=
DeviceLibrary
.
Context
.
nodeInfo
[
idx
].
IsUs
e
;
DgvNode
.
Rows
[
idx
].
DefaultCellStyle
.
ForeColor
=
online
?
Color
.
Black
:
Color
.
Red
;
DgvNode
.
Rows
[
idx
].
DefaultCellStyle
.
ForeColor
=
online
&&
isuse
?
Color
.
Black
:
Color
.
Red
;
DgvNode
.
Rows
[
idx
].
SetValues
(
DeviceLibrary
.
Context
.
nodeInfo
[
idx
].
LineName
,
DeviceLibrary
.
Context
.
nodeInfo
[
idx
].
Action
,
DeviceLibrary
.
Context
.
nodeInfo
[
idx
].
Shelf
,
DeviceLibrary
.
Context
.
nodeInfo
[
idx
].
RFID
,
DeviceLibrary
.
Context
.
nodeInfo
[
idx
].
Online
,
DeviceLibrary
.
Context
.
nodeInfo
[
idx
].
IsUse
);
DgvNode
.
Rows
[
idx
].
SetValues
(
DeviceLibrary
.
Context
.
nodeInfo
[
idx
].
LineName
,
DeviceLibrary
.
Context
.
nodeInfo
[
idx
].
Action
,
DeviceLibrary
.
Context
.
nodeInfo
[
idx
].
Shelf
,
DeviceLibrary
.
Context
.
nodeInfo
[
idx
].
RFID
,
DeviceLibrary
.
Context
.
nodeInfo
[
idx
].
Online
,
DeviceLibrary
.
Context
.
nodeInfo
[
idx
].
IsUse
);
}
}
}
}
...
@@ -277,7 +299,7 @@ namespace AGVControl
...
@@ -277,7 +299,7 @@ namespace AGVControl
//form.Anchor = ((AnchorStyles)((AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom | AnchorStyles.Left)));
//form.Anchor = ((AnchorStyles)((AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom | AnchorStyles.Left)));
form
.
Show
();
form
.
Show
();
// tabPageList.Add(lineTabPage);
// tabPageList.Add(lineTabPage);
tabControlAGV
.
Controls
.
Add
(
lineTabPage
);
//
tabControlAGV.Controls.Add(lineTabPage);
}
}
private
void
button1_Click
(
object
sender
,
EventArgs
e
)
private
void
button1_Click
(
object
sender
,
EventArgs
e
)
...
@@ -298,5 +320,11 @@ namespace AGVControl
...
@@ -298,5 +320,11 @@ namespace AGVControl
}
}
textBox1
.
Text
=
""
;
textBox1
.
Text
=
""
;
}
}
private
void
tabControl1_SelectedIndexChanged
(
object
sender
,
EventArgs
e
)
{
if
(
tabControl1
.
SelectedIndex
==
1
)
LogUtil
.
logBox
=
richTextBox1
;
}
}
}
}
}
AGVDispatch/Manual.Designer.cs
查看文件 @
2a83d3c
...
@@ -56,6 +56,7 @@
...
@@ -56,6 +56,7 @@
this
.
pictureBox2
=
new
System
.
Windows
.
Forms
.
PictureBox
();
this
.
pictureBox2
=
new
System
.
Windows
.
Forms
.
PictureBox
();
this
.
pictureBox3
=
new
System
.
Windows
.
Forms
.
PictureBox
();
this
.
pictureBox3
=
new
System
.
Windows
.
Forms
.
PictureBox
();
this
.
pictureBox4
=
new
System
.
Windows
.
Forms
.
PictureBox
();
this
.
pictureBox4
=
new
System
.
Windows
.
Forms
.
PictureBox
();
this
.
btnExit
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
panelInfo
.
SuspendLayout
();
this
.
panelInfo
.
SuspendLayout
();
this
.
grpBxRunMode
.
SuspendLayout
();
this
.
grpBxRunMode
.
SuspendLayout
();
this
.
grpBxOperation
.
SuspendLayout
();
this
.
grpBxOperation
.
SuspendLayout
();
...
@@ -223,7 +224,6 @@
...
@@ -223,7 +224,6 @@
//
//
// timer1
// timer1
//
//
this
.
timer1
.
Enabled
=
true
;
this
.
timer1
.
Interval
=
1000
;
this
.
timer1
.
Interval
=
1000
;
this
.
timer1
.
Tick
+=
new
System
.
EventHandler
(
this
.
timer1_Tick
);
this
.
timer1
.
Tick
+=
new
System
.
EventHandler
(
this
.
timer1_Tick
);
//
//
...
@@ -360,11 +360,23 @@
...
@@ -360,11 +360,23 @@
this
.
pictureBox4
.
TabIndex
=
3
;
this
.
pictureBox4
.
TabIndex
=
3
;
this
.
pictureBox4
.
TabStop
=
false
;
this
.
pictureBox4
.
TabStop
=
false
;
//
//
// btnExit
//
this
.
btnExit
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
9F
,
((
System
.
Drawing
.
FontStyle
)((
System
.
Drawing
.
FontStyle
.
Bold
|
System
.
Drawing
.
FontStyle
.
Italic
))),
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
btnExit
.
Location
=
new
System
.
Drawing
.
Point
(
95
,
307
);
this
.
btnExit
.
Name
=
"btnExit"
;
this
.
btnExit
.
Size
=
new
System
.
Drawing
.
Size
(
149
,
40
);
this
.
btnExit
.
TabIndex
=
5
;
this
.
btnExit
.
Text
=
"退出"
;
this
.
btnExit
.
UseVisualStyleBackColor
=
true
;
this
.
btnExit
.
Click
+=
new
System
.
EventHandler
(
this
.
btnExit_Click
);
//
// Manual
// Manual
//
//
this
.
AutoScaleDimensions
=
new
System
.
Drawing
.
SizeF
(
6F
,
12F
);
this
.
AutoScaleDimensions
=
new
System
.
Drawing
.
SizeF
(
6F
,
12F
);
this
.
AutoScaleMode
=
System
.
Windows
.
Forms
.
AutoScaleMode
.
Font
;
this
.
AutoScaleMode
=
System
.
Windows
.
Forms
.
AutoScaleMode
.
Font
;
this
.
ClientSize
=
new
System
.
Drawing
.
Size
(
379
,
319
);
this
.
ClientSize
=
new
System
.
Drawing
.
Size
(
379
,
354
);
this
.
Controls
.
Add
(
this
.
btnExit
);
this
.
Controls
.
Add
(
this
.
groupBox1
);
this
.
Controls
.
Add
(
this
.
groupBox1
);
this
.
Controls
.
Add
(
this
.
grpBxMission
);
this
.
Controls
.
Add
(
this
.
grpBxMission
);
this
.
Controls
.
Add
(
this
.
grpBxOperation
);
this
.
Controls
.
Add
(
this
.
grpBxOperation
);
...
@@ -426,5 +438,6 @@
...
@@ -426,5 +438,6 @@
private
System
.
Windows
.
Forms
.
PictureBox
pictureBox2
;
private
System
.
Windows
.
Forms
.
PictureBox
pictureBox2
;
private
System
.
Windows
.
Forms
.
PictureBox
pictureBox3
;
private
System
.
Windows
.
Forms
.
PictureBox
pictureBox3
;
private
System
.
Windows
.
Forms
.
PictureBox
pictureBox4
;
private
System
.
Windows
.
Forms
.
PictureBox
pictureBox4
;
private
System
.
Windows
.
Forms
.
Button
btnExit
;
}
}
}
}
AGVDispatch/Manual.cs
查看文件 @
2a83d3c
...
@@ -31,6 +31,7 @@ namespace AGVControl
...
@@ -31,6 +31,7 @@ namespace AGVControl
cmbBxMission
.
SelectedIndex
=
0
;
cmbBxMission
.
SelectedIndex
=
0
;
InState
.
AddRange
(
new
PictureBox
[]
{
pictureBox1
,
pictureBox2
,
pictureBox3
,
pictureBox4
});
InState
.
AddRange
(
new
PictureBox
[]
{
pictureBox1
,
pictureBox2
,
pictureBox3
,
pictureBox4
});
OutState
.
AddRange
(
new
PictureBox
[]
{
pictureBox5
,
pictureBox6
,
pictureBox7
,
pictureBox8
});
OutState
.
AddRange
(
new
PictureBox
[]
{
pictureBox5
,
pictureBox6
,
pictureBox7
,
pictureBox8
});
timer1
.
Enabled
=
true
;
isInit
=
true
;
isInit
=
true
;
}
}
...
@@ -166,7 +167,9 @@ namespace AGVControl
...
@@ -166,7 +167,9 @@ namespace AGVControl
private
void
btnExit_Click
(
object
sender
,
EventArgs
e
)
private
void
btnExit_Click
(
object
sender
,
EventArgs
e
)
{
{
timer1
.
Enabled
=
false
;
Close
();
Close
();
Dispose
();
}
}
List
<
PictureBox
>
InState
=
new
List
<
PictureBox
>();
List
<
PictureBox
>
InState
=
new
List
<
PictureBox
>();
List
<
PictureBox
>
OutState
=
new
List
<
PictureBox
>();
List
<
PictureBox
>
OutState
=
new
List
<
PictureBox
>();
...
...
AGVDispatch/Properties/AssemblyInfo.cs
查看文件 @
2a83d3c
...
@@ -5,11 +5,11 @@ using System.Runtime.InteropServices;
...
@@ -5,11 +5,11 @@ using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
// 与程序集关联的信息。
[assembly: AssemblyTitle("AGV
Control-ProductionLine
")]
[assembly: AssemblyTitle("AGV
Dispatch
")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("AGV
Control-ProductionLine
")]
[assembly: AssemblyProduct("AGV
Dispatch
")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyCulture("")]
...
...
AGV_UI/Status.Designer.cs
查看文件 @
2a83d3c
...
@@ -70,7 +70,7 @@
...
@@ -70,7 +70,7 @@
// picBxConn
// picBxConn
//
//
this
.
picBxConn
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Left
;
this
.
picBxConn
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Left
;
this
.
picBxConn
.
Image
=
global
::
AGV_UI
.
Properties
.
Resources
.
offline
;
this
.
picBxConn
.
Image
=
((
System
.
Drawing
.
Image
)(
resources
.
GetObject
(
"picBxConn.Image"
)))
;
this
.
picBxConn
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
0
);
this
.
picBxConn
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
0
);
this
.
picBxConn
.
Name
=
"picBxConn"
;
this
.
picBxConn
.
Name
=
"picBxConn"
;
this
.
picBxConn
.
Size
=
new
System
.
Drawing
.
Size
(
51
,
47
);
this
.
picBxConn
.
Size
=
new
System
.
Drawing
.
Size
(
51
,
47
);
...
@@ -105,7 +105,7 @@
...
@@ -105,7 +105,7 @@
//
//
this
.
lblAGVState
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Right
;
this
.
lblAGVState
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Right
;
this
.
lblAGVState
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
10.5F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
lblAGVState
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
10.5F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
lblAGVState
.
Image
=
global
::
AGV_UI
.
Properties
.
Resources
.
Unknown
;
this
.
lblAGVState
.
Image
=
((
System
.
Drawing
.
Image
)(
resources
.
GetObject
(
"lblAGVState.Image"
)))
;
this
.
lblAGVState
.
ImageAlign
=
System
.
Drawing
.
ContentAlignment
.
MiddleLeft
;
this
.
lblAGVState
.
ImageAlign
=
System
.
Drawing
.
ContentAlignment
.
MiddleLeft
;
this
.
lblAGVState
.
Location
=
new
System
.
Drawing
.
Point
(
160
,
0
);
this
.
lblAGVState
.
Location
=
new
System
.
Drawing
.
Point
(
160
,
0
);
this
.
lblAGVState
.
Name
=
"lblAGVState"
;
this
.
lblAGVState
.
Name
=
"lblAGVState"
;
...
@@ -118,14 +118,14 @@
...
@@ -118,14 +118,14 @@
//
//
this
.
lblTask
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Left
;
this
.
lblTask
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Left
;
this
.
lblTask
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
10.5F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
lblTask
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
10.5F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
lblTask
.
Image
=
global
::
AGV_UI
.
Properties
.
Resources
.
task
;
this
.
lblTask
.
Image
=
((
System
.
Drawing
.
Image
)(
resources
.
GetObject
(
"lblTask.Image"
)))
;
this
.
lblTask
.
ImageAlign
=
System
.
Drawing
.
ContentAlignment
.
MiddleLeft
;
this
.
lblTask
.
ImageAlign
=
System
.
Drawing
.
ContentAlignment
.
MiddleLeft
;
this
.
lblTask
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
0
);
this
.
lblTask
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
0
);
this
.
lblTask
.
Name
=
"lblTask"
;
this
.
lblTask
.
Name
=
"lblTask"
;
this
.
lblTask
.
Size
=
new
System
.
Drawing
.
Size
(
216
,
50
);
this
.
lblTask
.
Size
=
new
System
.
Drawing
.
Size
(
154
,
50
);
this
.
lblTask
.
TabIndex
=
0
;
this
.
lblTask
.
TabIndex
=
0
;
this
.
lblTask
.
Text
=
"无任务"
;
this
.
lblTask
.
Text
=
"无任务"
;
this
.
lblTask
.
TextAlign
=
System
.
Drawing
.
ContentAlignment
.
Middle
Center
;
this
.
lblTask
.
TextAlign
=
System
.
Drawing
.
ContentAlignment
.
Middle
Right
;
//
//
// flowPanelMissionState
// flowPanelMissionState
//
//
...
@@ -136,6 +136,7 @@
...
@@ -136,6 +136,7 @@
this
.
flowPanelMissionState
.
Name
=
"flowPanelMissionState"
;
this
.
flowPanelMissionState
.
Name
=
"flowPanelMissionState"
;
this
.
flowPanelMissionState
.
Size
=
new
System
.
Drawing
.
Size
(
287
,
230
);
this
.
flowPanelMissionState
.
Size
=
new
System
.
Drawing
.
Size
(
287
,
230
);
this
.
flowPanelMissionState
.
TabIndex
=
2
;
this
.
flowPanelMissionState
.
TabIndex
=
2
;
this
.
flowPanelMissionState
.
Click
+=
new
System
.
EventHandler
(
this
.
flowPanelMissionState_Click
);
//
//
// Status
// Status
//
//
...
...
AGV_UI/Status.cs
查看文件 @
2a83d3c
...
@@ -129,5 +129,9 @@ namespace AGV_UI
...
@@ -129,5 +129,9 @@ namespace AGV_UI
));
));
}
}
private
void
flowPanelMissionState_Click
(
object
sender
,
EventArgs
e
)
{
this
.
OnClick
(
e
);
}
}
}
}
}
AGV_UI/Status.resx
查看文件 @
2a83d3c
...
@@ -128,4 +128,50 @@
...
@@ -128,4 +128,50 @@
QmCC
QmCC
</value>
</value>
</data>
</data>
<data name="picBxConn.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAJgSURBVFhH7Ze7axRRFIfXFygqmiKCaWwMaGVhJZr4bhWs9C9IFCxs1EZBRfMoTGmlrZ1/gq/G
YCn4BlGCIL5AfCuov+/svd6zN7MzbHazSZEPPmbPmcnMmbnn3pnUFsgYlr31n93nmPwrH8g5KWKtvC8p
4qnsk12HO+cJzMaTOCwX13+WMxtFnJKc77xFJfSEbaeL2C9/yz/yIIki1sg38ohFnS/iuORcr+RyEjnn
JAfctKhOO0VsCNvIIhmb/AQJzzLJ3bNzkIRjJkVckB/kRosSDAXn4VpLSEQOSHY8tGg6rRTBnd6QHHub
RAbXYN+ARYEJSfKsRYmdkuKglSLop3eSY3eTcIxJ8uMWBe5JknstSlyVP+U2ixqLeCs/ypfykmQYPWck
x12xKLFPkr9jUeC1JLneosQTSX6HRXUoIvaL96L0bJHkH1mU6Jfkn1kU+CZJ5tPjiyTPI/Vskt8l+16E
7ZT0rJbkP1mUWCXJf7YoEC+00qLEV0l+nUWNUERsKKTrPYUXEoWFPZck82kTh2CrRdPxT4Km840Zh+Cx
RYk4BLzw/nNXktxjUeKaJE/nNmOzjD3hZ0dVE96yKHBZkhyxKMEUIs8F8j7w+NnBlidZNQ0bmnaXJJkv
RCwqLM3sux7iZvgifoRt2UK03aLAUvlesiMfBu6G+V75KhW+CIzrR6TpUgynJTsnZX6n+YuljHw4Yk+U
voxghWQuc8AQiTYoKqLydQyHJB8Nv2S+LLeKL4JpXvlBEqE7+aOTFrWHLwJHZSV8OPIB2SmKhqPrzLtP
/qMk5gKK4N+/BQK12j/uTcqYd/4INwAAAABJRU5ErkJggg==
</value>
</data>
<data name="lblAGVState.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAIsSURBVFhH7ZXbS8MwFMb3v+0P9AZThoIiw9vEBwXBKYKoQ0XUFweK4AVvjE0GQpOmacw57Rlr
U222PriHfPDR9Zyv6a9tkpWcnJws1CyX1Tg6xosAvYmJsbIDLGoHWNQOsKhzAf1GQ8nPTzTf2jL6YLaw
0M94k5OZmUHLh4co//ycm88FFKenihR+fytWqRgZtrgYJ5TypqaM/qD56mqcjPTbQ5OHAgQF19dGZhhA
uB4Udjp4DFqtzBzZGlC+vOjRAj1yqPjaWiJjDTg9rULPw5y/vY1HJYTyMr4K2RowuLtTotnE3/D03sxM
P2ML6O/sYEa+v+M5vUWY5+ks2R7w/h5vDpMbJC4u+hlbQPn4iBn/8BDPxfExnsu3NyNLHg5Qn7PlZT2i
RPNaLapZALL5eZweYFatRjW9+klsacm4Bjw0INbOzrAWttsIZAPYf1uwtQzU4e2BxPl5ok4eCRDmX9jt
Yl0cHVkB0nyTr684PcgEGPZ6mXviaIDafH09+mR6FfJ6HTOgLEC+shJ3/xaMk752ZEAw7Wm0cEBZgMHN
DfZg9fLNTcPy4wP7we2tcW0hQPzUX1/YJxmAOqM4x56/v5/sxfYPDrCftScWA9TmGxvYJ6UB/d3dqKFX
PZubS/TIbHZW30D/CWj5e3uJXi4g3EA+PeEmne6RYVVDBpye6OLkBOvB1VWinra4vIzuo8carOcC/rcd
YFE7wKJ2gEVtAI6jYzwnJ6ffVSr9APX72FNpHTfwAAAAAElFTkSuQmCC
</value>
</data>
<data name="lblTask.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAIuSURBVGhD7Zq9TlRRFIVvo7UghPgCYEIg8bmIj4EaYsIL2FlaUFFCA53xpzDRThs1IVQ0SChw
beJOjpc1M3fNXsAU8yVfMZx7vtknM8xkJtPN+Z8deA6vRGPPKzgzXEA26BD/wFvlAXwJf0A2QJiwNcWE
rYUxwwsYM8nEIVi0NWFriglba92GMr8gi7UmbE0xYWutP6EMC/VN2Jpiwtb6yrBI34StKSZsra+MErmt
Vy12vYwSifeRS8j2jDP2jHsfYXtkLJEilhkskSKWGSyRIpYZLJEilhkskSKWGSyRIpYZLJEilhkskREs
wz14Co/hKmRYZrBERnAI2+4RZLTXpDKWyAjW4QnM7hlktPedylgiDYtwH65d3+q6TRhPrei+iz8Q+vcf
ylgi/3gMP8JoxOecpzB4BuNptXR96yb9+w9lLBHwBH6FbSeeVhtwEu2eVMYRiUfiE2StAzgJtk+mGmGP
RPoeLsBJsL0ylYjjEAHbLzNtJA7xDbL9yiEC1pCZJuI8RMA6MmrEfYiAtWSUyKRDPILTwHoyQyPxEvsZ
suu/wBU4LawpMzSyBdm1lUciYV2ZoZE3sH+d4xBBvxvKDI18gO01rkMEbTeVGRr5DuMf/S18DuNDk4uh
M4zFEilimcESKWKZwRIpYpnBEilimcESKWKZwRIpYpnBEilimYFFZkEZFpkFZX5DFrpP43swmSE/GLhr
X0OZ/AlH+9XmfRlfqe7Ch3DOnLuj6/4CuzhP2xu9LUAAAAAASUVORK5CYII=
</value>
</data>
</root>
</root>
\ No newline at end of file
\ No newline at end of file
Common/SettingString.cs
查看文件 @
2a83d3c
...
@@ -64,22 +64,22 @@ namespace Common
...
@@ -64,22 +64,22 @@ namespace Common
public
const
string
A3
=
"A3"
;
public
const
string
A3
=
"A3"
;
/// <summary>
/// <summary>
///
料仓1
入口
///
7寸盘
入口
/// </summary>
/// </summary>
public
const
string
D1
=
"D1"
;
public
const
string
D1
=
"D1"
;
/// <summary>
/// <summary>
///
料仓1
出口
///
7寸盘
出口
/// </summary>
/// </summary>
public
const
string
D2
=
"D2"
;
public
const
string
D2
=
"D2"
;
/// <summary>
/// <summary>
///
料仓2
入口
///
混合料仓
入口
/// </summary>
/// </summary>
public
const
string
D3
=
"D3"
;
public
const
string
D3
=
"D3"
;
/// <summary>
/// <summary>
///
料仓2
出口
///
混合料仓
出口
/// </summary>
/// </summary>
public
const
string
D4
=
"D4"
;
public
const
string
D4
=
"D4"
;
...
@@ -88,5 +88,6 @@ namespace Common
...
@@ -88,5 +88,6 @@ namespace Common
public
const
string
AGVServerPort
=
"AGVServerPort"
;
public
const
string
AGVServerPort
=
"AGVServerPort"
;
public
const
string
Use_Fleet
=
"Use_Fleet"
;
public
const
string
Use_Fleet
=
"Use_Fleet"
;
public
const
string
log4net_configname
=
"log4net_configname"
;
public
const
string
log4net_configname
=
"log4net_configname"
;
public
const
string
MixingString
=
"MixingString"
;
}
}
}
}
DeviceLibrary/bean/job/GetShelfJob.cs
查看文件 @
2a83d3c
...
@@ -222,8 +222,11 @@ namespace DeviceLibrary
...
@@ -222,8 +222,11 @@ namespace DeviceLibrary
{
{
if
(
JobType
.
FindNeedEnterMission
(
currentAgv
,
SettingString
.
D1
,
false
))
if
(
JobType
.
FindNeedEnterMission
(
currentAgv
,
SettingString
.
D1
,
false
))
{
{
tarPlace
=
SettingString
.
D1
;
if
(!
BoxInJobType
.
IsMixString
(
RFID
))
return
true
;
{
tarPlace
=
SettingString
.
D1
;
return
true
;
}
}
}
if
(
JobType
.
FindNeedEnterMission
(
currentAgv
,
SettingString
.
D3
,
false
))
if
(
JobType
.
FindNeedEnterMission
(
currentAgv
,
SettingString
.
D3
,
false
))
{
{
...
...
DeviceLibrary/bean/jobType/BoxInJobType.cs
查看文件 @
2a83d3c
using
Common
;
using
Common
;
using
System.Collections.Generic
;
namespace
DeviceLibrary
namespace
DeviceLibrary
{
{
...
@@ -9,6 +10,7 @@ namespace DeviceLibrary
...
@@ -9,6 +10,7 @@ namespace DeviceLibrary
/// </summary>
/// </summary>
public
class
BoxInJobType
:
JobType
public
class
BoxInJobType
:
JobType
{
{
static
string
[]
mixString
=
AppConfigHelper
.
GetValue
(
SettingString
.
MixingString
).
Split
(
','
);
/// <summary>
/// <summary>
/// 料仓料串任务
/// 料仓料串任务
...
@@ -25,9 +27,9 @@ namespace DeviceLibrary
...
@@ -25,9 +27,9 @@ namespace DeviceLibrary
//检查设备1入口需要空料串用作出库
//检查设备1入口需要空料串用作出库
if
(
FindNeedEnterMission
(
currentAgv
,
SettingString
.
D1
,
true
))
if
(
FindNeedEnterMission
(
currentAgv
,
SettingString
.
D1
,
true
))
{
{
if
(
FindNeedLeaveMission
(
currentAgv
,
SettingString
.
A1
,
out
rfid
,
true
))
if
(
FindNeedLeaveMission
(
currentAgv
,
SettingString
.
A1
,
out
rfid
,
true
))
{
{
LogUtil
.
info
(
string
.
Format
(
"{0} [{1}]需要空料串,去[{2}]取料串[{3}]"
,
currentAgv
.
Name
,
SettingString
.
D1
,
SettingString
.
A1
,
rfid
));
LogUtil
.
info
(
string
.
Format
(
"{0} [{1}]需要空料串,去[{2}]取料串[{3}]"
,
currentAgv
.
Name
,
SettingString
.
D1
,
SettingString
.
A1
,
rfid
));
return
new
GetShelfJob
(
currentAgv
.
Place
,
SettingString
.
A1
,
rfid
,
false
);
return
new
GetShelfJob
(
currentAgv
.
Place
,
SettingString
.
A1
,
rfid
,
false
);
}
}
}
}
...
@@ -43,30 +45,41 @@ namespace DeviceLibrary
...
@@ -43,30 +45,41 @@ namespace DeviceLibrary
}
}
//混合仓入口需要满料
//检查设备1入口需要满料
if
(
FindNeedEnterMission
(
currentAgv
,
SettingString
.
D3
,
false
))
if
(
FindNeedEnterMission
(
currentAgv
,
SettingString
.
D1
,
false
))
{
{
if
(
FindNeedLeaveMission
(
currentAgv
,
SettingString
.
A3
,
out
rfid
,
false
))
if
(
FindNeedLeaveMission
(
currentAgv
,
SettingString
.
A3
,
out
rfid
,
false
))
{
{
LogUtil
.
info
(
string
.
Format
(
"{0} [{1}]需要满料串,去[{2}]取料串[{3}]"
,
currentAgv
.
Name
,
SettingString
.
D
1
,
SettingString
.
A3
,
rfid
));
LogUtil
.
info
(
string
.
Format
(
"{0} [{1}]需要满料串,去[{2}]取料串[{3}]"
,
currentAgv
.
Name
,
SettingString
.
D
3
,
SettingString
.
A3
,
rfid
));
return
new
GetShelfJob
(
currentAgv
.
Place
,
SettingString
.
A3
,
rfid
,
true
);
return
new
GetShelfJob
(
currentAgv
.
Place
,
SettingString
.
A3
,
rfid
,
true
);
}
}
}
}
//
检查设备2
入口需要满料
//
7寸盘
入口需要满料
if
(
FindNeedEnterMission
(
currentAgv
,
SettingString
.
D
3
,
false
))
if
(
FindNeedEnterMission
(
currentAgv
,
SettingString
.
D
1
,
false
))
{
{
if
(
FindNeedLeaveMission
(
currentAgv
,
SettingString
.
A3
,
out
rfid
,
false
))
if
(
FindNeedLeaveMission
(
currentAgv
,
SettingString
.
A3
,
out
rfid
,
false
))
{
{
LogUtil
.
info
(
string
.
Format
(
"{0} [{1}]需要满料串,去[{2}]取料串[{3}]"
,
currentAgv
.
Name
,
SettingString
.
D3
,
SettingString
.
A3
,
rfid
));
if
(
IsMixString
(
rfid
))
return
null
;
LogUtil
.
info
(
string
.
Format
(
"{0} [{1}]需要满料串,去[{2}]取料串[{3}]"
,
currentAgv
.
Name
,
SettingString
.
D1
,
SettingString
.
A3
,
rfid
));
return
new
GetShelfJob
(
currentAgv
.
Place
,
SettingString
.
A3
,
rfid
,
true
);
return
new
GetShelfJob
(
currentAgv
.
Place
,
SettingString
.
A3
,
rfid
,
true
);
}
}
}
}
return
null
;
return
null
;
}
}
public
static
bool
IsMixString
(
string
rfid
)
{
if
(
mixString
!=
null
&&
mixString
.
Length
>
0
)
foreach
(
string
item
in
mixString
)
{
if
(
item
.
Equals
(
rfid
))
return
true
;
}
return
false
;
}
}
}
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论