Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
李娜
/
AutoCountMachine
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 24d76270
由
LN
编写于
2020-06-02 15:27:46 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
增加X射线点料功能
1 个父辈
2badfdcf
隐藏空白字符变更
内嵌
并排
正在显示
13 个修改的文件
包含
298 行增加
和
94 行删除
RC1266-AutoCountMachine/source/AutoCountClient/AutoCountClient.csproj
RC1266-AutoCountMachine/source/AutoCountClient/FrmRobotMain.Designer.cs
RC1266-AutoCountMachine/source/AutoCountClient/FrmRobotMain.cs
RC1266-AutoCountMachine/source/AutoCountClient/FrmXRay.Designer.cs
RC1266-AutoCountMachine/source/AutoCountClient/FrmXRay.cs
RC1266-AutoCountMachine/source/Common/Common.csproj
RC1266-AutoCountMachine/source/DeviceLibrary/DeviceLibrary.csproj
RC1266-AutoCountMachine/source/DeviceLibrary/bean/BatchMoveBean.cs
RC1266-AutoCountMachine/source/DeviceLibrary/bean/RobotBean.cs
RC1266-AutoCountMachine/source/DeviceLibrary/bean/X_RAY_Equip.cs
RC1266-AutoCountMachine/source/DeviceLibrary/bean/X_RAY_Equip_Partial.cs
RC1266-AutoCountMachine/source/DeviceLibrary/model/MoveStep.cs
RC1266-AutoCountMachine/source/LoadCVSLibrary/storeConfig/config/DeviceConfig.cs
RC1266-AutoCountMachine/source/AutoCountClient/AutoCountClient.csproj
查看文件 @
24d7627
...
@@ -38,7 +38,7 @@
...
@@ -38,7 +38,7 @@
<ErrorReport>prompt</ErrorReport>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
<Prefer32Bit>false</Prefer32Bit>
<AllowUnsafeBlocks>
tru
e</AllowUnsafeBlocks>
<AllowUnsafeBlocks>
fals
e</AllowUnsafeBlocks>
</PropertyGroup>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<PlatformTarget>AnyCPU</PlatformTarget>
...
@@ -54,6 +54,9 @@
...
@@ -54,6 +54,9 @@
<ApplicationIcon>icon.ico</ApplicationIcon>
<ApplicationIcon>icon.ico</ApplicationIcon>
</PropertyGroup>
</PropertyGroup>
<PropertyGroup />
<PropertyGroup />
<PropertyGroup>
<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
</PropertyGroup>
<ItemGroup>
<ItemGroup>
<Reference Include="Asa.PrintLabel">
<Reference Include="Asa.PrintLabel">
<HintPath>..\..\dll\label\Asa.PrintLabel.dll</HintPath>
<HintPath>..\..\dll\label\Asa.PrintLabel.dll</HintPath>
...
...
RC1266-AutoCountMachine/source/AutoCountClient/FrmRobotMain.Designer.cs
查看文件 @
24d7627
...
@@ -71,6 +71,7 @@
...
@@ -71,6 +71,7 @@
this
.
toolStripSeparator11
=
new
System
.
Windows
.
Forms
.
ToolStripSeparator
();
this
.
toolStripSeparator11
=
new
System
.
Windows
.
Forms
.
ToolStripSeparator
();
this
.
版本号
ToolStripMenuItem
=
new
System
.
Windows
.
Forms
.
ToolStripMenuItem
();
this
.
版本号
ToolStripMenuItem
=
new
System
.
Windows
.
Forms
.
ToolStripMenuItem
();
this
.
menuStrip1
=
new
System
.
Windows
.
Forms
.
MenuStrip
();
this
.
menuStrip1
=
new
System
.
Windows
.
Forms
.
MenuStrip
();
this
.
lblXrayWork
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
tabControl1
.
SuspendLayout
();
this
.
tabControl1
.
SuspendLayout
();
this
.
tabPage1
.
SuspendLayout
();
this
.
tabPage1
.
SuspendLayout
();
this
.
groupBox2
.
SuspendLayout
();
this
.
groupBox2
.
SuspendLayout
();
...
@@ -227,7 +228,7 @@
...
@@ -227,7 +228,7 @@
this
.
lblStatus
.
AutoSize
=
true
;
this
.
lblStatus
.
AutoSize
=
true
;
this
.
lblStatus
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
10.5F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
lblStatus
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
10.5F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
lblStatus
.
ForeColor
=
System
.
Drawing
.
Color
.
Green
;
this
.
lblStatus
.
ForeColor
=
System
.
Drawing
.
Color
.
Green
;
this
.
lblStatus
.
Location
=
new
System
.
Drawing
.
Point
(
29
,
46
);
this
.
lblStatus
.
Location
=
new
System
.
Drawing
.
Point
(
94
,
46
);
this
.
lblStatus
.
Name
=
"lblStatus"
;
this
.
lblStatus
.
Name
=
"lblStatus"
;
this
.
lblStatus
.
Size
=
new
System
.
Drawing
.
Size
(
65
,
20
);
this
.
lblStatus
.
Size
=
new
System
.
Drawing
.
Size
(
65
,
20
);
this
.
lblStatus
.
TabIndex
=
92
;
this
.
lblStatus
.
TabIndex
=
92
;
...
@@ -367,31 +368,31 @@
...
@@ -367,31 +368,31 @@
// 二维码学习ToolStripMenuItem
// 二维码学习ToolStripMenuItem
//
//
this
.
二维码学习
ToolStripMenuItem
.
Name
=
"二维码学习ToolStripMenuItem"
;
this
.
二维码学习
ToolStripMenuItem
.
Name
=
"二维码学习ToolStripMenuItem"
;
this
.
二维码学习
ToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
1
8
0
,
26
);
this
.
二维码学习
ToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
1
6
0
,
26
);
this
.
二维码学习
ToolStripMenuItem
.
Text
=
"二维码学习"
;
this
.
二维码学习
ToolStripMenuItem
.
Text
=
"二维码学习"
;
this
.
二维码学习
ToolStripMenuItem
.
Click
+=
new
System
.
EventHandler
(
this
.
二维码学习
ToolStripMenuItem_Click
);
this
.
二维码学习
ToolStripMenuItem
.
Click
+=
new
System
.
EventHandler
(
this
.
二维码学习
ToolStripMenuItem_Click
);
//
//
// toolStripSeparator7
// toolStripSeparator7
//
//
this
.
toolStripSeparator7
.
Name
=
"toolStripSeparator7"
;
this
.
toolStripSeparator7
.
Name
=
"toolStripSeparator7"
;
this
.
toolStripSeparator7
.
Size
=
new
System
.
Drawing
.
Size
(
1
7
7
,
6
);
this
.
toolStripSeparator7
.
Size
=
new
System
.
Drawing
.
Size
(
1
5
7
,
6
);
//
//
// toolStripMenuItem2
// toolStripMenuItem2
//
//
this
.
toolStripMenuItem2
.
Name
=
"toolStripMenuItem2"
;
this
.
toolStripMenuItem2
.
Name
=
"toolStripMenuItem2"
;
this
.
toolStripMenuItem2
.
Size
=
new
System
.
Drawing
.
Size
(
1
8
0
,
26
);
this
.
toolStripMenuItem2
.
Size
=
new
System
.
Drawing
.
Size
(
1
6
0
,
26
);
this
.
toolStripMenuItem2
.
Text
=
"AGV调试"
;
this
.
toolStripMenuItem2
.
Text
=
"AGV调试"
;
this
.
toolStripMenuItem2
.
Click
+=
new
System
.
EventHandler
(
this
.
toolStripMenuItem2_Click
);
this
.
toolStripMenuItem2
.
Click
+=
new
System
.
EventHandler
(
this
.
toolStripMenuItem2_Click
);
//
//
// toolStripSeparator6
// toolStripSeparator6
//
//
this
.
toolStripSeparator6
.
Name
=
"toolStripSeparator6"
;
this
.
toolStripSeparator6
.
Name
=
"toolStripSeparator6"
;
this
.
toolStripSeparator6
.
Size
=
new
System
.
Drawing
.
Size
(
1
7
7
,
6
);
this
.
toolStripSeparator6
.
Size
=
new
System
.
Drawing
.
Size
(
1
5
7
,
6
);
//
//
// 标签编辑ToolStripMenuItem
// 标签编辑ToolStripMenuItem
//
//
this
.
标签编辑
ToolStripMenuItem
.
Name
=
"标签编辑ToolStripMenuItem"
;
this
.
标签编辑
ToolStripMenuItem
.
Name
=
"标签编辑ToolStripMenuItem"
;
this
.
标签编辑
ToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
1
8
0
,
26
);
this
.
标签编辑
ToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
1
6
0
,
26
);
this
.
标签编辑
ToolStripMenuItem
.
Text
=
"标签编辑"
;
this
.
标签编辑
ToolStripMenuItem
.
Text
=
"标签编辑"
;
this
.
标签编辑
ToolStripMenuItem
.
Click
+=
new
System
.
EventHandler
(
this
.
标签编辑
ToolStripMenuItem_Click
);
this
.
标签编辑
ToolStripMenuItem
.
Click
+=
new
System
.
EventHandler
(
this
.
标签编辑
ToolStripMenuItem_Click
);
//
//
...
@@ -452,11 +453,24 @@
...
@@ -452,11 +453,24 @@
this
.
menuStrip1
.
TabIndex
=
4
;
this
.
menuStrip1
.
TabIndex
=
4
;
this
.
menuStrip1
.
Text
=
"menuStrip1"
;
this
.
menuStrip1
.
Text
=
"menuStrip1"
;
//
//
// lblXrayWork
//
this
.
lblXrayWork
.
AutoSize
=
true
;
this
.
lblXrayWork
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
12F
,
System
.
Drawing
.
FontStyle
.
Bold
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
lblXrayWork
.
ForeColor
=
System
.
Drawing
.
Color
.
FromArgb
(((
int
)(((
byte
)(
192
)))),
((
int
)(((
byte
)(
0
)))),
((
int
)(((
byte
)(
0
)))));
this
.
lblXrayWork
.
Location
=
new
System
.
Drawing
.
Point
(
17
,
44
);
this
.
lblXrayWork
.
Name
=
"lblXrayWork"
;
this
.
lblXrayWork
.
Size
=
new
System
.
Drawing
.
Size
(
58
,
22
);
this
.
lblXrayWork
.
TabIndex
=
97
;
this
.
lblXrayWork
.
Text
=
"点料中"
;
this
.
lblXrayWork
.
Visible
=
false
;
//
// FrmRobotMain
// FrmRobotMain
//
//
this
.
AutoScaleMode
=
System
.
Windows
.
Forms
.
AutoScaleMode
.
None
;
this
.
AutoScaleMode
=
System
.
Windows
.
Forms
.
AutoScaleMode
.
None
;
this
.
BackColor
=
System
.
Drawing
.
Color
.
White
;
this
.
BackColor
=
System
.
Drawing
.
Color
.
White
;
this
.
ClientSize
=
new
System
.
Drawing
.
Size
(
1350
,
729
);
this
.
ClientSize
=
new
System
.
Drawing
.
Size
(
1350
,
729
);
this
.
Controls
.
Add
(
this
.
lblXrayWork
);
this
.
Controls
.
Add
(
this
.
tabControl1
);
this
.
Controls
.
Add
(
this
.
tabControl1
);
this
.
Controls
.
Add
(
this
.
lblStatus
);
this
.
Controls
.
Add
(
this
.
lblStatus
);
this
.
Controls
.
Add
(
this
.
lblWarnMsg
);
this
.
Controls
.
Add
(
this
.
lblWarnMsg
);
...
@@ -526,6 +540,7 @@
...
@@ -526,6 +540,7 @@
private
System
.
Windows
.
Forms
.
MenuStrip
menuStrip1
;
private
System
.
Windows
.
Forms
.
MenuStrip
menuStrip1
;
private
System
.
Windows
.
Forms
.
GroupBox
groupBox1
;
private
System
.
Windows
.
Forms
.
GroupBox
groupBox1
;
private
System
.
Windows
.
Forms
.
ToolStripMenuItem
标签编辑
ToolStripMenuItem
;
private
System
.
Windows
.
Forms
.
ToolStripMenuItem
标签编辑
ToolStripMenuItem
;
private
System
.
Windows
.
Forms
.
Label
lblXrayWork
;
}
}
}
}
RC1266-AutoCountMachine/source/AutoCountClient/FrmRobotMain.cs
查看文件 @
24d7627
...
@@ -77,6 +77,7 @@ namespace OnlineStore.AutoCountClient
...
@@ -77,6 +77,7 @@ namespace OnlineStore.AutoCountClient
}
}
private
void
FrmMain_Load
(
object
sender
,
EventArgs
e
)
private
void
FrmMain_Load
(
object
sender
,
EventArgs
e
)
{
{
string
fileP
=
Application
.
StartupPath
+
@"\XRAY\tif\" + DateTime.Now.ToString("
HHmmss
") + "
.
png
";
FrmBase
.
GetVersion
(
true
);
FrmBase
.
GetVersion
(
true
);
if
(!
RobotManager
.
Init
())
if
(!
RobotManager
.
Init
())
{
{
...
@@ -187,6 +188,7 @@ namespace OnlineStore.AutoCountClient
...
@@ -187,6 +188,7 @@ namespace OnlineStore.AutoCountClient
}
}
IOManager
.
instance
.
CloseAllConnection
();
IOManager
.
instance
.
CloseAllConnection
();
ACServerManager
.
CloseAllPort
();
ACServerManager
.
CloseAllPort
();
RobotManager
.
robot
.
XrayBean
.
XRayDispose
();
if
(
Camera
.
_cam
!=
null
)
if
(
Camera
.
_cam
!=
null
)
{
{
Camera
.
_cam
.
CloseAll
();
Camera
.
_cam
.
CloseAll
();
...
@@ -396,6 +398,7 @@ namespace OnlineStore.AutoCountClient
...
@@ -396,6 +398,7 @@ namespace OnlineStore.AutoCountClient
{
{
return
;
return
;
}
}
lblXrayWork
.
Visible
=
robot
.
XrayBean
.
InXWork
;
string
canScanCode
=
""
;
string
canScanCode
=
""
;
lblStatus
.
Text
=
robot
.
GetRunStr
()
+
canScanCode
;
lblStatus
.
Text
=
robot
.
GetRunStr
()
+
canScanCode
;
string
warnMsg
=
robot
.
WarnMsg
;
string
warnMsg
=
robot
.
WarnMsg
;
...
...
RC1266-AutoCountMachine/source/AutoCountClient/FrmXRay.Designer.cs
查看文件 @
24d7627
...
@@ -28,14 +28,15 @@
...
@@ -28,14 +28,15 @@
this
.
tabControl1
=
new
System
.
Windows
.
Forms
.
TabControl
();
this
.
tabControl1
=
new
System
.
Windows
.
Forms
.
TabControl
();
this
.
tabPage3
=
new
System
.
Windows
.
Forms
.
TabPage
();
this
.
tabPage3
=
new
System
.
Windows
.
Forms
.
TabPage
();
this
.
groupBox6
=
new
System
.
Windows
.
Forms
.
GroupBox
();
this
.
groupBox6
=
new
System
.
Windows
.
Forms
.
GroupBox
();
this
.
pictureBox1
=
new
System
.
Windows
.
Forms
.
PictureBox
();
this
.
groupBox2
=
new
System
.
Windows
.
Forms
.
GroupBox
();
this
.
groupBox2
=
new
System
.
Windows
.
Forms
.
GroupBox
();
this
.
lblLastS
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lblData
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lblData
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lblCom
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lblCom
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lblDiany
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lblDiany
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lblDianl
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lblDianl
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lblInoutInfo
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lblInoutInfo
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lblMoveInfo
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lblMoveInfo
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lblInstoreList
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lblThisSta
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lblThisSta
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
tabPage1
=
new
System
.
Windows
.
Forms
.
TabPage
();
this
.
tabPage1
=
new
System
.
Windows
.
Forms
.
TabPage
();
this
.
groupBox3
=
new
System
.
Windows
.
Forms
.
GroupBox
();
this
.
groupBox3
=
new
System
.
Windows
.
Forms
.
GroupBox
();
...
@@ -65,11 +66,11 @@
...
@@ -65,11 +66,11 @@
this
.
txtSlaveId
=
new
System
.
Windows
.
Forms
.
TextBox
();
this
.
txtSlaveId
=
new
System
.
Windows
.
Forms
.
TextBox
();
this
.
cmbWriteIO
=
new
System
.
Windows
.
Forms
.
ComboBox
();
this
.
cmbWriteIO
=
new
System
.
Windows
.
Forms
.
ComboBox
();
this
.
tabPage2
=
new
System
.
Windows
.
Forms
.
TabPage
();
this
.
tabPage2
=
new
System
.
Windows
.
Forms
.
TabPage
();
this
.
lblLastS
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
panel1
.
SuspendLayout
();
this
.
panel1
.
SuspendLayout
();
this
.
tabControl1
.
SuspendLayout
();
this
.
tabControl1
.
SuspendLayout
();
this
.
tabPage3
.
SuspendLayout
();
this
.
tabPage3
.
SuspendLayout
();
this
.
groupBox6
.
SuspendLayout
();
this
.
groupBox6
.
SuspendLayout
();
((
System
.
ComponentModel
.
ISupportInitialize
)(
this
.
pictureBox1
)).
BeginInit
();
this
.
groupBox2
.
SuspendLayout
();
this
.
groupBox2
.
SuspendLayout
();
this
.
tabPage1
.
SuspendLayout
();
this
.
tabPage1
.
SuspendLayout
();
this
.
groupBox3
.
SuspendLayout
();
this
.
groupBox3
.
SuspendLayout
();
...
@@ -202,10 +203,10 @@
...
@@ -202,10 +203,10 @@
this
.
groupBox6
.
Anchor
=
((
System
.
Windows
.
Forms
.
AnchorStyles
)((((
System
.
Windows
.
Forms
.
AnchorStyles
.
Top
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Bottom
)
this
.
groupBox6
.
Anchor
=
((
System
.
Windows
.
Forms
.
AnchorStyles
)((((
System
.
Windows
.
Forms
.
AnchorStyles
.
Top
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Bottom
)
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Left
)
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Left
)
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Right
)));
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Right
)));
this
.
groupBox6
.
Controls
.
Add
(
this
.
pictureBox1
);
this
.
groupBox6
.
Controls
.
Add
(
this
.
groupBox2
);
this
.
groupBox6
.
Controls
.
Add
(
this
.
groupBox2
);
this
.
groupBox6
.
Controls
.
Add
(
this
.
lblInoutInfo
);
this
.
groupBox6
.
Controls
.
Add
(
this
.
lblInoutInfo
);
this
.
groupBox6
.
Controls
.
Add
(
this
.
lblMoveInfo
);
this
.
groupBox6
.
Controls
.
Add
(
this
.
lblMoveInfo
);
this
.
groupBox6
.
Controls
.
Add
(
this
.
lblInstoreList
);
this
.
groupBox6
.
Controls
.
Add
(
this
.
lblThisSta
);
this
.
groupBox6
.
Controls
.
Add
(
this
.
lblThisSta
);
this
.
groupBox6
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
3
);
this
.
groupBox6
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
3
);
this
.
groupBox6
.
Name
=
"groupBox6"
;
this
.
groupBox6
.
Name
=
"groupBox6"
;
...
@@ -214,6 +215,14 @@
...
@@ -214,6 +215,14 @@
this
.
groupBox6
.
TabStop
=
false
;
this
.
groupBox6
.
TabStop
=
false
;
this
.
groupBox6
.
Text
=
"消息"
;
this
.
groupBox6
.
Text
=
"消息"
;
//
//
// pictureBox1
//
this
.
pictureBox1
.
Location
=
new
System
.
Drawing
.
Point
(
327
,
115
);
this
.
pictureBox1
.
Name
=
"pictureBox1"
;
this
.
pictureBox1
.
Size
=
new
System
.
Drawing
.
Size
(
975
,
359
);
this
.
pictureBox1
.
TabIndex
=
283
;
this
.
pictureBox1
.
TabStop
=
false
;
//
// groupBox2
// groupBox2
//
//
this
.
groupBox2
.
Controls
.
Add
(
this
.
lblLastS
);
this
.
groupBox2
.
Controls
.
Add
(
this
.
lblLastS
);
...
@@ -223,12 +232,22 @@
...
@@ -223,12 +232,22 @@
this
.
groupBox2
.
Controls
.
Add
(
this
.
lblDianl
);
this
.
groupBox2
.
Controls
.
Add
(
this
.
lblDianl
);
this
.
groupBox2
.
Location
=
new
System
.
Drawing
.
Point
(
12
,
41
);
this
.
groupBox2
.
Location
=
new
System
.
Drawing
.
Point
(
12
,
41
);
this
.
groupBox2
.
Name
=
"groupBox2"
;
this
.
groupBox2
.
Name
=
"groupBox2"
;
this
.
groupBox2
.
Size
=
new
System
.
Drawing
.
Size
(
309
,
149
);
this
.
groupBox2
.
Size
=
new
System
.
Drawing
.
Size
(
276
,
149
);
this
.
groupBox2
.
TabIndex
=
282
;
this
.
groupBox2
.
TabIndex
=
282
;
this
.
groupBox2
.
TabStop
=
false
;
this
.
groupBox2
.
TabStop
=
false
;
this
.
groupBox2
.
Text
=
"X射线信息"
;
this
.
groupBox2
.
Text
=
"X射线信息"
;
this
.
groupBox2
.
Enter
+=
new
System
.
EventHandler
(
this
.
groupBox2_Enter
);
this
.
groupBox2
.
Enter
+=
new
System
.
EventHandler
(
this
.
groupBox2_Enter
);
//
//
// lblLastS
//
this
.
lblLastS
.
AutoSize
=
true
;
this
.
lblLastS
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
lblLastS
.
Location
=
new
System
.
Drawing
.
Point
(
12
,
124
);
this
.
lblLastS
.
Name
=
"lblLastS"
;
this
.
lblLastS
.
Size
=
new
System
.
Drawing
.
Size
(
68
,
17
);
this
.
lblLastS
.
TabIndex
=
4
;
this
.
lblLastS
.
Text
=
"点料机状态"
;
//
// lblData
// lblData
//
//
this
.
lblData
.
AutoSize
=
true
;
this
.
lblData
.
AutoSize
=
true
;
...
@@ -289,18 +308,6 @@
...
@@ -289,18 +308,6 @@
this
.
lblMoveInfo
.
TabIndex
=
280
;
this
.
lblMoveInfo
.
TabIndex
=
280
;
this
.
lblMoveInfo
.
Text
=
"运动信息:"
;
this
.
lblMoveInfo
.
Text
=
"运动信息:"
;
//
//
// lblInstoreList
//
this
.
lblInstoreList
.
Anchor
=
((
System
.
Windows
.
Forms
.
AnchorStyles
)(((
System
.
Windows
.
Forms
.
AnchorStyles
.
Top
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Left
)
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Right
)));
this
.
lblInstoreList
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
lblInstoreList
.
ForeColor
=
System
.
Drawing
.
Color
.
Green
;
this
.
lblInstoreList
.
ImageAlign
=
System
.
Drawing
.
ContentAlignment
.
MiddleRight
;
this
.
lblInstoreList
.
Location
=
new
System
.
Drawing
.
Point
(
331
,
185
);
this
.
lblInstoreList
.
Name
=
"lblInstoreList"
;
this
.
lblInstoreList
.
Size
=
new
System
.
Drawing
.
Size
(
971
,
115
);
this
.
lblInstoreList
.
TabIndex
=
277
;
//
// lblThisSta
// lblThisSta
//
//
this
.
lblThisSta
.
Anchor
=
((
System
.
Windows
.
Forms
.
AnchorStyles
)(((
System
.
Windows
.
Forms
.
AnchorStyles
.
Top
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Left
)
this
.
lblThisSta
.
Anchor
=
((
System
.
Windows
.
Forms
.
AnchorStyles
)(((
System
.
Windows
.
Forms
.
AnchorStyles
.
Top
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Left
)
...
@@ -310,7 +317,7 @@
...
@@ -310,7 +317,7 @@
this
.
lblThisSta
.
ImageAlign
=
System
.
Drawing
.
ContentAlignment
.
MiddleRight
;
this
.
lblThisSta
.
ImageAlign
=
System
.
Drawing
.
ContentAlignment
.
MiddleRight
;
this
.
lblThisSta
.
Location
=
new
System
.
Drawing
.
Point
(
327
,
41
);
this
.
lblThisSta
.
Location
=
new
System
.
Drawing
.
Point
(
327
,
41
);
this
.
lblThisSta
.
Name
=
"lblThisSta"
;
this
.
lblThisSta
.
Name
=
"lblThisSta"
;
this
.
lblThisSta
.
Size
=
new
System
.
Drawing
.
Size
(
975
,
149
);
this
.
lblThisSta
.
Size
=
new
System
.
Drawing
.
Size
(
975
,
66
);
this
.
lblThisSta
.
TabIndex
=
246
;
this
.
lblThisSta
.
TabIndex
=
246
;
this
.
lblThisSta
.
Text
=
"等待启动"
;
this
.
lblThisSta
.
Text
=
"等待启动"
;
this
.
lblThisSta
.
TextAlign
=
System
.
Drawing
.
ContentAlignment
.
MiddleCenter
;
this
.
lblThisSta
.
TextAlign
=
System
.
Drawing
.
ContentAlignment
.
MiddleCenter
;
...
@@ -686,16 +693,6 @@
...
@@ -686,16 +693,6 @@
this
.
tabPage2
.
Text
=
" X光射线 "
;
this
.
tabPage2
.
Text
=
" X光射线 "
;
this
.
tabPage2
.
UseVisualStyleBackColor
=
true
;
this
.
tabPage2
.
UseVisualStyleBackColor
=
true
;
//
//
// lblLastS
//
this
.
lblLastS
.
AutoSize
=
true
;
this
.
lblLastS
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
lblLastS
.
Location
=
new
System
.
Drawing
.
Point
(
12
,
124
);
this
.
lblLastS
.
Name
=
"lblLastS"
;
this
.
lblLastS
.
Size
=
new
System
.
Drawing
.
Size
(
68
,
17
);
this
.
lblLastS
.
TabIndex
=
4
;
this
.
lblLastS
.
Text
=
"点料机状态"
;
//
// FrmXRay
// FrmXRay
//
//
this
.
AutoScaleDimensions
=
new
System
.
Drawing
.
SizeF
(
7F
,
17F
);
this
.
AutoScaleDimensions
=
new
System
.
Drawing
.
SizeF
(
7F
,
17F
);
...
@@ -717,6 +714,7 @@
...
@@ -717,6 +714,7 @@
this
.
tabPage3
.
ResumeLayout
(
false
);
this
.
tabPage3
.
ResumeLayout
(
false
);
this
.
groupBox6
.
ResumeLayout
(
false
);
this
.
groupBox6
.
ResumeLayout
(
false
);
this
.
groupBox6
.
PerformLayout
();
this
.
groupBox6
.
PerformLayout
();
((
System
.
ComponentModel
.
ISupportInitialize
)(
this
.
pictureBox1
)).
EndInit
();
this
.
groupBox2
.
ResumeLayout
(
false
);
this
.
groupBox2
.
ResumeLayout
(
false
);
this
.
groupBox2
.
PerformLayout
();
this
.
groupBox2
.
PerformLayout
();
this
.
tabPage1
.
ResumeLayout
(
false
);
this
.
tabPage1
.
ResumeLayout
(
false
);
...
@@ -764,7 +762,6 @@
...
@@ -764,7 +762,6 @@
private
System
.
Windows
.
Forms
.
GroupBox
groupBox6
;
private
System
.
Windows
.
Forms
.
GroupBox
groupBox6
;
private
System
.
Windows
.
Forms
.
Label
lblInoutInfo
;
private
System
.
Windows
.
Forms
.
Label
lblInoutInfo
;
private
System
.
Windows
.
Forms
.
Label
lblMoveInfo
;
private
System
.
Windows
.
Forms
.
Label
lblMoveInfo
;
private
System
.
Windows
.
Forms
.
Label
lblInstoreList
;
private
System
.
Windows
.
Forms
.
Label
lblThisSta
;
private
System
.
Windows
.
Forms
.
Label
lblThisSta
;
private
System
.
Windows
.
Forms
.
Button
X_OutDoor_Down
;
private
System
.
Windows
.
Forms
.
Button
X_OutDoor_Down
;
private
System
.
Windows
.
Forms
.
Button
X_OutDoor_Up
;
private
System
.
Windows
.
Forms
.
Button
X_OutDoor_Up
;
...
@@ -780,6 +777,7 @@
...
@@ -780,6 +777,7 @@
private
System
.
Windows
.
Forms
.
Label
lblDiany
;
private
System
.
Windows
.
Forms
.
Label
lblDiany
;
private
System
.
Windows
.
Forms
.
Label
lblDianl
;
private
System
.
Windows
.
Forms
.
Label
lblDianl
;
private
System
.
Windows
.
Forms
.
Label
lblLastS
;
private
System
.
Windows
.
Forms
.
Label
lblLastS
;
private
System
.
Windows
.
Forms
.
PictureBox
pictureBox1
;
}
}
}
}
RC1266-AutoCountMachine/source/AutoCountClient/FrmXRay.cs
查看文件 @
24d7627
...
@@ -43,9 +43,22 @@ namespace OnlineStore.AutoCountClient
...
@@ -43,9 +43,22 @@ namespace OnlineStore.AutoCountClient
lblData
.
Text
=
"最后使用时间:"
+
ConfigAppSettings
.
GetValue
(
Setting_Init
.
XRay_Data
);
lblData
.
Text
=
"最后使用时间:"
+
ConfigAppSettings
.
GetValue
(
Setting_Init
.
XRay_Data
);
lblLastS
.
Text
=
equipBean
.
LastXRayState
;
lblLastS
.
Text
=
equipBean
.
LastXRayState
;
lblName
.
Text
=
equipBean
.
Name
;
lblName
.
Text
=
equipBean
.
Name
;
equipBean
.
GetImageEvent
+=
EquipBean_GetImageEvent
;
IsLoad
=
true
;
IsLoad
=
true
;
}
}
private
void
EquipBean_GetImageEvent
(
Bitmap
bitmap
)
{
try
{
this
.
pictureBox1
.
Image
=
bitmap
;
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
" EquipBean_GetImageEvent 出错:"
+
ex
.
ToString
());
}
}
private
void
LoadIOList
()
private
void
LoadIOList
()
{
{
int
roleindex
=
0
;
int
roleindex
=
0
;
...
@@ -101,7 +114,7 @@ namespace OnlineStore.AutoCountClient
...
@@ -101,7 +114,7 @@ namespace OnlineStore.AutoCountClient
}
}
ReadIOList
();
ReadIOList
();
ReadBtnDO
();
ReadBtnDO
();
lbl
Data
.
Text
=
equipBean
.
LastXRayState
;
lbl
LastS
.
Text
=
equipBean
.
LastXRayState
;
if
(
equipBean
.
runStatus
>
RobotRunStatus
.
Wait
)
if
(
equipBean
.
runStatus
>
RobotRunStatus
.
Wait
)
{
{
lblName
.
BackColor
=
Color
.
Green
;
lblName
.
BackColor
=
Color
.
Green
;
...
...
RC1266-AutoCountMachine/source/Common/Common.csproj
查看文件 @
24d7627
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
<OutputType>Library</OutputType>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>OnlineStore.Common</RootNamespace>
<RootNamespace>OnlineStore.Common</RootNamespace>
<AssemblyName>Common</AssemblyName>
<AssemblyName>
My
Common</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
<TargetFrameworkProfile />
...
...
RC1266-AutoCountMachine/source/DeviceLibrary/DeviceLibrary.csproj
查看文件 @
24d7627
...
@@ -21,7 +21,7 @@
...
@@ -21,7 +21,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>
tru
e</AllowUnsafeBlocks>
<AllowUnsafeBlocks>
fals
e</AllowUnsafeBlocks>
<PlatformTarget>AnyCPU</PlatformTarget>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
<Prefer32Bit>false</Prefer32Bit>
<LangVersion>7.3</LangVersion>
<LangVersion>7.3</LangVersion>
...
@@ -37,7 +37,13 @@
...
@@ -37,7 +37,13 @@
<Prefer32Bit>false</Prefer32Bit>
<Prefer32Bit>false</Prefer32Bit>
<LangVersion>7.3</LangVersion>
<LangVersion>7.3</LangVersion>
</PropertyGroup>
</PropertyGroup>
<PropertyGroup>
<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
</PropertyGroup>
<ItemGroup>
<ItemGroup>
<Reference Include="Asa.CarerayImage">
<HintPath>..\..\dll\X-Ray\Asa.CarerayImage.dll</HintPath>
</Reference>
<Reference Include="Asa.IOModule.AIOBOX">
<Reference Include="Asa.IOModule.AIOBOX">
<HintPath>..\..\dll\Asa.IOModule.AIOBOX.dll</HintPath>
<HintPath>..\..\dll\Asa.IOModule.AIOBOX.dll</HintPath>
</Reference>
</Reference>
...
@@ -54,6 +60,9 @@
...
@@ -54,6 +60,9 @@
<Reference Include="CodeLibrary">
<Reference Include="CodeLibrary">
<HintPath>..\..\dll\CodeLibrary.dll</HintPath>
<HintPath>..\..\dll\CodeLibrary.dll</HintPath>
</Reference>
</Reference>
<Reference Include="CountImage">
<HintPath>..\..\dll\X-Ray\CountImage.dll</HintPath>
</Reference>
<Reference Include="DeviceLib">
<Reference Include="DeviceLib">
<HintPath>..\..\dll\DeviceLib.dll</HintPath>
<HintPath>..\..\dll\DeviceLib.dll</HintPath>
</Reference>
</Reference>
...
@@ -130,6 +139,15 @@
...
@@ -130,6 +139,15 @@
<Content Include="Label\20200520172352.xml">
<Content Include="Label\20200520172352.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</Content>
<Content Include="XRAY\out\out.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="XRAY\png\png.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="XRAY\tif\tif.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
</ItemGroup>
<ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Common\Common.csproj">
<ProjectReference Include="..\Common\Common.csproj">
...
...
RC1266-AutoCountMachine/source/DeviceLibrary/bean/BatchMoveBean.cs
查看文件 @
24d7627
...
@@ -14,7 +14,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -14,7 +14,7 @@ namespace OnlineStore.DeviceLibrary
{
{
public
string
Name
=
"入料"
;
public
string
Name
=
"入料"
;
public
AxisBean
BatchAxis
=
null
;
public
AxisBean
BatchAxis
=
null
;
public
int
EquipType
=
1
;
public
int
EquipType
=
1
;
//1=左侧,2=右侧
public
RobotMoveInfo
MoveInfo
;
public
RobotMoveInfo
MoveInfo
;
public
string
WarnMsg
=
""
;
public
string
WarnMsg
=
""
;
private
string
CameraName
=
""
;
private
string
CameraName
=
""
;
...
...
RC1266-AutoCountMachine/source/DeviceLibrary/bean/RobotBean.cs
查看文件 @
24d7627
...
@@ -67,6 +67,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -67,6 +67,7 @@ namespace OnlineStore.DeviceLibrary
{
{
LogUtil
.
info
(
Name
+
"开始连接IO模块 "
);
LogUtil
.
info
(
Name
+
"开始连接IO模块 "
);
IOManager
.
instance
.
ConnectionIOList
(
ioList
);
IOManager
.
instance
.
ConnectionIOList
(
ioList
);
Thread
.
Sleep
(
3000
);
mainTimer
.
Enabled
=
true
;
mainTimer
.
Enabled
=
true
;
canStart
=
true
;
canStart
=
true
;
AgvClient
.
Init
();
AgvClient
.
Init
();
...
...
RC1266-AutoCountMachine/source/DeviceLibrary/bean/X_RAY_Equip.cs
查看文件 @
24d7627
...
@@ -8,6 +8,7 @@ using System.Linq;
...
@@ -8,6 +8,7 @@ using System.Linq;
using
System.Text
;
using
System.Text
;
using
System.Threading
;
using
System.Threading
;
using
System.Threading.Tasks
;
using
System.Threading.Tasks
;
using
System.Windows.Forms
;
namespace
OnlineStore.DeviceLibrary
namespace
OnlineStore.DeviceLibrary
{
{
...
@@ -20,10 +21,13 @@ namespace OnlineStore.DeviceLibrary
...
@@ -20,10 +21,13 @@ namespace OnlineStore.DeviceLibrary
public
XRay_Config
Config
;
public
XRay_Config
Config
;
private
XRay
xRay
=
new
XRay
(
"XRay"
);
private
XRay
xRay
=
null
;
private
CountImage
countImage
=
null
;
private
CarerayImage
carerayImage
=
null
;
private
bool
xRayCanStart
=
false
;
private
bool
xRayCanStart
=
false
;
public
string
LastXRayState
=
""
;
public
string
LastXRayState
=
""
;
public
bool
InXWork
=
false
;
public
X_RAY_Equip
(
string
cid
,
XRay_Config
config
)
public
X_RAY_Equip
(
string
cid
,
XRay_Config
config
)
{
{
this
.
DeviceID
=
config
.
Id
;
this
.
DeviceID
=
config
.
Id
;
...
@@ -31,22 +35,70 @@ namespace OnlineStore.DeviceLibrary
...
@@ -31,22 +35,70 @@ namespace OnlineStore.DeviceLibrary
baseConfig
=
config
;
baseConfig
=
config
;
IsDebug
=
config
.
IsDebug
.
Equals
(
1
);
IsDebug
=
config
.
IsDebug
.
Equals
(
1
);
Name
=
(
" "
+
"XRay"
+
" "
).
ToUpper
();
Name
=
(
" "
+
"XRay"
+
" "
).
ToUpper
();
xRay
.
WarmUp
+=
XRay_WarmUp
;
Init
();
Init
();
ledProcessTimer
.
Elapsed
+=
LedProcess
;
ledProcessTimer
.
Elapsed
+=
LedProcess
;
IoCheckTimer
.
Elapsed
+=
IoCheckTimerProcess
;
IoCheckTimer
.
Elapsed
+=
IoCheckTimerProcess
;
MoveInfo
=
new
RobotMoveInfo
(
Name
);
MoveInfo
=
new
RobotMoveInfo
(
Name
);
SecMoveInfo
=
new
RobotMoveInfo
(
Name
.
Trim
()
+
"-SMove"
);
SecMoveInfo
=
new
RobotMoveInfo
(
Name
.
Trim
()
+
"-SMove"
);
XRayLoad
();
}
private
void
XRayLoad
()
{
try
{
xRay
=
new
XRay
(
"XRay"
);
string
lastData
=
ConfigAppSettings
.
GetValue
(
Setting_Init
.
XRay_Data
);
bool
xresult
=
xRay
.
Open
(
Config
.
XRay_Port
,
lastData
);
if
(!
xresult
)
{
LogUtil
.
info
(
Name
+
"第一次 xRay.Open("
+
Config
.
XRay_Port
+
","
+
lastData
+
")="
+
xresult
+
", 再打开一次 "
);
xresult
=
xRay
.
Open
(
Config
.
XRay_Port
,
lastData
);
}
LogUtil
.
info
(
Name
+
"xRay.Open("
+
Config
.
XRay_Port
+
","
+
lastData
+
")="
+
xresult
);
xRay
.
WarmUp
+=
XRay_WarmUp
;
carerayImage
=
new
CarerayImage
(
"XRay"
);
bool
cResult
=
carerayImage
.
Open
();
LogUtil
.
info
(
Name
+
"carerayImage.Open()="
+
cResult
);
countImage
=
new
CountImage
(
"XRay"
);
string
path1
=
Application
.
StartupPath
+
@"\XRAY\tif"
;
string
path2
=
Application
.
StartupPath
+
@"\XRAY\png"
;
string
path3
=
Application
.
StartupPath
+
@"\XRAY\out"
;
countImage
.
SetDirectory
(
path1
,
path2
,
path3
);
LogUtil
.
info
(
Name
+
"SetDirectory: path1【"
+
path1
+
"】path2【"
+
path2
+
"】path3【"
+
path3
+
"】"
+
cResult
);
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
"XRayLoad 出错:"
+
ex
.
ToString
());
}
}
public
void
XRayDispose
()
{
try
{
xRay
.
Close
();
carerayImage
.
Close
();
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
"XRayDispose 出错:"
+
ex
.
ToString
());
}
}
}
private
void
XRay_WarmUp
(
bool
state
,
string
text
)
private
void
XRay_WarmUp
(
bool
state
,
string
text
)
{
{
LastXRayState
=
state
+
":"
+
text
;
LastXRayState
=
state
+
":"
+
text
;
LogUtil
.
info
(
Name
+
"XRay_WarmUp ["
+
state
+
"] ["
+
text
+
"]"
);
LogUtil
.
info
(
Name
+
"XRay_WarmUp ["
+
state
+
"] ["
+
text
+
"]"
);
if
(
state
)
if
(
state
)
{
{
xRay
.
SetVC
(
Config
.
XRay_Voltage
,
Config
.
XRay_Electricity
);
LogUtil
.
info
(
Name
+
"收到state= ["
+
state
+
"],设置电流 ["
+
Config
.
XRay_Electricity
+
"]电压["
+
Config
.
XRay_Voltage
+
"]"
);
xRayCanStart
=
true
;
xRayCanStart
=
true
;
}
}
}
}
public
override
bool
StartRun
()
public
override
bool
StartRun
()
...
@@ -88,7 +140,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -88,7 +140,7 @@ namespace OnlineStore.DeviceLibrary
isNoAirCheck
=
false
;
isNoAirCheck
=
false
;
isInPro
=
false
;
isInPro
=
false
;
MoveInfo
.
NextMoveStep
(
StepEnum
.
XR01_CloseXLock
);
MoveInfo
.
NextMoveStep
(
StepEnum
.
XR01_CloseXLock
);
WorkLog
(
"XRay复位 :关闭X光
机
"
);
WorkLog
(
"XRay复位 :关闭X光
互锁信号
"
);
IOMove
(
IO_Type
.
X_Lock_On
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
X_Lock_On
,
IO_VALUE
.
LOW
);
}
}
...
@@ -164,16 +216,22 @@ namespace OnlineStore.DeviceLibrary
...
@@ -164,16 +216,22 @@ namespace OnlineStore.DeviceLibrary
{
{
SecMoveInfo
.
EndMove
();
SecMoveInfo
.
EndMove
();
MoveInfo
.
EndMove
();
MoveInfo
.
EndMove
();
InXWork
=
false
;
if
(
xRay
.
IsRayOpen
)
{
xRay
.
Stop
();
}
IOMove
(
IO_Type
.
X_Lock_On
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
X_Lock_On
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
X_InLine_Run
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
X_InLine_Run
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
X_MLine_Run
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
X_MLine_Run
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
X_InDoor_Up
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
X_OLine_Run
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
X_InDoor_Down
,
IO_VALUE
.
LOW
);
//IOMove(IO_Type.X_InDoor_Up, IO_VALUE.LOW);
IOMove
(
IO_Type
.
X_OutDoor_Up
,
IO_VALUE
.
LOW
);
//IOMove(IO_Type.X_InDoor_Down, IO_VALUE.LOW);
IOMove
(
IO_Type
.
X_OutDoor_Down
,
IO_VALUE
.
LOW
);
//IOMove(IO_Type.X_OutDoor_Up, IO_VALUE.LOW);
IOMove
(
IO_Type
.
X_StopCylinder_Up
,
IO_VALUE
.
LOW
);
//IOMove(IO_Type.X_OutDoor_Down, IO_VALUE.LOW);
IOMove
(
IO_Type
.
X_StopCylinder_Down
,
IO_VALUE
.
LOW
);
//IOMove(IO_Type.X_StopCylinder_Up, IO_VALUE.LOW);
//IOMove(IO_Type.X_StopCylinder_Down, IO_VALUE.LOW);
}
}
...
...
RC1266-AutoCountMachine/source/DeviceLibrary/bean/X_RAY_Equip_Partial.cs
查看文件 @
24d7627
...
@@ -4,16 +4,21 @@ using OnlineStore.LoadCSVLibrary;
...
@@ -4,16 +4,21 @@ using OnlineStore.LoadCSVLibrary;
using
System
;
using
System
;
using
System.Collections.Generic
;
using
System.Collections.Generic
;
using
System.Diagnostics
;
using
System.Diagnostics
;
using
System.Drawing
;
using
System.Linq
;
using
System.Linq
;
using
System.Text
;
using
System.Text
;
using
System.Threading
;
using
System.Threading
;
using
System.Threading.Tasks
;
using
System.Threading.Tasks
;
using
System.Timers
;
using
System.Timers
;
using
System.Windows.Forms
;
namespace
OnlineStore.DeviceLibrary
namespace
OnlineStore.DeviceLibrary
{
{
partial
class
X_RAY_Equip
partial
class
X_RAY_Equip
{
{
public
delegate
void
GetImage
(
Bitmap
bitmap
);
public
event
GetImage
GetImageEvent
;
#
region
Label
#
region
Label
public
override
bool
StartLabelling
(
WorkParam
param
)
public
override
bool
StartLabelling
(
WorkParam
param
)
...
@@ -97,12 +102,12 @@ namespace OnlineStore.DeviceLibrary
...
@@ -97,12 +102,12 @@ namespace OnlineStore.DeviceLibrary
}
}
else
if
(
MoveInfo
.
IsStep
(
StepEnum
.
XW02_InDoorOpen
))
else
if
(
MoveInfo
.
IsStep
(
StepEnum
.
XW02_InDoorOpen
))
{
{
// MoveInfo.NextMoveStep(StepEnum.XW03_StopCylinderDown);
// MoveInfo.NextMoveStep(StepEnum.XW03_StopCylinderDown);
// WorkLog("料盘处理:挡停下降");
// WorkLog("料盘处理:挡停下降");
// CylinderMove(MoveInfo, IO_Type.X_StopCylinder_Up, IO_Type.X_StopCylinder_Down);
// CylinderMove(MoveInfo, IO_Type.X_StopCylinder_Up, IO_Type.X_StopCylinder_Down);
//}
//}
//else if (MoveInfo.IsStep(StepEnum.XW03_StopCylinderDown))
//else if (MoveInfo.IsStep(StepEnum.XW03_StopCylinderDown))
//{
//{
MoveInfo
.
NextMoveStep
(
StepEnum
.
XW04_InLineRun
);
MoveInfo
.
NextMoveStep
(
StepEnum
.
XW04_InLineRun
);
WorkLog
(
"料盘处理:入口和中间皮带线转动,"
);
WorkLog
(
"料盘处理:入口和中间皮带线转动,"
);
IOMove
(
IO_Type
.
X_InLine_Run
,
IO_VALUE
.
HIGH
);
IOMove
(
IO_Type
.
X_InLine_Run
,
IO_VALUE
.
HIGH
);
...
@@ -122,7 +127,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -122,7 +127,7 @@ namespace OnlineStore.DeviceLibrary
Work_ReelInfo
=
In_ReelInfo
.
GetReelInfo
();
Work_ReelInfo
=
In_ReelInfo
.
GetReelInfo
();
In_ReelInfo
=
new
ReelInfo
();
In_ReelInfo
=
new
ReelInfo
();
WorkLog
(
"料盘处理:更新Work_ReelInfo【"
+
Work_ReelInfo
.
ToStr
()
+
"】,清空 In_ReelInfo,再转动2秒钟"
);
WorkLog
(
"料盘处理:更新Work_ReelInfo【"
+
Work_ReelInfo
.
ToStr
()
+
"】,清空 In_ReelInfo,再转动2秒钟"
);
IOMove
(
IO_Type
.
X_InLine_Run
,
IO_VALUE
.
HIGH
);
IOMove
(
IO_Type
.
X_InLine_Run
,
IO_VALUE
.
HIGH
);
IOMove
(
IO_Type
.
X_MLine_Run
,
IO_VALUE
.
HIGH
);
IOMove
(
IO_Type
.
X_MLine_Run
,
IO_VALUE
.
HIGH
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
2000
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
2000
));
...
@@ -151,22 +156,88 @@ namespace OnlineStore.DeviceLibrary
...
@@ -151,22 +156,88 @@ namespace OnlineStore.DeviceLibrary
else
if
(
MoveInfo
.
IsStep
(
StepEnum
.
XW08_DoorClose
))
else
if
(
MoveInfo
.
IsStep
(
StepEnum
.
XW08_DoorClose
))
{
{
MoveInfo
.
NextMoveStep
(
StepEnum
.
XW11_StartCount
);
if
(
IOValue
(
IO_Type
.
X_Lock_On
).
Equals
(
IO_VALUE
.
HIGH
))
WorkLog
(
"料盘处理:开始点料"
);
{
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
MoveInfo
.
NextMoveStep
(
StepEnum
.
XW11_StartCount
);
WorkLog
(
"料盘处理:开始点料,等待X射线可以启动"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
InXWork
=
true
;
}
else
if
(
MoveInfo
.
IsTimeOut
(
120
))
{
WarnMsg
=
MoveInfo
.
Name
+
"["
+
MoveInfo
.
MoveStep
+
"]"
+
"等待 X互锁信号打开 超时["
+
FormUtil
.
GetSpanStr
(
MoveInfo
.
StepSpan
())
+
"]"
;
LogUtil
.
error
(
WarnMsg
,
SecMoveInfo
.
ErrorLogType
);
Alarm
(
AlarmType
.
IoSingleTimeOut
);
}
}
}
else
if
(
MoveInfo
.
IsStep
(
StepEnum
.
XW11_StartCount
))
else
if
(
MoveInfo
.
IsStep
(
StepEnum
.
XW11_StartCount
))
{
{
MoveInfo
.
NextMoveStep
(
StepEnum
.
XW12_EndCount
);
if
(
xRayCanStart
)
{
MoveInfo
.
NextMoveStep
(
StepEnum
.
XW12_XRayStart
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
bool
result
=
xRay
.
Start
();
WorkLog
(
"料盘处理:启动X射线["
+
result
+
"],等待1秒"
);
}
else
if
(
MoveInfo
.
IsTimeOut
(
120
))
{
WarnMsg
=
MoveInfo
.
Name
+
"["
+
MoveInfo
.
MoveStep
+
"]"
+
"等待 可以打开X射线 超时["
+
FormUtil
.
GetSpanStr
(
MoveInfo
.
StepSpan
())
+
"]"
;
LogUtil
.
error
(
WarnMsg
,
SecMoveInfo
.
ErrorLogType
);
Alarm
(
AlarmType
.
IoSingleTimeOut
);
}
}
else
if
(
MoveInfo
.
IsStep
(
StepEnum
.
XW12_XRayStart
))
{
MoveInfo
.
NextMoveStep
(
StepEnum
.
XW13_GetXRayImage
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
8000
));
WorkLog
(
"料盘处理:开始获取X射线图形 "
);
string
lastData
=
DateTime
.
Now
.
ToString
(
"yyyy-MM-dd"
);
ConfigAppSettings
.
SaveValue
(
Setting_Init
.
XRay_Data
,
lastData
);
carerayImage
.
GetImage
();
carerayImage
.
WindowWidth
=
Config
.
WindowWidth
;
carerayImage
.
WindowLevel
=
Config
.
WindowLevel
;
Bitmap
bmp
=
carerayImage
.
Get48bImage
();
string
fileP
=
Application
.
StartupPath
+
@"\XRAY\tif\" + DateTime.Now.ToString("
HHmmss
") + "
.
png
";
bmp
.
Save
(
fileP
,
System
.
Drawing
.
Imaging
.
ImageFormat
.
Png
);
WorkLog
(
"料盘处理:获取X射线图形,并保存到: "
+
fileP
+
",记录时间"
+
lastData
+
",停止X射线"
);
GetImageEvent
?.
Invoke
(
bmp
);
bool
result
=
xRay
.
Stop
();
if
(!
result
)
{
LogUtil
.
error
(
" xRay.Stop()失败:"
+
result
);
}
MoveInfo
.
EndMove
();
}
else
if
(
MoveInfo
.
IsStep
(
StepEnum
.
XW13_GetXRayImage
))
{
// MoveInfo.NextMoveStep(StepEnum.XW14_XRayStop);
// MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
// WorkLog("料盘处理:停止X射线");
// xRay.Stop();
//}
//else if (MoveInfo.IsStep(StepEnum.XW14_XRayStop))
//{
MoveInfo
.
NextMoveStep
(
StepEnum
.
XW15_GetResult
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
if
(
xRay
.
IsRayOpen
)
{
xRay
.
Stop
();
}
int
count
=
99999
;
countImage
.
GetCount
(
out
count
);
InXWork
=
false
;
WorkLog
(
"料盘处理:获取点料结果,【"
+
count
+
"】,保存并上传结果"
);
if
(
Work_ReelInfo
.
WareCount
<=
0
)
if
(
Work_ReelInfo
.
WareCount
<=
0
)
{
{
MoveInfo
.
MoveParam
.
WareCount
=
99999
;
MoveInfo
.
MoveParam
.
WareCount
=
count
;
Work_ReelInfo
.
WareCount
=
99999
;
Work_ReelInfo
.
WareCount
=
count
;
}
}
WorkLog
(
"料盘处理:点料结束,关闭X关机互锁信号,上传点料结果"
);
IOMove
(
IO_Type
.
X_Lock_On
,
IO_VALUE
.
LOW
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
Task
.
Factory
.
StartNew
(
delegate
{
Task
.
Factory
.
StartNew
(
delegate
{
string
msg
=
"暂不上传"
;
string
msg
=
"暂不上传"
;
// string msg= SServerManager.Return_Material(Name, MoveInfo.MoveParam.WareCode, Work_ReelInfo.WareCount);
// string msg= SServerManager.Return_Material(Name, MoveInfo.MoveParam.WareCode, Work_ReelInfo.WareCount);
if
(!
String
.
IsNullOrEmpty
(
msg
))
if
(!
String
.
IsNullOrEmpty
(
msg
))
...
@@ -175,8 +246,14 @@ namespace OnlineStore.DeviceLibrary
...
@@ -175,8 +246,14 @@ namespace OnlineStore.DeviceLibrary
}
}
});
});
}
}
else
if
(
MoveInfo
.
IsStep
(
StepEnum
.
XW15_GetResult
))
{
MoveInfo
.
NextMoveStep
(
StepEnum
.
XW16_EndCount
);
WorkLog
(
"料盘处理:点料结束,关闭X关机互锁信号"
);
IOMove
(
IO_Type
.
X_Lock_On
,
IO_VALUE
.
LOW
);
}
#
endregion
#
endregion
else
if
(
MoveInfo
.
IsStep
(
StepEnum
.
XW1
2
_EndCount
))
else
if
(
MoveInfo
.
IsStep
(
StepEnum
.
XW1
6
_EndCount
))
{
{
MoveInfo
.
NextMoveStep
(
StepEnum
.
XW21_WaitOutNoReel
);
MoveInfo
.
NextMoveStep
(
StepEnum
.
XW21_WaitOutNoReel
);
MoveInfo
.
TimeOutSeconds
=
120
;
MoveInfo
.
TimeOutSeconds
=
120
;
...
@@ -210,8 +287,8 @@ namespace OnlineStore.DeviceLibrary
...
@@ -210,8 +287,8 @@ namespace OnlineStore.DeviceLibrary
MoveInfo
.
NextMoveStep
(
StepEnum
.
XW25_WaitTime
);
MoveInfo
.
NextMoveStep
(
StepEnum
.
XW25_WaitTime
);
Out_ReelInfo
=
Work_ReelInfo
.
GetReelInfo
();
Out_ReelInfo
=
Work_ReelInfo
.
GetReelInfo
();
Work_ReelInfo
=
new
ReelInfo
();
Work_ReelInfo
=
new
ReelInfo
();
WorkLog
(
"料盘处理:清空 Work_ReelInfo,更新Out_ReelInfo【"
+
Out_ReelInfo
.
ToStr
()
+
"】 再转动3秒"
);
WorkLog
(
"料盘处理:清空 Work_ReelInfo,更新Out_ReelInfo【"
+
Out_ReelInfo
.
ToStr
()
+
"】 再转动3秒"
);
IOMove
(
IO_Type
.
X_MLine_Run
,
IO_VALUE
.
HIGH
);
IOMove
(
IO_Type
.
X_MLine_Run
,
IO_VALUE
.
HIGH
);
IOMove
(
IO_Type
.
X_OLine_Run
,
IO_VALUE
.
HIGH
);
IOMove
(
IO_Type
.
X_OLine_Run
,
IO_VALUE
.
HIGH
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
3000
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
3000
));
...
...
RC1266-AutoCountMachine/source/DeviceLibrary/model/MoveStep.cs
查看文件 @
24d7627
...
@@ -43,17 +43,17 @@ namespace OnlineStore.DeviceLibrary
...
@@ -43,17 +43,17 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
/// </summary>
Busy
=
4
,
Busy
=
4
,
}
}
public
enum
StepEnum
public
enum
StepEnum
{
{
/// <summary>
/// <summary>
/// 无操作,等待状态
/// 无操作,等待状态
/// </summary>
/// </summary>
Wait
=
0
,
Wait
=
0
,
#
region
入料模块复位
1000
开始
#
region
入料模块复位
1000
开始
/// <summary>
/// <summary>
/// 入料模块复位: 准备开始复位
/// 入料模块复位: 准备开始复位
...
@@ -93,7 +93,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -93,7 +93,7 @@ namespace OnlineStore.DeviceLibrary
IR09_WaitBatchMove
,
IR09_WaitBatchMove
,
#
endregion
#
endregion
#
region
入料模块取料
1100
开始
#
region
入料模块取料
1100
开始
/// <summary>
/// <summary>
/// 入料模块取放料:进出轴回到待机点
/// 入料模块取放料:进出轴回到待机点
...
@@ -140,7 +140,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -140,7 +140,7 @@ namespace OnlineStore.DeviceLibrary
/// 入料模块取放料:根据条码获取目标位置
/// 入料模块取放料:根据条码获取目标位置
/// </summary>
/// </summary>
IW11_GetTargetPosition
,
IW11_GetTargetPosition
,
/// <summary>
/// <summary>
/// 放料到XRay:开始放料盘到XRay门口,旋转轴到P3
/// 放料到XRay:开始放料盘到XRay门口,旋转轴到P3
...
@@ -175,17 +175,17 @@ namespace OnlineStore.DeviceLibrary
...
@@ -175,17 +175,17 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
/// </summary>
IW33_InoutToP4
,
IW33_InoutToP4
,
/// <summary>
/// <summary>
/// 放料:夹料气缸放松
/// 放料:夹料气缸放松
/// </summary>
/// </summary>
IW41_Clamping_Relax
,
IW41_Clamping_Relax
,
/// <summary>
/// <summary>
/// 放料完成:进出轴返回P1
/// 放料完成:进出轴返回P1
/// </summary>
/// </summary>
IW42_InoutToP1
,
IW42_InoutToP1
,
/// <summary>
/// <summary>
/// 放料完成:升降轴旋转轴返回P1
/// 放料完成:升降轴旋转轴返回P1
/// </summary>
/// </summary>
...
@@ -202,7 +202,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -202,7 +202,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// <summary>
/// 入料模块复位:
/// 入料模块复位:
/// </summary>
/// </summary>
IBR01_LocationDown
=
1501
,
IBR01_LocationDown
=
1501
,
/// <summary>
/// <summary>
/// 入料模块复位:若前段末端信号不一致,转动链条3秒
/// 入料模块复位:若前段末端信号不一致,转动链条3秒
/// </summary>
/// </summary>
...
@@ -211,7 +211,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -211,7 +211,7 @@ namespace OnlineStore.DeviceLibrary
/// 入料模块复位:批量轴原点返回
/// 入料模块复位:批量轴原点返回
/// </summary>
/// </summary>
IBR03_BatchHome
,
IBR03_BatchHome
,
/// <summary>
/// <summary>
/// 入料模块复位:等待100后再回待机点
/// 入料模块复位:等待100后再回待机点
/// </summary>
/// </summary>
...
@@ -305,7 +305,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -305,7 +305,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// <summary>
/// XRay复位: 左侧们打开,右侧门打开,挡停不动作
/// XRay复位: 左侧们打开,右侧门打开,挡停不动作
/// </summary>
/// </summary>
XR02_DoorOpen
,
XR02_DoorOpen
,
/// <summary>
/// <summary>
/// XRay复位: 皮带转动3秒
/// XRay复位: 皮带转动3秒
/// </summary>
/// </summary>
...
@@ -358,13 +358,31 @@ namespace OnlineStore.DeviceLibrary
...
@@ -358,13 +358,31 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// <summary>
/// XRay点料:开始点料
/// XRay点料:开始点料
,等待可以打开X射线
/// </summary>
/// </summary>
XW11_StartCount
,
XW11_StartCount
,
/// <summary>
/// <summary>
/// XRay点料:StartX射线
/// </summary>
XW12_XRayStart
,
/// <summary>
/// XRay点料:获取X射线 图片
/// </summary>
XW13_GetXRayImage
,
/// <summary>
/// XRay点料:StopX射线
/// </summary>
XW14_XRayStop
,
/// <summary>
/// XRay点料:获取点料结果
/// </summary>
XW15_GetResult
,
/// <summary>
/// XRay点料:点料结束
/// XRay点料:点料结束
/// </summary>
/// </summary>
XW1
2
_EndCount
,
XW1
6
_EndCount
,
...
@@ -482,7 +500,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -482,7 +500,7 @@ namespace OnlineStore.DeviceLibrary
#
endregion
#
endregion
#
region
料串批量轴模块复位
3200
开始
#
region
料串批量轴模块复位
3200
开始
/// <summary>
/// <summary>
/// 出料模块复位: 阻挡气缸上升
/// 出料模块复位: 阻挡气缸上升
/// </summary>
/// </summary>
...
@@ -567,7 +585,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -567,7 +585,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// <summary>
/// 取料: 取料完成,等待料串可放料
/// 取料: 取料完成,等待料串可放料
/// </summary>
/// </summary>
OT11_WaitShelfOk
,
OT11_WaitShelfOk
,
/// <summary>
/// <summary>
/// 取料: 料串可放料,取料X轴移动到P3,提升轴下降指定高度
/// 取料: 料串可放料,取料X轴移动到P3,提升轴下降指定高度
/// </summary>
/// </summary>
...
@@ -601,7 +619,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -601,7 +619,7 @@ namespace OnlineStore.DeviceLibrary
/// 取料: NG料,取料气缸放松
/// 取料: NG料,取料气缸放松
/// </summary>
/// </summary>
OT23_NG_Clamping_Relax
,
OT23_NG_Clamping_Relax
,
/// <summary>
/// <summary>
/// 取料: 等待料盘到达NG位
/// 取料: 等待料盘到达NG位
/// </summary>
/// </summary>
...
@@ -871,8 +889,8 @@ namespace OnlineStore.DeviceLibrary
...
@@ -871,8 +889,8 @@ namespace OnlineStore.DeviceLibrary
#
endregion
#
endregion
}
}
public
enum
AlarmType
public
enum
AlarmType
...
...
RC1266-AutoCountMachine/source/LoadCVSLibrary/storeConfig/config/DeviceConfig.cs
查看文件 @
24d7627
...
@@ -153,7 +153,7 @@ namespace OnlineStore.LoadCSVLibrary
...
@@ -153,7 +153,7 @@ namespace OnlineStore.LoadCSVLibrary
}
}
if
(
DOList
.
ContainsKey
(
io
.
ProName
))
if
(
DOList
.
ContainsKey
(
io
.
ProName
))
{
{
LogUtil
.
error
(
"配置DO:["
+
io
.
ToString
()
+
"] ProName重复 "
);
LogUtil
.
debug
(
"配置DO:["
+
io
.
ToString
()
+
"] ProName重复 "
);
}
}
else
else
{
{
...
@@ -166,7 +166,7 @@ namespace OnlineStore.LoadCSVLibrary
...
@@ -166,7 +166,7 @@ namespace OnlineStore.LoadCSVLibrary
}
}
if
(
SubDOList
[
io
.
SubType
].
ContainsKey
(
io
.
ProName
))
if
(
SubDOList
[
io
.
SubType
].
ContainsKey
(
io
.
ProName
))
{
{
LogUtil
.
error
(
"配置DO:["
+
io
.
ToString
()
+
"] ProName重复 "
);
LogUtil
.
debug
(
"配置DO:["
+
io
.
ToString
()
+
"] ProName重复 "
);
}
}
else
else
{
{
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论