Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
刘韬
/
SO815-AutoInOutStore
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
图表
网络
创建新的问题
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 692849d3
由
LN
编写于
2020-06-18 14:47:27 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
IO模块更新为最新版本
1 个父辈
18e7406f
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
164 行增加
和
397 行删除
dll/Asa.IOModule.AIOBOX.dll
dll/Asa.IOModule.AIOBOX.xml
source/ACSingleStore/App.config
source/DeviceLibrary/DeviceLibrary/IO/AIOBOX/AIOBOXManager.cs
source/LoadCVSLibrary/storeConfig/config/Store_IO_Type.cs
dll/Asa.IOModule.AIOBOX.dll
查看文件 @
692849d
此文件类型无法预览
dll/Asa.IOModule.AIOBOX.xml
查看文件 @
692849d
...
@@ -6,29 +6,10 @@
...
@@ -6,29 +6,10 @@
<members>
<members>
<member
name=
"T:Asa.IOModule.AIOBOX"
>
<member
name=
"T:Asa.IOModule.AIOBOX"
>
<summary>
<summary>
AIOBOX
操作类
零点IO模块
操作类
</summary>
</summary>
</member>
</member>
<member
name=
"F:Asa.IOModule.AIOBOX._unrevdRemote"
>
<member
name=
"T:Asa.IOModule.AIOBOX.DIO_Changed"
>
<summary>
暂停次数
WriteDO 命令非常多时,暂停一次发送 ReadDI 或 ReadDO
</summary>
</member>
<member
name=
"F:Asa.IOModule.AIOBOX.SEND_SLEEP"
>
<summary>
每条命令发送的间隔
不能小于15,会出现IO接收不到的情况
小于30时,会出现接收数据连包的情况
</summary>
</member>
<member
name=
"F:Asa.IOModule.AIOBOX.LISTEN_SLEEP"
>
<summary>
监听网络接收数据的间隔
必须小于SEND_SLEEP
</summary>
</member>
<member
name=
"T:Asa.IOModule.AIOBOX.DI_Changed"
>
<summary>
<summary>
自动读取DI委托
自动读取DI委托
</summary>
</summary>
...
@@ -40,55 +21,25 @@
...
@@ -40,55 +21,25 @@
自动读取DI事件触发
自动读取DI事件触发
</summary>
</summary>
</member>
</member>
<member
name=
"T:Asa.IOModule.AIOBOX.DO_Changed"
>
<summary>
自动读取DO委托
</summary>
<param
name=
"box"
>
AIOBOX
</param>
<param
name=
"sta"
>
所有DO状态
</param>
</member>
<member
name=
"E:Asa.IOModule.AIOBOX.DO_Changed_Event"
>
<member
name=
"E:Asa.IOModule.AIOBOX.DO_Changed_Event"
>
<summary>
<summary>
自动读取DO事件触发
自动读取DO事件触发
</summary>
</summary>
</member>
</member>
<member
name=
"T:Asa.IOModule.AIOBOX.AI_Changed"
>
<member
name=
"M:Asa.IOModule.AIOBOX.#ctor(System.String)"
>
<summary>
自动读取AI委托
</summary>
<param
name=
"box"
>
AIOBOX
</param>
<param
name=
"val"
>
所有AI的值
</param>
</member>
<member
name=
"E:Asa.IOModule.AIOBOX.AI_Changed_Event"
>
<summary>
自动读取AI事件触发
</summary>
</member>
<member
name=
"T:Asa.IOModule.AIOBOX.AO_Changed"
>
<summary>
自动读取AO委托
</summary>
<param
name=
"box"
>
AIOBOX
</param>
<param
name=
"val"
>
所有AO的值
</param>
</member>
<member
name=
"E:Asa.IOModule.AIOBOX.AO_Changed_Event"
>
<summary>
<summary>
自动读取AO事件触发
零点IO模块操作类
</summary>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.#ctor"
>
<summary>
AIOBOX
</summary>
</summary>
<param
name=
"logName"
></param>
</member>
</member>
<member
name=
"P:Asa.IOModule.AIOBOX.IP"
>
<member
name=
"P:Asa.IOModule.AIOBOX.IP"
>
<summary>
<summary>
IP地址
IP地址
</summary>
</summary>
</member>
</member>
<member
name=
"P:Asa.IOModule.AIOBOX.
Port
"
>
<member
name=
"P:Asa.IOModule.AIOBOX.
Upload
"
>
<summary>
<summary>
ModBus端口
输入主动上传
</summary>
</summary>
</member>
</member>
<member
name=
"P:Asa.IOModule.AIOBOX.IsConn"
>
<member
name=
"P:Asa.IOModule.AIOBOX.IsConn"
>
...
@@ -96,68 +47,24 @@
...
@@ -96,68 +47,24 @@
是否连接
是否连接
</summary>
</summary>
</member>
</member>
<member
name=
"P:Asa.IOModule.AIOBOX.ErrInfo"
>
<summary>
错误信息
</summary>
</member>
<member
name=
"P:Asa.IOModule.AIOBOX.LogOutDir"
>
<summary>
日志输出目录
</summary>
</member>
<member
name=
"P:Asa.IOModule.AIOBOX.LogOut"
>
<summary>
错误日志输出,默认true
</summary>
</member>
<member
name=
"P:Asa.IOModule.AIOBOX.InputCount"
>
<member
name=
"P:Asa.IOModule.AIOBOX.InputCount"
>
<summary>
<summary>
输入
总数
DI
总数
</summary>
</summary>
</member>
</member>
<member
name=
"P:Asa.IOModule.AIOBOX.OutputCount"
>
<member
name=
"P:Asa.IOModule.AIOBOX.OutputCount"
>
<summary>
<summary>
输出总数
DO总数
</summary>
</member>
<member
name=
"P:Asa.IOModule.AIOBOX.InputReadSleep"
>
<summary>
自动读取DI间隔
</summary>
</member>
<member
name=
"P:Asa.IOModule.AIOBOX.OutputReadSleep"
>
<summary>
自动读取DO间隔
</summary>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.SetInput(Asa.IOModule.Box_Type,System.Int32)"
>
<summary>
设置输入端
</summary>
<param
name=
"type"
>
类型
</param>
<param
name=
"count"
>
数量
</param>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.SetOutput(Asa.IOModule.Box_Type,System.Int32)"
>
<summary>
设置输出端
</summary>
<param
name=
"type"
>
类型
</param>
<param
name=
"count"
>
数量
</param>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.AutoIP(System.String)"
>
<summary>
自动获取IP地址,未连接前使用,必须在同一网段
</summary>
</summary>
<param
name=
"localIP"
>
本地IP地址
</param>
<returns></returns>
</member>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.
CheckIP(System.String
)"
>
<member
name=
"M:Asa.IOModule.AIOBOX.
SetType(Asa.IOModule.Box_Type,System.Int32,Asa.IOModule.Box_Type,System.Int32
)"
>
<summary>
<summary>
检查IP地址
设置输入输出的类型
</summary>
</summary>
<param
name=
"ip"
></param>
<param
name=
"input"
></param>
<returns></returns>
<param
name=
"inputCount"
></param>
<param
name=
"output"
></param>
<param
name=
"outputCount"
></param>
</member>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.Connect"
>
<member
name=
"M:Asa.IOModule.AIOBOX.Connect"
>
<summary>
<summary>
...
@@ -170,32 +77,18 @@
...
@@ -170,32 +77,18 @@
关闭连接
关闭连接
</summary>
</summary>
</member>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.AutoReadInput(System.Boolean,System.Int32)"
>
<member
name=
"M:Asa.IOModule.AIOBOX.ReverseStatus(Asa.IOModule.Box_Sta)"
>
<summary>
自动读取输入端并触发事件(主动上传数据 = 禁止)
</summary>
<param
name=
"read"
>
是否自动读取
</param>
<param
name=
"sleep"
>
间隔,必须大于等于15ms
</param>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.AutoReadInput(System.Boolean)"
>
<summary>
<summary>
自动读取输入端并触发事件(主动上传数据 = 使能)
相反状态(ON/OFF)
</summary>
</summary>
<param
name=
"read"
>
是否自动读取
</param>
<param
name=
"sta"
></param>
<returns></returns>
</member>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.AutoReadOutput(System.Boolean,System.Int32)"
>
<member
name=
"M:Asa.IOModule.AIOBOX.ReverseStatus(Asa.IOModule.Box_Sta@)"
>
<summary>
自动读取输出端,触发事件
</summary>
<param
name=
"read"
>
是否自动读取
</param>
<param
name=
"sleep"
>
间隔,必须大于等于15ms
</param>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.ReverseStatus(Asa.IOModule.Box_Sta)"
>
<summary>
<summary>
相反状态(ON/OFF)
相反状态(ON/OFF)
</summary>
</summary>
<param
name=
"sta"
></param>
<param
name=
"sta"
></param>
<returns></returns>
</member>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.ReadDI(System.Int32)"
>
<member
name=
"M:Asa.IOModule.AIOBOX.ReadDI(System.Int32)"
>
<summary>
<summary>
...
@@ -273,65 +166,66 @@
...
@@ -273,65 +166,66 @@
</member>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.Send"
>
<member
name=
"M:Asa.IOModule.AIOBOX.Send"
>
<summary>
<summary>
发送命令
发送命令
线程
</summary>
</summary>
</member>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.
Receive
"
>
<member
name=
"M:Asa.IOModule.AIOBOX.
GetReadDI_Command
"
>
<summary>
<summary>
接收
命令
获取ReadDI的
命令
</summary>
</summary>
<returns></returns>
</member>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.
ReadSingle(System.Byte[])
"
>
<member
name=
"M:Asa.IOModule.AIOBOX.
GetReadDO_Command
"
>
<summary>
<summary>
读取写入单个DO,功能码5
获取ReadDO的命令
</summary>
</summary>
<
param
name=
"buff"
></param
>
<
returns></returns
>
</member>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.
ReadDO(System.Byte[])
"
>
<member
name=
"M:Asa.IOModule.AIOBOX.
Listen
"
>
<summary>
<summary>
读取所有DO状态,功能码1
监听网络线程
</summary>
</summary>
<param
name=
"buff"
></param>
<returns></returns>
</member>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.
ReadDI
(System.Byte[])"
>
<member
name=
"M:Asa.IOModule.AIOBOX.
CommandProcess
(System.Byte[])"
>
<summary>
<summary>
读取所有DI状态,功能码2
接收到的命令处理方法,(task多线程)
</summary>
</summary>
<
returns></returns
>
<
param
name=
"cmd"
></param
>
</member>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.Re
adAI(System.Byte[])
"
>
<member
name=
"M:Asa.IOModule.AIOBOX.Re
conn
"
>
<summary>
<summary>
读取所有AI的值,功能码4
重连线程
</summary>
</summary>
<param
name=
"buff"
></param>
<returns></returns>
</member>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.
Command
"
>
<member
name=
"M:Asa.IOModule.AIOBOX.
Open
"
>
<summary>
<summary>
命令,前7个字节
打开socket建立连接
</summary>
</summary>
<returns></returns>
</member>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.
TriggerDIO
"
>
<member
name=
"M:Asa.IOModule.AIOBOX.
CheckIP(System.String)
"
>
<summary>
<summary>
触发DIO改变事件
检查IP地址
</summary>
</summary>
<param
name=
"ip"
></param>
<returns></returns>
</member>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.Auto
ReadInput
"
>
<member
name=
"M:Asa.IOModule.AIOBOX.Auto
IP(System.String)
"
>
<summary>
<summary>
自动
读取输入端线程
自动
获取IP地址,未连接前使用,必须在同一网段
</summary>
</summary>
<param
name=
"localIP"
>
本地IP地址
</param>
<returns></returns>
</member>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.
AutoReadOutput
"
>
<member
name=
"M:Asa.IOModule.AIOBOX.
GetIP
"
>
<summary>
<summary>
自动读取输出端线程
获取IO模块IP地址
</summary>
</summary>
</member>
</member>
<member
name=
"M:Asa.IOModule.AIOBOX.
Listen
"
>
<member
name=
"M:Asa.IOModule.AIOBOX.
Command
"
>
<summary>
<summary>
监听结果线程
命令,前7个字节
</summary>
</summary>
<returns></returns>
</member>
</member>
<member
name=
"T:Asa.IOModule.Box_Type"
>
<member
name=
"T:Asa.IOModule.Box_Type"
>
<summary>
<summary>
...
...
source/ACSingleStore/App.config
查看文件 @
692849d
...
@@ -25,19 +25,19 @@
...
@@ -25,19 +25,19 @@
<
add
key
=
"Store_CID"
value
=
"rc1252-auto1"
/>
<
add
key
=
"Store_CID"
value
=
"rc1252-auto1"
/>
<!--
end
one
store
config
-->
<!--
end
one
store
config
-->
<!--摄像机名称列表配置,用
#分割-->
<!--摄像机名称列表配置,用
#分割-->
<
add
key
=
"CameraName"
value
=
""
/>
<
add
key
=
"CameraName"
value
=
"
GigE:acA3800-10gc (23124327)#GigE:acA3800-10gc (23172285)
"
/>
<!--二维码类型列表配置,用
#分割-->
<!--二维码类型列表配置,用
#分割-->
<
add
key
=
"CodeType"
value
=
"QR Code"
/>
<
add
key
=
"CodeType"
value
=
"QR Code"
/>
<
!--<
add
key
=
"CodeType"
value
=
"Data Matrix ECC 200#QR Code"
/>--
>
<
add
key
=
"CodeType"
value
=
"Data Matrix ECC 200#QR Code"
/
>
<!--二维码参数文件所在路径,文件名与二维码类型名一样-->
<!--二维码参数文件所在路径,文件名与二维码类型名一样-->
<
add
key
=
"CodeParamPath"
value
=
"\CodeParam\"
/>
<
add
key
=
"CodeParamPath"
value
=
"\CodeParam\"
/>
<
add
key
=
"InOutDefaultPosition"
value
=
"5000"
/>
<
add
key
=
"InOutDefaultPosition"
value
=
"5000
0000
"
/>
<
add
key
=
"Config_Pwd"
value
=
"123456"
/>
<
add
key
=
"Config_Pwd"
value
=
"123456"
/>
<!--
5000
脉冲对应
1
mm
-->
<!--
5000
脉冲对应
1
mm
-->
<
add
key
=
"AxisChangeValue"
value
=
"
500
0"
/>
<
add
key
=
"AxisChangeValue"
value
=
"
402
0"
/>
<!--压紧轴计量检测信号亮
1
次的脉冲值-->
<!--压紧轴计量检测信号亮
1
次的脉冲值-->
<
add
key
=
"ComAxisChangeValue"
value
=
"150000"
/>
<
add
key
=
"ComAxisChangeValue"
value
=
"150000"
/>
<
add
key
=
"DebugPosId"
value
=
"1#AC
2_1_1_6
"
/>
<
add
key
=
"DebugPosId"
value
=
"1#AC
1_11_3_20
"
/>
<!--是否有门禁屏蔽功能,=
1
表示有此功能-->
<!--是否有门禁屏蔽功能,=
1
表示有此功能-->
<
add
key
=
"HasDisableDoorControl"
value
=
"1"
/>
<
add
key
=
"HasDisableDoorControl"
value
=
"1"
/>
<
add
key
=
"ACBaudRate"
value
=
"115200"
/>
<
add
key
=
"ACBaudRate"
value
=
"115200"
/>
...
@@ -47,18 +47,21 @@
...
@@ -47,18 +47,21 @@
<
add
key
=
"DOMS"
value
=
"200"
/>
<
add
key
=
"DOMS"
value
=
"200"
/>
<
add
key
=
"SinglePosId"
value
=
"1#AC2_1_1_6"
/>
<
add
key
=
"SinglePosId"
value
=
"1#AC2_1_1_6"
/>
<!--配置文件的表头格式,
0
=中文,
1
=英文-->
<!--配置文件的表头格式,
0
=中文,
1
=英文-->
<
add
key
=
"LibNameType"
value
=
"0"
/>
<
add
key
=
"LibNameType"
value
=
"0"
/>
<
add
key
=
"DefaultPWD"
value
=
"123456"
/>
<
add
key
=
"DefaultPWD"
value
=
"123456"
/>
<!--自动出入库时使用-->
<!--自动出入库时使用-->
<
add
key
=
"LOC"
value
=
"1"
/>
<
add
key
=
"LOC"
value
=
"1"
/>
<!--最多识别多少个二维码-->
<!--最多识别多少个二维码-->
<
add
key
=
"QRCodeCount"
value
=
"1"
/>
<
add
key
=
"QRCodeCount"
value
=
"1"
/>
<
add
key
=
"OpenCycleOut"
value
=
"0"
/>
<
add
key
=
"OpenCycleOut"
value
=
"0"
/>
<!--
IO
模块是否主动上传-->
<
add
key
=
"Tool_P3_Offset"
value
=
"6000"
/>
<
add
key
=
"AIOAutoUpload"
value
=
"0"
/>
<
add
key
=
"Tool_P4_Offset"
value
=
"-6000"
/>
<
add
key
=
"CodeRun"
value
=
"0"
/>
<
add
key
=
"Tool_P5_Offset"
value
=
"-6000"
/>
<
add
key
=
"Tool_P6_Offset"
value
=
"6000"
/>
<
add
key
=
"Tool_TargetSpeed"
value
=
"20"
/>
<
add
key
=
"Tool_TargetPosition"
value
=
"6000"
/>
</
appSettings
>
</
appSettings
>
<
log4net
>
<
log4net
>
<
appender
name
=
"RollingLogFileAppender"
type
=
"log4net.Appender.RollingFileAppender"
>
<
appender
name
=
"RollingLogFileAppender"
type
=
"log4net.Appender.RollingFileAppender"
>
<
file
value
=
"logs/AutoStore1.log"
/>
<
file
value
=
"logs/AutoStore1.log"
/>
<
param
name
=
"Encoding"
value
=
"UTF-8"
/>
<
param
name
=
"Encoding"
value
=
"UTF-8"
/>
...
@@ -73,8 +76,8 @@
...
@@ -73,8 +76,8 @@
<
levelMax
value
=
"ERROR"
/>
<
levelMax
value
=
"ERROR"
/>
</
filter
>
</
filter
>
</
appender
>
</
appender
>
<
appender
name
=
"AIOBOX
Log
"
type
=
"log4net.Appender.RollingFileAppender"
>
<
appender
name
=
"AIOBOX"
type
=
"log4net.Appender.RollingFileAppender"
>
<
file
value
=
"logs/aio/AIOBOX
1
.log"
/>
<
file
value
=
"logs/aio/AIOBOX.log"
/>
<
param
name
=
"Encoding"
value
=
"UTF-8"
/>
<
param
name
=
"Encoding"
value
=
"UTF-8"
/>
<
appendToFile
value
=
"true"
/>
<
appendToFile
value
=
"true"
/>
<
rollingStyle
value
=
"Date"
/>
<
rollingStyle
value
=
"Date"
/>
...
@@ -87,10 +90,10 @@
...
@@ -87,10 +90,10 @@
<
level
value
=
"Info"
/>
<
level
value
=
"Info"
/>
<
appender
-
ref
ref
=
"RollingLogFileAppender"
/>
<
appender
-
ref
ref
=
"RollingLogFileAppender"
/>
</
logger
>
</
logger
>
<
logger
name
=
"AIOBOX
Log
"
>
<
logger
name
=
"AIOBOX"
>
<
level
value
=
"Info"
/>
<
level
value
=
"Info"
/>
<
appender
-
ref
ref
=
"AIOBOX
Log
"
/>
<
appender
-
ref
ref
=
"AIOBOX"
/>
</
logger
>
</
logger
>
<
root
>
<
root
>
<
level
value
=
"INFO"
/>
<
level
value
=
"INFO"
/>
<
appender
-
ref
ref
=
"RollingLogFileAppender"
/>
<
appender
-
ref
ref
=
"RollingLogFileAppender"
/>
...
...
source/DeviceLibrary/DeviceLibrary/IO/AIOBOX/AIOBOXManager.cs
查看文件 @
692849d
...
@@ -9,15 +9,12 @@ using OnlineStore.Common;
...
@@ -9,15 +9,12 @@ using OnlineStore.Common;
using
OnlineStore.LoadCSVLibrary
;
using
OnlineStore.LoadCSVLibrary
;
using
System.Threading.Tasks
;
using
System.Threading.Tasks
;
using
Asa.IOModule
;
using
Asa.IOModule
;
using
System.Windows.Forms
;
namespace
OnlineStore.DeviceLibrary
namespace
OnlineStore.DeviceLibrary
{
{
public
class
AIOBOXManager
:
IOManager
public
class
AIOBOXManager
:
IOManager
{
{
//public static uint DefaultDICount = 16;
//public static uint DefaultDOCount = 16;
public
readonly
ILog
LOGGER
=
LogManager
.
GetLogger
(
MethodBase
.
GetCurrentMethod
().
DeclaringType
);
public
Dictionary
<
string
,
AIOBOX
>
AIOMap
=
new
Dictionary
<
string
,
AIOBOX
>();
public
Dictionary
<
string
,
AIOBOX
>
AIOMap
=
new
Dictionary
<
string
,
AIOBOX
>();
public
Dictionary
<
string
,
List
<
Box_Sta
>>
DIValueMap
=
new
Dictionary
<
string
,
List
<
Box_Sta
>>();
public
Dictionary
<
string
,
List
<
Box_Sta
>>
DIValueMap
=
new
Dictionary
<
string
,
List
<
Box_Sta
>>();
...
@@ -28,63 +25,35 @@ namespace OnlineStore.DeviceLibrary
...
@@ -28,63 +25,35 @@ namespace OnlineStore.DeviceLibrary
private
object
DILock
=
""
;
private
object
DILock
=
""
;
private
object
DOLock
=
""
;
private
object
DOLock
=
""
;
private
List
<
string
>
IoIPLIst
=
new
List
<
string
>();
private
System
.
Timers
.
Timer
conTimer
=
null
;
public
override
void
ConnectionIOList
(
List
<
string
>
DIONameList
)
public
override
void
ConnectionIOList
(
List
<
string
>
DIONameList
)
{
{
if
(
conTimer
==
null
)
{
conTimer
=
new
System
.
Timers
.
Timer
();
conTimer
.
AutoReset
=
true
;
conTimer
.
Interval
=
60000
;
conTimer
.
Elapsed
+=
ConTimer_Elapsed
;
}
conTimer
.
Enabled
=
false
;
IoIPLIst
=
new
List
<
string
>(
DIONameList
);
foreach
(
string
ip
in
DIONameList
)
foreach
(
string
ip
in
DIONameList
)
{
{
ConnectionIP
(
ip
);
ConnectionIP
(
ip
);
}
}
if
(
IoIPLIst
.
Count
>
0
)
{
//启动定时器,1一分钟重连一次
conTimer
.
Start
();
}
}
private
void
ConTimer_Elapsed
(
object
sender
,
System
.
Timers
.
ElapsedEventArgs
e
)
{
try
{
List
<
string
>
list
=
new
List
<
string
>(
IoIPLIst
);
if
(
list
.
Count
>
0
)
{
foreach
(
string
ip
in
list
)
{
LogUtil
.
info
(
"重连AOI :"
+
ip
);
ConnectionIP
(
ip
);
}
}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
"AOI ConTimer_Elapsed 出错: "
+
ex
.
ToString
());
}
}
}
private
bool
isProcess
=
false
;
private
DateTime
lastTime
=
DateTime
.
Now
;
public
void
ConnectionIP
(
string
ioIp
)
public
void
ConnectionIP
(
string
ioIp
)
{
{
bool
autoUpload
=
ConfigAppSettings
.
GetIntValue
(
Setting_Init
.
AIOAutoUpload
).
Equals
(
1
);
AIOBOX
aioBox
=
null
;
AIOBOX
aioBox
=
null
;
if
(
AIOMap
.
ContainsKey
(
ioIp
))
if
(
AIOMap
.
ContainsKey
(
ioIp
))
{
{
aioBox
=
AIOMap
[
ioIp
];
aioBox
=
AIOMap
[
ioIp
];
try
if
(
null
!=
aioBox
)
{
if
(
null
!=
aioBox
)
{
aioBox
.
Close
();
aioBox
=
null
;
}
}
catch
(
Exception
ex
)
{
{
aioBox
.
Close
();
LogUtil
.
error
(
"关闭Io模块【"
+
ioIp
+
"】出错:"
+
ex
.
ToString
());
aioBox
=
null
;
}
}
AIOMap
.
Remove
(
ioIp
);
AIOMap
.
Remove
(
ioIp
);
}
}
...
@@ -96,99 +65,40 @@ namespace OnlineStore.DeviceLibrary
...
@@ -96,99 +65,40 @@ namespace OnlineStore.DeviceLibrary
{
{
DOValueMap
.
Remove
(
ioIp
);
DOValueMap
.
Remove
(
ioIp
);
}
}
int
DIMS
=
ConfigAppSettings
.
GetIntValue
(
"DIMS"
);
if
(
DIMS
<
20
)
int
DILength
=
StoreManager
.
Config
.
GetDILength
(
ioIp
);
{
int
DOLength
=
StoreManager
.
Config
.
GetDOLength
(
ioIp
);
DIMS
=
20
;
string
logName
=
"IO模块["
+
ioIp
+
"] DI["
+
DILength
+
"] DO["
+
DOLength
+
"] "
;
}
int
DOMS
=
ConfigAppSettings
.
GetIntValue
(
"DOMS"
);
if
(
DOMS
<
200
)
{
DOMS
=
200
;
}
int
DILength
=
GetDILength
(
ioIp
);
int
DOLength
=
GetDOLength
(
ioIp
);
string
logName
=
"IO模块["
+
ioIp
+
"] DI["
+
DILength
+
"] DO["
+
DOLength
+
"],["
+
DIMS
+
"] ["
+
DOMS
+
"]"
;
try
try
{
{
// Create new modbus master and add event functions
aioBox
=
new
AIOBOX
(
"AIOBOX"
);
aioBox
=
new
AIOBOX
(
);
aioBox
.
SetType
(
Asa
.
IOModule
.
Box_Type
.
DI
,
DILength
,
Asa
.
IOModule
.
Box_Type
.
DO
,
DOLength
);
aioBox
.
IP
=
ioIp
;
aioBox
.
IP
=
ioIp
;
aioBox
.
Upload
=
false
;
// bool rtn = aioBox.AutoIP(ioIp);
aioBox
.
SetInput
(
Asa
.
IOModule
.
Box_Type
.
DI
,
DILength
);
aioBox
.
SetOutput
(
Asa
.
IOModule
.
Box_Type
.
DO
,
DOLength
);
if
(
autoUpload
)
{
aioBox
.
AutoReadInput
(
true
);
}
else
{
aioBox
.
AutoReadInput
(
true
,
DIMS
);
}
aioBox
.
AutoReadOutput
(
true
,
DOMS
);
aioBox
.
LogOut
=
true
;
aioBox
.
DI_Changed_Event
+=
AioBox_DI_Changed_Event
;
;
aioBox
.
DI_Changed_Event
+=
AioBox_DI_Changed_Event
;
;
aioBox
.
DO_Changed_Event
+=
AioBox_DO_Changed_Event
;
aioBox
.
DO_Changed_Event
+=
AioBox_DO_Changed_Event
;
// aioBox.Log_Out_Event += AioBox_Log_Out_Event;
//aioBox.Log_RxTx_Event += AioBox_Log_RxTx_Event;
AIOMap
.
Add
(
ioIp
,
aioBox
);
LogUtil
.
debug
(
"开始连接"
+
logName
+
",尝试重连3次"
);
LogUtil
.
info
(
"开始连接:"
+
logName
+
":"
);
for
(
int
i
=
1
;
i
<=
3
;
i
++)
aioBox
.
Connect
();
{
bool
result
=
aioBox
.
Connect
();
if
(
result
)
{
LogUtil
.
info
(
"第【"
+
i
+
"】次连接 "
+
logName
+
" 成功:"
+
aioBox
.
ErrInfo
);
Thread
.
Sleep
(
10
);
//读取所有的DO
ReadAllDI
(
ioIp
,
0
);
if
(
IoIPLIst
.
Contains
(
ioIp
))
{
IoIPLIst
.
Remove
(
ioIp
);
}
break
;
}
else
{
LogUtil
.
error
(
"第【"
+
i
+
"】次连接 "
+
logName
+
" 失败:"
+
aioBox
.
ErrInfo
+
""
);
}
Thread
.
Sleep
(
2
);
}
AIOMap
.
Add
(
ioIp
,
aioBox
);
Thread
.
Sleep
(
5
);
//读取所有的DO
ReadAllDI
(
ioIp
,
0
);
Thread
.
Sleep
(
5
);
GC
.
Collect
();
}
}
catch
(
Exception
error
)
catch
(
Exception
error
)
{
{
LogUtil
.
error
(
LOGGER
,
"连接IO模块 "
+
logName
+
" 出错:"
+
error
.
ToString
());
LogUtil
.
error
(
"连接IO模块 "
+
logName
+
" 出错:"
+
error
.
ToString
());
}
}
}
}
private
void
AioBox_Reconnect_Event
(
AIOBOX
box
,
int
times
,
ref
bool
conn
,
Dictionary
<
string
,
string
>
dict
)
{
conn
=
true
;
string
msg
=
"重连AIO块【"
+
box
.
IP
+
"】次数:"
+
times
+
"【"
+
box
.
ErrInfo
+
"】,连接信息如下\r\n"
;
foreach
(
string
key
in
dict
.
Keys
)
{
msg
=
msg
+
"\t"
+
"["
+
key
+
"]=["
+
dict
[
key
]
+
"],"
;
}
LogUtil
.
error
(
msg
);
}
private
DateTime
lastLogTime
=
DateTime
.
Now
;
private
DateTime
lastLogTime
=
DateTime
.
Now
;
private
void
AioBox_Log_Out_Event
(
AIOBOX
box
,
string
[]
s
)
{
foreach
(
string
str
in
s
)
{
LogUtil
.
AIOLog
.
Debug
(
"["
+
box
.
IP
+
"]"
+
str
);
}
}
private
void
AioBox_DI_Changed_Event
(
AIOBOX
box
,
Box_Sta
[]
sta
)
private
void
AioBox_DI_Changed_Event
(
AIOBOX
box
,
Box_Sta
[]
sta
)
{
{
...
@@ -213,10 +123,9 @@ namespace OnlineStore.DeviceLibrary
...
@@ -213,10 +123,9 @@ namespace OnlineStore.DeviceLibrary
LogUtil
.
error
(
"AioBox_DO_Changed_Event出错:"
+
ex
.
ToString
());
LogUtil
.
error
(
"AioBox_DO_Changed_Event出错:"
+
ex
.
ToString
());
}
}
}
}
private
void
UpdateAllDI
(
string
ip
,
Box_Sta
[]
sta
)
private
void
UpdateAllDI
(
string
ip
,
Box_Sta
[]
sta
)
{
{
if
(
sta
!=
null
&&
sta
.
Length
>=
GetDILength
(
ip
))
if
(
sta
!=
null
&&
sta
.
Length
>=
StoreManager
.
Config
.
GetDILength
(
ip
))
{
{
string
updateDi
=
"["
+
ip
+
"]:"
;
string
updateDi
=
"["
+
ip
+
"]:"
;
bool
needUpdate
=
false
;
bool
needUpdate
=
false
;
...
@@ -230,14 +139,6 @@ namespace OnlineStore.DeviceLibrary
...
@@ -230,14 +139,6 @@ namespace OnlineStore.DeviceLibrary
}
}
else
else
{
{
//foreach(Box_Sta s in sta)
//{
// updateDi += s.ToString() + ",";
//}
//if (ip.Equals("192.168.201.61"))
//{
// LogUtil.info(updateDi);
//}
for
(
int
i
=
0
;
i
<
newList
.
Count
;
i
++)
for
(
int
i
=
0
;
i
<
newList
.
Count
;
i
++)
{
{
if
(!(
oldList
[
i
].
Equals
(
newList
[
i
])))
if
(!(
oldList
[
i
].
Equals
(
newList
[
i
])))
...
@@ -262,7 +163,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -262,7 +163,7 @@ namespace OnlineStore.DeviceLibrary
}
}
private
void
UpdateAllDO
(
string
ip
,
Box_Sta
[]
sta
)
private
void
UpdateAllDO
(
string
ip
,
Box_Sta
[]
sta
)
{
{
if
(
sta
!=
null
&&
sta
.
Length
>=
GetDOLength
(
ip
))
if
(
sta
!=
null
&&
sta
.
Length
>=
StoreManager
.
Config
.
GetDOLength
(
ip
))
{
{
bool
needUpdate
=
false
;
bool
needUpdate
=
false
;
...
@@ -270,12 +171,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -270,12 +171,7 @@ namespace OnlineStore.DeviceLibrary
newList
.
AddRange
(
sta
);
newList
.
AddRange
(
sta
);
List
<
Box_Sta
>
oldList
=
null
;
List
<
Box_Sta
>
oldList
=
null
;
DOValueMap
.
TryGetValue
(
ip
,
out
oldList
);
DOValueMap
.
TryGetValue
(
ip
,
out
oldList
);
//string result = "UpdateAllDO ip[" + ip + "], sta :";
//for (int i = 0; i < newList.Count; i++)
//{
// result += newList[i] + ",";
//}
//LogUtil.info(result);
if
(
oldList
==
null
||
oldList
.
Count
.
Equals
(
newList
.
Count
).
Equals
(
false
))
if
(
oldList
==
null
||
oldList
.
Count
.
Equals
(
newList
.
Count
).
Equals
(
false
))
{
{
needUpdate
=
true
;
needUpdate
=
true
;
...
@@ -303,17 +199,6 @@ namespace OnlineStore.DeviceLibrary
...
@@ -303,17 +199,6 @@ namespace OnlineStore.DeviceLibrary
}
}
}
}
}
}
//else
//{
// if (sta == null)
// {
// LogUtil.error("UpdateAllDO ip[" + ip + "], sta=null");
// }
// else
// {
// LogUtil.error(" UpdateAllDO ip[" + ip + "], sta.Length=" + sta.Length);
// }
//}
}
}
...
@@ -323,12 +208,9 @@ namespace OnlineStore.DeviceLibrary
...
@@ -323,12 +208,9 @@ namespace OnlineStore.DeviceLibrary
{
{
foreach
(
AIOBOX
aio
in
AIOMap
.
Values
)
foreach
(
AIOBOX
aio
in
AIOMap
.
Values
)
{
{
ushort
length
=
GetDOLength
(
aio
.
IP
);
ushort
length
=
StoreManager
.
Config
.
GetDOLength
(
aio
.
IP
);
for
(
ushort
i
=
0
;
i
<
length
;
i
++)
for
(
ushort
i
=
0
;
i
<
length
;
i
++)
{
{
// ushort u = (ushort)(i + length);
// ushort u = (ushort)(i );
// Box_Addr addr = GetAddr(u);
aio
.
WriteDO
(
i
,
Box_Sta
.
Off
);
aio
.
WriteDO
(
i
,
Box_Sta
.
Off
);
}
}
}
}
...
@@ -336,27 +218,18 @@ namespace OnlineStore.DeviceLibrary
...
@@ -336,27 +218,18 @@ namespace OnlineStore.DeviceLibrary
public
override
void
CloseAllConnection
()
public
override
void
CloseAllConnection
()
{
{
try
foreach
(
AIOBOX
aio
in
AIOMap
.
Values
)
{
{
if
(
conTimer
!=
null
)
try
{
conTimer
.
Stop
();
}
if
(
AIOMap
==
null
)
{
{
return
;
aio
.
Close
()
;
}
}
foreach
(
AIOBOX
aio
in
AIOMap
.
Values
)
catch
(
Exception
ex
)
{
{
aio
.
Close
(
);
LogUtil
.
error
(
"aio.Close出错:"
+
ex
.
ToString
()
);
}
}
}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
"AIO CloseAllConnection Error:"
+
ex
.
ToString
());
}
AIOMap
.
Clear
();
AIOMap
.
Clear
();
}
}
public
override
void
WriteSingleDO
(
string
ioIp
,
byte
slaveId
,
ushort
StartAddress
,
IO_VALUE
onOff
)
public
override
void
WriteSingleDO
(
string
ioIp
,
byte
slaveId
,
ushort
StartAddress
,
IO_VALUE
onOff
)
{
{
...
@@ -366,41 +239,30 @@ namespace OnlineStore.DeviceLibrary
...
@@ -366,41 +239,30 @@ namespace OnlineStore.DeviceLibrary
AIOBOX
aioBox
=
getAIO
(
ioIp
);
AIOBOX
aioBox
=
getAIO
(
ioIp
);
if
(
aioBox
!=
null
)
if
(
aioBox
!=
null
)
{
{
// Box_Addr add = GetAddr(StartAddress);
bool
result
=
aioBox
.
WriteDO
(
StartAddress
,
GetBox_Sta
(
onOff
));
if
(!
result
)
for
(
int
i
=
1
;
i
<=
3
;
i
++)
{
{
bool
result
=
aioBox
.
WriteDO
(
StartAddress
,
GetBox_Sta
(
onOff
));
LogUtil
.
error
(
"AIO WriteSingleDO ["
+
ioIp
+
"] ["
+
StartAddress
+
"] 失败:"
);
if
(!
result
)
{
LogUtil
.
error
(
"AIO WriteSingleDO ["
+
StartAddress
+
"] 第"
+
i
+
"次失败:"
+
aioBox
.
ErrInfo
);
}
else
{
break
;
}
}
}
}
}
else
else
{
{
LogUtil
.
error
(
LOGGER
,
"WriteSingleDO出错 没有连接IO模块:"
+
ioIp
);
LogUtil
.
error
(
"WriteSingleDO出错 没有连接IO模块:"
+
ioIp
);
}
}
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
L
OGGER
.
Error
(
"
出错啦:"
+
ex
.
ToString
());
L
ogUtil
.
error
(
"AIO WriteSingleDO ["
+
ioIp
+
"] ["
+
StartAddress
+
"]
出错啦:"
+
ex
.
ToString
());
}
}
}
}
public
override
void
WriteSingleDO
(
string
ioIp
,
byte
slaveId
,
ushort
StartAddress
,
IO_VALUE
onOff
,
int
mSeconds
)
public
override
void
WriteSingleDO
(
string
ioIp
,
byte
slaveId
,
ushort
StartAddress
,
IO_VALUE
onOff
,
int
mSeconds
)
{
{
try
try
{
{
AIOBOX
aioBox
=
getAIO
(
ioIp
);
AIOBOX
aioBox
=
getAIO
(
ioIp
);
Box_Sta
currBox_Sta
=
GetBox_Sta
(
onOff
);
if
(
aioBox
!=
null
)
if
(
aioBox
!=
null
)
{
{
// Box_Addr add = GetAddr(StartAddress
);
Box_Sta
currBox_Sta
=
GetBox_Sta
(
onOff
);
aioBox
.
WriteDO
(
StartAddress
,
currBox_Sta
);
aioBox
.
WriteDO
(
StartAddress
,
currBox_Sta
);
//写入之后,等待指定间隔后回写
//写入之后,等待指定间隔后回写
...
@@ -410,24 +272,25 @@ namespace OnlineStore.DeviceLibrary
...
@@ -410,24 +272,25 @@ namespace OnlineStore.DeviceLibrary
try
try
{
{
aioBox
.
WriteDO
(
StartAddress
,
aioBox
.
ReverseStatus
(
currBox_Sta
));
aioBox
.
WriteDO
(
StartAddress
,
aioBox
.
ReverseStatus
(
currBox_Sta
));
LogUtil
.
debug
(
LOGGER
,
"**********定时回写入 IO【"
+
ioIp
+
","
+
StartAddress
+
",
值"
+
aioBox
.
ReverseStatus
(
currBox_Sta
)
+
"】:"
);
LogUtil
.
debug
(
"**********定时回写入 IO ["
+
ioIp
+
"] ["
+
StartAddress
+
"]
值"
+
aioBox
.
ReverseStatus
(
currBox_Sta
)
+
"】:"
);
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
LogUtil
.
error
(
LOGGER
,
"**********定时回写入 出错:"
+
ex
.
StackTrace
);
LogUtil
.
error
(
"**********定时回写入 出错:"
+
ex
.
ToString
()
);
}
}
};
};
mytimer
.
AutoReset
=
false
;
//设置是否自动重启,即自动执行多次;
mytimer
.
AutoReset
=
false
;
//设置是否自动重启,即自动执行多次;
mytimer
.
Enabled
=
true
;
//是否执行System.Timers.Timer.Elapsed事件mytask;
mytimer
.
Enabled
=
true
;
//是否执行System.Timers.Timer.Elapsed事件mytask;
}
}
else
else
{
{
LogUtil
.
error
(
LOGGER
,
"WriteSingleDO
出错 没有连接IO模块:"
+
ioIp
);
LogUtil
.
error
(
"AIO WriteSingleDO ["
+
ioIp
+
"] ["
+
StartAddress
+
"]
出错 没有连接IO模块:"
+
ioIp
);
}
}
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
LogUtil
.
error
(
"
WriteSingleDO
出错:"
+
ioIp
);
LogUtil
.
error
(
"
AIO WriteSingleDO ["
+
ioIp
+
"] ["
+
StartAddress
+
"]
出错:"
+
ioIp
);
}
}
}
}
public
override
void
ReadAllDI
(
string
ioIp
,
byte
slaveId
)
public
override
void
ReadAllDI
(
string
ioIp
,
byte
slaveId
)
...
@@ -437,13 +300,13 @@ namespace OnlineStore.DeviceLibrary
...
@@ -437,13 +300,13 @@ namespace OnlineStore.DeviceLibrary
AIOBOX
aioBox
=
getAIO
(
ioIp
);
AIOBOX
aioBox
=
getAIO
(
ioIp
);
if
(
aioBox
!=
null
)
if
(
aioBox
!=
null
)
{
{
Box_Sta
[]
allDi
=
aioBox
.
ReadDI
(
0
,
GetDILength
(
ioIp
));
Box_Sta
[]
allDi
=
aioBox
.
ReadDI
(
0
,
StoreManager
.
Config
.
GetDILength
(
ioIp
));
UpdateAllDI
(
ioIp
,
allDi
);
UpdateAllDI
(
ioIp
,
allDi
);
}
}
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
LogUtil
.
error
(
"ReadAllDI出错:"
+
ioIp
);
LogUtil
.
error
(
"ReadAllDI
["
+
ioIp
+
"]
出错:"
+
ioIp
);
}
}
}
}
public
override
void
ReadAllDO
(
string
ioIp
,
byte
slaveId
)
public
override
void
ReadAllDO
(
string
ioIp
,
byte
slaveId
)
...
@@ -454,27 +317,24 @@ namespace OnlineStore.DeviceLibrary
...
@@ -454,27 +317,24 @@ namespace OnlineStore.DeviceLibrary
if
(
aioBox
!=
null
)
if
(
aioBox
!=
null
)
{
{
// int startIndex = StoreManager.Config.GetDILength(ioIp);
// int startIndex = StoreManager.Config.GetDILength(ioIp);
Box_Sta
[]
allDO
=
aioBox
.
ReadDO
(
0
,
GetDOLength
(
ioIp
));
Box_Sta
[]
allDO
=
aioBox
.
ReadDO
(
0
,
StoreManager
.
Config
.
GetDOLength
(
ioIp
));
UpdateAllDO
(
ioIp
,
allDO
);
UpdateAllDO
(
ioIp
,
allDO
);
}
}
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
LogUtil
.
error
(
"ReadAllDO出错:"
+
ioIp
);
LogUtil
.
error
(
"ReadAllDO
["
+
ioIp
+
"]
出错:"
+
ioIp
);
}
}
}
}
public
override
IO_VALUE
GetDOValue
(
string
ioIP
,
byte
slaveId
,
ushort
StartAddress
)
public
override
IO_VALUE
GetDOValue
(
string
ioIP
,
byte
slaveId
,
ushort
StartAddress
)
{
{
IO_VALUE
value
=
IO_VALUE
.
LOW
;
IO_VALUE
value
=
IO_VALUE
.
None
;
try
try
{
{
AIOBOX
aioBox
=
getAIO
(
ioIP
);
AIOBOX
aioBox
=
getAIO
(
ioIP
);
if
(
aioBox
!=
null
)
if
(
aioBox
!=
null
)
{
{
Box_Sta
sta
=
Box_Sta
.
Off
;
Box_Sta
sta
=
Box_Sta
.
Off
;
// Box_Addr addr = GetAddr(StartAddress);
// int index = (int)StartAddress - (int)StoreManager.Config.GetDILength(ioIP);
if
(
DOValueMap
.
ContainsKey
(
ioIP
)
&&
DOValueMap
[
ioIP
].
Count
>
StartAddress
)
if
(
DOValueMap
.
ContainsKey
(
ioIP
)
&&
DOValueMap
[
ioIP
].
Count
>
StartAddress
)
{
{
sta
=
DOValueMap
[
ioIP
][
StartAddress
];
sta
=
DOValueMap
[
ioIP
][
StartAddress
];
...
@@ -485,49 +345,61 @@ namespace OnlineStore.DeviceLibrary
...
@@ -485,49 +345,61 @@ namespace OnlineStore.DeviceLibrary
{
{
value
=
IO_VALUE
.
HIGH
;
value
=
IO_VALUE
.
HIGH
;
}
}
else
{
value
=
IO_VALUE
.
LOW
;
}
}
}
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
LogUtil
.
error
(
"GetDOValue 出错:"
+
ex
.
ToString
());
LogUtil
.
error
(
"GetDOValue
["
+
ioIP
+
"] ["
+
StartAddress
+
"]
出错:"
+
ex
.
ToString
());
}
}
return
value
;
return
value
;
}
}
public
override
IO_VALUE
GetDIValue
(
string
ioIP
,
byte
slaveId
,
ushort
StartAddress
)
public
override
IO_VALUE
GetDIValue
(
string
ioIP
,
byte
slaveId
,
ushort
StartAddress
)
{
{
IO_VALUE
value
=
IO_VALUE
.
LOW
;
IO_VALUE
value
=
IO_VALUE
.
None
;
try
for
(
int
i
=
1
;
i
<=
3
;
i
++)
{
{
AIOBOX
aioBox
=
getAIO
(
ioIP
);
try
if
(
aioBox
!=
null
)
{
{
Box_Sta
sta
=
Box_Sta
.
Off
;
AIOBOX
aioBox
=
getAIO
(
ioIP
);
// Box_Addr addr = GetAddr(StartAddress);
if
(
aioBox
!=
null
)
int
index
=
StartAddress
;
if
(
DIValueMap
.
ContainsKey
(
ioIP
)
&&
DIValueMap
[
ioIP
].
Count
>
index
)
{
sta
=
DIValueMap
[
ioIP
][
index
];
}
else
{
{
sta
=
aioBox
.
ReadDI
(
StartAddress
);
Box_Sta
sta
=
Box_Sta
.
Off
;
}
// Box_Addr addr = GetAddr(StartAddress);
if
(
sta
.
Equals
(
Box_Sta
.
On
))
int
index
=
StartAddress
;
{
if
(
DIValueMap
.
ContainsKey
(
ioIP
)
&&
DIValueMap
[
ioIP
].
Count
>
index
)
value
=
IO_VALUE
.
HIGH
;
{
sta
=
DIValueMap
[
ioIP
][
index
];
}
else
{
sta
=
aioBox
.
ReadDI
(
StartAddress
);
}
if
(
sta
.
Equals
(
Box_Sta
.
On
))
{
value
=
IO_VALUE
.
HIGH
;
}
else
{
value
=
IO_VALUE
.
LOW
;
}
}
}
break
;
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
" 第【"
+
i
+
"】次 GetDIValue ["
+
ioIP
+
"] ["
+
StartAddress
+
"] 出错:"
+
ex
.
ToString
());
}
}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
"GetDIValue 出错:"
+
ex
.
ToString
());
}
}
return
value
;
return
value
;
}
}
public
override
IO_VALUE
GetIOValue
(
ConfigIO
configIO
)
public
override
IO_VALUE
GetIOValue
(
ConfigIO
configIO
)
{
{
IO_VALUE
value
=
IO_VALUE
.
LOW
;
IO_VALUE
value
=
IO_VALUE
.
None
;
try
try
{
{
if
(
configIO
.
ProType
.
Equals
(
ConfigItemType
.
DI
))
if
(
configIO
.
ProType
.
Equals
(
ConfigItemType
.
DI
))
...
@@ -541,15 +413,11 @@ namespace OnlineStore.DeviceLibrary
...
@@ -541,15 +413,11 @@ namespace OnlineStore.DeviceLibrary
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
LogUtil
.
error
(
LOGGER
,
" GetIOValue
获取数据出错:"
+
ex
.
ToString
());
LogUtil
.
error
(
" GetIOValue ["
+
configIO
.
DeviceName
+
"] ["
+
configIO
.
GetIOAddr
()
+
"]
获取数据出错:"
+
ex
.
ToString
());
}
}
return
value
;
return
value
;
}
}
//private Box_Addr GetAddr(ushort StartAddress)
//{
// return (Box_Addr)(StartAddress);
//}
private
Box_Sta
GetBox_Sta
(
IO_VALUE
onOff
)
private
Box_Sta
GetBox_Sta
(
IO_VALUE
onOff
)
{
{
if
(
onOff
.
Equals
(
IO_VALUE
.
HIGH
))
if
(
onOff
.
Equals
(
IO_VALUE
.
HIGH
))
...
@@ -571,5 +439,6 @@ namespace OnlineStore.DeviceLibrary
...
@@ -571,5 +439,6 @@ namespace OnlineStore.DeviceLibrary
}
}
return
aioBox
;
return
aioBox
;
}
}
}
}
}
}
source/LoadCVSLibrary/storeConfig/config/Store_IO_Type.cs
查看文件 @
692849d
...
@@ -9,6 +9,7 @@ namespace OnlineStore.LoadCSVLibrary
...
@@ -9,6 +9,7 @@ namespace OnlineStore.LoadCSVLibrary
{
{
public
enum
IO_VALUE
public
enum
IO_VALUE
{
{
None
=-
1
,
/// <summary>
/// <summary>
/// 低位
/// 低位
/// </summary>
/// </summary>
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论