Commit 4ec025a9 LN

增加升降轴调位置功能

1 个父辈 c47fe5e0
<?xml version="1.0"?>
<doc>
<assembly>
<name>AIOBOX</name>
</assembly>
<members>
<member name="T:Asa.AIOBOX.AIOBOX_32">
<summary>
AIOBOX-32
</summary>
</member>
<member name="T:Asa.AIOBOX.AIOBOX_32.DI_Changed">
<summary>
自动读取DI委托
</summary>
<param name="box">AIOBOX</param>
<param name="sta">所有DI状态</param>
</member>
<member name="E:Asa.AIOBOX.AIOBOX_32.DI_Changed_Event">
<summary>
自动读取DI事件触发
</summary>
</member>
<member name="T:Asa.AIOBOX.AIOBOX_32.DO_Changed">
<summary>
自动读取DO委托
</summary>
<param name="box">AIOBOX</param>
<param name="sta">所有DO状态</param>
</member>
<member name="E:Asa.AIOBOX.AIOBOX_32.DO_Changed_Event">
<summary>
自动读取DO事件触发
</summary>
</member>
<member name="M:Asa.AIOBOX.AIOBOX_32.#ctor">
<summary>
AIOBOX-32
</summary>
</member>
<member name="P:Asa.AIOBOX.AIOBOX_32.IP">
<summary>
IP地址
</summary>
</member>
<member name="P:Asa.AIOBOX.AIOBOX_32.Mask">
<summary>
子网掩码
</summary>
</member>
<member name="P:Asa.AIOBOX.AIOBOX_32.Gateway">
<summary>
子网网关
</summary>
</member>
<member name="P:Asa.AIOBOX.AIOBOX_32.Port">
<summary>
ModBus端口
</summary>
</member>
<member name="P:Asa.AIOBOX.AIOBOX_32.IsConn">
<summary>
是否连接
</summary>
</member>
<member name="P:Asa.AIOBOX.AIOBOX_32.ErrInfo">
<summary>
错误信息
</summary>
</member>
<member name="P:Asa.AIOBOX.AIOBOX_32.AutoReadDI">
<summary>
自动读取DI状态,触发DI_Changed_Event
</summary>
</member>
<member name="P:Asa.AIOBOX.AIOBOX_32.AutoReadDO">
<summary>
自动读取DO状态,触发DO_Changed_Event
</summary>
</member>
<member name="M:Asa.AIOBOX.AIOBOX_32.Connect">
<summary>
连接
</summary>
<returns></returns>
</member>
<member name="M:Asa.AIOBOX.AIOBOX_32.Close">
<summary>
关闭连接
</summary>
</member>
<member name="M:Asa.AIOBOX.AIOBOX_32.ReverseStatus(Asa.AIOBOX.Status)">
<summary>
相反状态
</summary>
<param name="sta"></param>
<returns></returns>
</member>
<member name="M:Asa.AIOBOX.AIOBOX_32.WriteDO(Asa.AIOBOX.Addr,Asa.AIOBOX.Status)">
<summary>
写入单个DO
</summary>
<param name="add"></param>
<param name="sta"></param>
<returns></returns>
</member>
<member name="M:Asa.AIOBOX.AIOBOX_32.WriteDO_Reverse(Asa.AIOBOX.Addr,Asa.AIOBOX.Status@)">
<summary>
先把状态取反,然后写入单个DO
</summary>
<param name="add"></param>
<param name="sta"></param>
<returns></returns>
</member>
<member name="M:Asa.AIOBOX.AIOBOX_32.WriteDO(Asa.AIOBOX.Addr,Asa.AIOBOX.Status[])">
<summary>
写入多个DO
</summary>
<param name="add"></param>
<param name="sta"></param>
<returns></returns>
</member>
<member name="M:Asa.AIOBOX.AIOBOX_32.ReadDO(Asa.AIOBOX.Addr,Asa.AIOBOX.Status@)">
<summary>
读取单个DO
</summary>
<param name="add"></param>
<param name="sta"></param>
<returns></returns>
</member>
<member name="M:Asa.AIOBOX.AIOBOX_32.ReadDO(Asa.AIOBOX.Addr,System.UInt32,Asa.AIOBOX.Status[]@)">
<summary>
读取多个DO
</summary>
<param name="add">起始地址</param>
<param name="count">数量</param>
<param name="sta">状态</param>
<returns></returns>
</member>
<member name="M:Asa.AIOBOX.AIOBOX_32.ReadDI(Asa.AIOBOX.Addr,Asa.AIOBOX.Status@)">
<summary>
读取单个DI
</summary>
<param name="add"></param>
<param name="sta"></param>
<returns></returns>
</member>
<member name="M:Asa.AIOBOX.AIOBOX_32.ReadDI(Asa.AIOBOX.Addr,System.UInt32,Asa.AIOBOX.Status[]@)">
<summary>
读取多个DI
</summary>
<param name="add"></param>
<param name="count"></param>
<param name="sta"></param>
<returns></returns>
</member>
<member name="M:Asa.AIOBOX.AIOBOX_32.Command(System.Byte[]@)">
<summary>
命令,前7个字节
</summary>
<param name="data"></param>
</member>
<member name="M:Asa.AIOBOX.AIOBOX_32.Target(System.IAsyncResult)">
<summary>
回调函数,开启监听线程
</summary>
<param name="args"></param>
</member>
<member name="M:Asa.AIOBOX.AIOBOX_32.Listen">
<summary>
监听结果线程,把读取到的数据保存到buff
</summary>
</member>
<member name="M:Asa.AIOBOX.AIOBOX_32.Auto_Read_DIO">
<summary>
自动读取DIO线程
</summary>
</member>
<member name="M:Asa.AIOBOX.AIOBOX_32.Trigger_DIO">
<summary>
触发DIO改变事件
</summary>
</member>
<member name="M:Asa.AIOBOX.AIOBOX_32.ReadDI">
<summary>
读取所有DI状态
</summary>
<returns></returns>
</member>
<member name="M:Asa.AIOBOX.AIOBOX_32.ReadDO">
<summary>
读取所有DO状态
</summary>
<returns></returns>
</member>
<member name="T:Asa.AIOBOX.Reg">
<summary>
寄存器
</summary>
</member>
<member name="F:Asa.AIOBOX.Reg.ID">
<summary>
标识
</summary>
</member>
<member name="F:Asa.AIOBOX.Reg.Text">
<summary>
显示文本
</summary>
</member>
<member name="F:Asa.AIOBOX.Reg.Addr">
<summary>
寄存器地址
</summary>
</member>
<member name="F:Asa.AIOBOX.Reg.Status">
<summary>
当前的状态
</summary>
</member>
<member name="M:Asa.AIOBOX.Reg.#ctor(Asa.AIOBOX.Addr)">
<summary>
寄存器,文本空,状态OFF
</summary>
<param name="address">地址</param>
</member>
<member name="M:Asa.AIOBOX.Reg.#ctor(System.String,Asa.AIOBOX.Addr)">
<summary>
寄存器,状态OFF
</summary>
<param name="text">文本</param>
<param name="addr">地址</param>
</member>
<member name="M:Asa.AIOBOX.Reg.#ctor(System.Int32,System.String,Asa.AIOBOX.Addr)">
<summary>
寄存器,状态OFF
</summary>
<param name="id">标志</param>
<param name="text">文本</param>
<param name="addr">地址</param>
</member>
<member name="M:Asa.AIOBOX.Reg.#ctor(System.String,Asa.AIOBOX.Addr,Asa.AIOBOX.Status)">
<summary>
寄存器
</summary>
<param name="text">文本</param>
<param name="addr">地址</param>
<param name="status">状态</param>
</member>
<member name="M:Asa.AIOBOX.Reg.#ctor(System.Int32,System.String,Asa.AIOBOX.Addr,Asa.AIOBOX.Status)">
<summary>
寄存器
</summary>
<param name="id">标志</param>
<param name="text">文本</param>
<param name="address">地址</param>
<param name="status">状态</param>
</member>
<member name="T:Asa.AIOBOX.Addr">
<summary>
寄存器地址
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DI_1">
<summary>
输入点,A1
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DI_2">
<summary>
输入点,A2
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DI_3">
<summary>
输入点,A3
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DI_4">
<summary>
输入点,A4
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DI_5">
<summary>
输入点,A5
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DI_6">
<summary>
输入点,A6
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DI_7">
<summary>
输入点,A7
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DI_8">
<summary>
输入点,A8
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DI_9">
<summary>
输入点,A9
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DI_10">
<summary>
输入点,A10
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DI_11">
<summary>
输入点,A11
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DI_12">
<summary>
输入点,A12
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DI_13">
<summary>
输入点,A13
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DI_14">
<summary>
输入点,A14
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DI_15">
<summary>
输入点,A15
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DI_16">
<summary>
输入点,A16
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DO_1">
<summary>
输出点,B1
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DO_2">
<summary>
输出点,B2
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DO_3">
<summary>
输出点,B3
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DO_4">
<summary>
输出点,B4
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DO_5">
<summary>
输出点,B5
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DO_6">
<summary>
输出点,B6
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DO_7">
<summary>
输出点,B7
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DO_8">
<summary>
输出点,B8
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DO_9">
<summary>
输出点,B9
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DO_10">
<summary>
输出点,B10
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DO_11">
<summary>
输出点,B11
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DO_12">
<summary>
输出点,B12
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DO_13">
<summary>
输出点,B13
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DO_14">
<summary>
输出点,B14
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DO_15">
<summary>
输出点,B15
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.DO_16">
<summary>
输出点,B16
</summary>
</member>
<member name="F:Asa.AIOBOX.Addr.NONE">
<summary>
</summary>
</member>
<member name="T:Asa.AIOBOX.Status">
<summary>
寄存器状态
</summary>
</member>
<member name="F:Asa.AIOBOX.Status.Off">
<summary>
断开,关闭,低电平
</summary>
</member>
<member name="F:Asa.AIOBOX.Status.On">
<summary>
闭合,打开,高电平
</summary>
</member>
</members>
</doc>
此文件类型无法预览
此文件类型无法预览
...@@ -9,6 +9,30 @@ ...@@ -9,6 +9,30 @@
AIOBOX操作类 AIOBOX操作类
</summary> </summary>
</member> </member>
<member name="F:Asa.IOModule.AIOBOX.suspend">
<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.NET_SLEEP">
<summary>
监听网络接收数据的间隔
必须小于SEND_SLEEP
</summary>
</member>
<member name="F:Asa.IOModule.AIOBOX.TRIG_SLEEP">
<summary>
触发DIO状态事件的间隔
</summary>
</member>
<member name="T:Asa.IOModule.AIOBOX.DI_Changed"> <member name="T:Asa.IOModule.AIOBOX.DI_Changed">
<summary> <summary>
自动读取DI委托 自动读取DI委托
...@@ -33,41 +57,28 @@ ...@@ -33,41 +57,28 @@
自动读取DO事件触发 自动读取DO事件触发
</summary> </summary>
</member> </member>
<member name="T:Asa.IOModule.AIOBOX.Log_Out"> <member name="T:Asa.IOModule.AIOBOX.AI_Changed">
<summary>
日志输出
</summary>
<param name="box"></param>
<param name="s"></param>
</member>
<member name="E:Asa.IOModule.AIOBOX.Log_Out_Event">
<summary>
日志输出事件
</summary>
</member>
<member name="T:Asa.IOModule.AIOBOX.Log_RxTx">
<summary> <summary>
日志输出 自动读取AI委托
</summary> </summary>
<param name="box"></param> <param name="box">AIOBOX</param>
<param name="s"></param> <param name="val">所有AI的值</param>
</member> </member>
<member name="E:Asa.IOModule.AIOBOX.Log_RxTx_Event"> <member name="E:Asa.IOModule.AIOBOX.AI_Changed_Event">
<summary> <summary>
日志输出事件,发送命令的标识减去接收命令的标识 自动读取AI事件触发
</summary> </summary>
</member> </member>
<member name="T:Asa.IOModule.AIOBOX.Reconnect"> <member name="T:Asa.IOModule.AIOBOX.AO_Changed">
<summary> <summary>
断开重连 自动读取AO委托
</summary> </summary>
<param name="box"></param> <param name="box">AIOBOX</param>
<param name="times">断开次数</param> <param name="val">所有AO的值</param>
<param name="conn"></param>
</member> </member>
<member name="E:Asa.IOModule.AIOBOX.Reconnect_Event"> <member name="E:Asa.IOModule.AIOBOX.AO_Changed_Event">
<summary> <summary>
断开重连事件 自动读取AO事件触发
</summary> </summary>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.#ctor"> <member name="M:Asa.IOModule.AIOBOX.#ctor">
...@@ -95,15 +106,56 @@ ...@@ -95,15 +106,56 @@
错误信息 错误信息
</summary> </summary>
</member> </member>
<member name="P:Asa.IOModule.AIOBOX.LogOutDir">
<summary>
日志输出目录
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.LogOut"> <member name="P:Asa.IOModule.AIOBOX.LogOut">
<summary> <summary>
日志输出 错误日志输出,默认true
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.InputCount">
<summary>
输入总数
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.OutputCount">
<summary>
输出总数
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.InputReadSleep">
<summary>
自动读取DI间隔
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.OutputReadSleep">
<summary>
自动读取DO间隔
</summary> </summary>
</member> </member>
<member name="P:Asa.IOModule.AIOBOX.Type"> <member name="M:Asa.IOModule.AIOBOX.SetInput(Asa.IOModule.Box_Type,System.Int32)">
<summary> <summary>
模块的类型 设置输入端
</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>
<param name="localIP">本地IP地址</param>
<returns></returns>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.Connect"> <member name="M:Asa.IOModule.AIOBOX.Connect">
<summary> <summary>
...@@ -116,62 +168,92 @@ ...@@ -116,62 +168,92 @@
关闭连接 关闭连接
</summary> </summary>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.AutoReadDI(System.Boolean,System.Int32)"> <member name="M:Asa.IOModule.AIOBOX.AutoReadInput(System.Boolean,System.Int32)">
<summary> <summary>
自动读取DI状态,触发DI_Changed_Event 自动读取输入端,触发事件
</summary> </summary>
<param name="read">是否自动读取</param> <param name="read">是否自动读取</param>
<param name="sleep">间隔,必须大于10ms</param> <param name="sleep">间隔,必须大于15ms</param>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.AutoReadDO(System.Boolean,System.Int32)"> <member name="M:Asa.IOModule.AIOBOX.AutoReadOutput(System.Boolean,System.Int32)">
<summary> <summary>
自动读取DO状态,触发DO_Changed_Event 自动读取输出端,触发事件
</summary> </summary>
<param name="read">是否自动读取</param> <param name="read">是否自动读取</param>
<param name="sleep">间隔,必须大于10ms</param> <param name="sleep">间隔,必须大于10ms</param>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.ReverseStatus(Asa.IOModule.Box_Sta)"> <member name="M:Asa.IOModule.AIOBOX.ReverseStatus(Asa.IOModule.Box_Sta)">
<summary> <summary>
相反状态 相反状态(ON/OFF)
</summary> </summary>
<param name="sta"></param> <param name="sta"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.ReadDI(Asa.IOModule.Box_Addr)"> <member name="M:Asa.IOModule.AIOBOX.ReadDI(System.Int32)">
<summary>
读取单个DI输入状态(ON/OFF)
</summary>
<param name="add">输入地址,从0开始</param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadDI(System.Int32,System.Int32)">
<summary>
读取多个DI输入状态(ON/OFF)
</summary>
<param name="add">起始地址,从0开始</param>
<param name="count">数量</param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadAI(System.Int32)">
<summary>
读取单个AI模拟量的值
</summary>
<param name="add">模拟量地址,从0开始</param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadAI(System.Int32,System.Int32)">
<summary>
读取多个AI模拟量的值
</summary>
<param name="add">起始地址,从0开始</param>
<param name="count">数量</param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadDO(System.Int32)">
<summary> <summary>
读取单个DI 读取单个DO输出状态(ON/OFF)
</summary> </summary>
<param name="add"></param> <param name="add">输出地址,从0开始</param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.ReadDI(Asa.IOModule.Box_Addr,System.Int32)"> <member name="M:Asa.IOModule.AIOBOX.ReadDO(System.Int32,System.Int32)">
<summary> <summary>
读取多个DI 读取多个DO输出状态(ON/OFF)
</summary> </summary>
<param name="add"></param> <param name="add">起始地址,从0开始</param>
<param name="count"></param> <param name="count">数量</param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.ReadDO(Asa.IOModule.Box_Addr)"> <member name="M:Asa.IOModule.AIOBOX.ReadAO(System.Int32)">
<summary> <summary>
读取单个DO 读取单个AO模拟量的值
</summary> </summary>
<param name="add"></param> <param name="add">输出地址,从0开始</param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.ReadDO(Asa.IOModule.Box_Addr,System.Int32)"> <member name="M:Asa.IOModule.AIOBOX.ReadAO(System.Int32,System.Int32)">
<summary> <summary>
读取多个DO 读取多个AO模拟量的值
</summary> </summary>
<param name="add"></param> <param name="add">起始地址,从0开始</param>
<param name="count"></param> <param name="count">数量</param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.WriteDO(Asa.IOModule.Box_Addr,Asa.IOModule.Box_Sta)"> <member name="M:Asa.IOModule.AIOBOX.WriteDO(System.Int32,Asa.IOModule.Box_Sta)">
<summary> <summary>
写入单个DO 写入单个DO输出状态(ON/OFF)
</summary> </summary>
<param name="add"></param> <param name="add">输出地址,从0开始</param>
<param name="sta"></param> <param name="sta"></param>
<returns></returns> <returns></returns>
</member> </member>
...@@ -193,21 +275,28 @@ ...@@ -193,21 +275,28 @@
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.ReadSingle(System.Byte[])"> <member name="M:Asa.IOModule.AIOBOX.ReadSingle(System.Byte[])">
<summary> <summary>
读取单个DO 读取写入单个DO,功能码5
</summary> </summary>
<param name="buff"></param> <param name="buff"></param>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.ReadDO(System.Byte[])"> <member name="M:Asa.IOModule.AIOBOX.ReadDO(System.Byte[])">
<summary> <summary>
读取所有DO状态 读取所有DO状态,功能码1
</summary> </summary>
<param name="buff"></param> <param name="buff"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.ReadDI(System.Byte[])"> <member name="M:Asa.IOModule.AIOBOX.ReadDI(System.Byte[])">
<summary> <summary>
读取所有DI状态 读取所有DI状态,功能码2
</summary>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadAI(System.Byte[])">
<summary>
读取所有AI的值,功能码4
</summary> </summary>
<param name="buff"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.Command"> <member name="M:Asa.IOModule.AIOBOX.Command">
...@@ -221,40 +310,59 @@ ...@@ -221,40 +310,59 @@
触发DIO改变事件 触发DIO改变事件
</summary> </summary>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.LogPrint"> <member name="M:Asa.IOModule.AIOBOX.AutoReadInput">
<summary> <summary>
日志输出线程 自动读取输入端线程
</summary> </summary>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.AutoReadDI"> <member name="M:Asa.IOModule.AIOBOX.AutoReadOutput">
<summary> <summary>
自动读取DIO线程 自动读取输出端线程
</summary> </summary>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.AutoReadDO"> <member name="M:Asa.IOModule.AIOBOX.Listen">
<summary> <summary>
自动读取DIO线程 监听结果线程
</summary> </summary>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.Listen"> <member name="T:Asa.IOModule.Box_Type">
<summary> <summary>
监听结果线程 IO模块类型
</summary> </summary>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.Target(System.IAsyncResult)"> <member name="F:Asa.IOModule.Box_Type.DI">
<summary> <summary>
回调函数,开启监听线程 数字信号输入
</summary> </summary>
<param name="args"></param>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.Reconn"> <member name="F:Asa.IOModule.Box_Type.DO">
<summary> <summary>
断开重连 数字信号输出
</summary> </summary>
</member> </member>
<member name="M:Asa.IOModule.AIOBOX.CloseConn"> <member name="F:Asa.IOModule.Box_Type.AI">
<summary> <summary>
关闭连接 模拟量输入
</summary>
</member>
<member name="F:Asa.IOModule.Box_Type.AO">
<summary>
模拟量输出
</summary>
</member>
<member name="T:Asa.IOModule.Box_Sta">
<summary>
IO模块寄存器状态
</summary>
</member>
<member name="F:Asa.IOModule.Box_Sta.Off">
<summary>
断开,关闭,低电平
</summary>
</member>
<member name="F:Asa.IOModule.Box_Sta.On">
<summary>
闭合,打开,高电平
</summary> </summary>
</member> </member>
<member name="T:Asa.IOModule.Reg"> <member name="T:Asa.IOModule.Reg">
...@@ -490,39 +598,14 @@ ...@@ -490,39 +598,14 @@
</summary> </summary>
</member> </member>
<member name="T:Asa.IOModule.Box_Type"> <member name="T:Asa.IOModule.DI_Addr">
<summary>
IO模块类型
</summary>
</member>
<member name="F:Asa.IOModule.Box_Type.DIO_16">
<summary>
16位,8DI + 8DO
</summary>
</member>
<member name="F:Asa.IOModule.Box_Type.DIO_32">
<summary>
32位,16DI + 16DO
</summary>
</member>
<member name="F:Asa.IOModule.Box_Type.DO_16">
<summary>
16位DO
</summary>
</member>
<member name="T:Asa.IOModule.Box_Sta">
<summary>
IO模块寄存器状态
</summary>
</member>
<member name="F:Asa.IOModule.Box_Sta.Off">
<summary> <summary>
断开,关闭,低电平 输入端地址
</summary> </summary>
</member> </member>
<member name="F:Asa.IOModule.Box_Sta.On"> <member name="T:Asa.IOModule.DO_Addr">
<summary> <summary>
闭合,打开,高电平 输入端地址
</summary> </summary>
</member> </member>
</members> </members>
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ACServoDriveTest</RootNamespace> <RootNamespace>ACServoDriveTest</RootNamespace>
<AssemblyName>ACServoDriveTest</AssemblyName> <AssemblyName>ACServoDriveTest</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<TargetFrameworkProfile /> <TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
...@@ -31,6 +32,7 @@ ...@@ -31,6 +32,7 @@
<DefineConstants>TRACE</DefineConstants> <DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="System" /> <Reference Include="System" />
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<startup> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
</startup> </startup>
</configuration> </configuration>
...@@ -593,7 +593,7 @@ ...@@ -593,7 +593,7 @@
this.txtAddr.Name = "txtAddr"; this.txtAddr.Name = "txtAddr";
this.txtAddr.Size = new System.Drawing.Size(103, 21); this.txtAddr.Size = new System.Drawing.Size(103, 21);
this.txtAddr.TabIndex = 95; this.txtAddr.TabIndex = 95;
this.txtAddr.Text = "1"; this.txtAddr.Text = "4";
// //
// label18 // label18
// //
......
...@@ -47,7 +47,7 @@ namespace ACServoDriveTest.Properties { ...@@ -47,7 +47,7 @@ namespace ACServoDriveTest.Properties {
} }
/// <summary> /// <summary>
/// 使用此强类型资源类,为所有资源查找 /// 重写当前线程的 CurrentUICulture 属性
/// 重写当前线程的 CurrentUICulture 属性。 /// 重写当前线程的 CurrentUICulture 属性。
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
......
...@@ -12,7 +12,7 @@ namespace ACServoDriveTest.Properties { ...@@ -12,7 +12,7 @@ namespace ACServoDriveTest.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.6.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<DebugType>full</DebugType> <DebugType>full</DebugType>
<Optimize>false</Optimize> <Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath> <OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>TRACE;DEBUG;PositionTool</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
...@@ -92,6 +92,12 @@ ...@@ -92,6 +92,12 @@
<DependentUpon>FrmStoreBox.cs</DependentUpon> <DependentUpon>FrmStoreBox.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="ManagerUtil.cs" /> <Compile Include="ManagerUtil.cs" />
<Compile Include="positionTool\FrmPositionTool.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="positionTool\FrmPositionTool.Designer.cs">
<DependentUpon>FrmPositionTool.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" /> <Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ResourceCulture.cs" /> <Compile Include="ResourceCulture.cs" />
...@@ -110,6 +116,9 @@ ...@@ -110,6 +116,9 @@
<EmbeddedResource Include="FrmStoreBox.resx"> <EmbeddedResource Include="FrmStoreBox.resx">
<DependentUpon>FrmStoreBox.cs</DependentUpon> <DependentUpon>FrmStoreBox.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="positionTool\FrmPositionTool.resx">
<DependentUpon>FrmPositionTool.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resource.en-US.resx"> <EmbeddedResource Include="Properties\Resource.en-US.resx">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
......
...@@ -96,8 +96,22 @@ namespace OnlineStore.AutoInOutStore ...@@ -96,8 +96,22 @@ namespace OnlineStore.AutoInOutStore
XmlConfigurator.Configure(); XmlConfigurator.Configure();
Application.EnableVisualStyles(); Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); Application.SetCompatibleTextRenderingDefault(false);
#if PositionTool
{
string PortName = "COM3";
int slvAddr = 4;
string ioIP = "192.168.200.13";
int ioIndex = 0;
Application.Run(new FrmPositionTool(PortName,slvAddr,ioIP,ioIndex));
}
#else
{
Application.Run(new FrmStoreBox()); Application.Run(new FrmStoreBox());
} }
#endif
}
} }
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{ {
......
namespace OnlineStore.ACSingleStore namespace OnlineStore.AutoInOutStore
{ {
partial class FrmPositionTool partial class FrmPositionTool
{ {
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
this.groupBox6 = new System.Windows.Forms.GroupBox(); this.groupBox6 = new System.Windows.Forms.GroupBox();
this.textBox1 = new System.Windows.Forms.TextBox(); this.txtFileName = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label();
this.txtPortName = new System.Windows.Forms.TextBox(); this.txtPortName = new System.Windows.Forms.TextBox();
this.txtIOIndex = new System.Windows.Forms.TextBox(); this.txtIOIndex = new System.Windows.Forms.TextBox();
...@@ -57,6 +57,9 @@ ...@@ -57,6 +57,9 @@
this.txtSpeed = new System.Windows.Forms.TextBox(); this.txtSpeed = new System.Windows.Forms.TextBox();
this.label12 = new System.Windows.Forms.Label(); this.label12 = new System.Windows.Forms.Label();
this.timer1 = new System.Windows.Forms.Timer(this.components); this.timer1 = new System.Windows.Forms.Timer(this.components);
this.ioStatusControl1 = new UserFromControl.IOStatusControl();
this.btnOpenFolder = new System.Windows.Forms.Button();
this.btnExit = new System.Windows.Forms.Button();
this.groupBox6.SuspendLayout(); this.groupBox6.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
...@@ -65,7 +68,10 @@ ...@@ -65,7 +68,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.textBox1); this.groupBox6.Controls.Add(this.btnExit);
this.groupBox6.Controls.Add(this.btnOpenFolder);
this.groupBox6.Controls.Add(this.ioStatusControl1);
this.groupBox6.Controls.Add(this.txtFileName);
this.groupBox6.Controls.Add(this.label3); this.groupBox6.Controls.Add(this.label3);
this.groupBox6.Controls.Add(this.txtPortName); this.groupBox6.Controls.Add(this.txtPortName);
this.groupBox6.Controls.Add(this.txtIOIndex); this.groupBox6.Controls.Add(this.txtIOIndex);
...@@ -99,20 +105,19 @@ ...@@ -99,20 +105,19 @@
this.groupBox6.TabStop = false; this.groupBox6.TabStop = false;
this.groupBox6.Text = "伺服运动测试"; this.groupBox6.Text = "伺服运动测试";
// //
// textBox1 // txtFileName
// //
this.textBox1.Enabled = false; this.txtFileName.Location = new System.Drawing.Point(114, 185);
this.textBox1.Location = new System.Drawing.Point(132, 185); this.txtFileName.MaxLength = 30;
this.textBox1.MaxLength = 30; this.txtFileName.Name = "txtFileName";
this.textBox1.Name = "textBox1"; this.txtFileName.Size = new System.Drawing.Size(164, 26);
this.textBox1.Size = new System.Drawing.Size(131, 26); this.txtFileName.TabIndex = 278;
this.textBox1.TabIndex = 278; this.txtFileName.Text = "position.csv";
this.textBox1.Text = "position.csv";
// //
// label3 // label3
// //
this.label3.AutoSize = true; this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(14, 188); this.label3.Location = new System.Drawing.Point(5, 188);
this.label3.Name = "label3"; this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(107, 20); this.label3.Size = new System.Drawing.Size(107, 20);
this.label3.TabIndex = 277; this.label3.TabIndex = 277;
...@@ -121,27 +126,27 @@ ...@@ -121,27 +126,27 @@
// txtPortName // txtPortName
// //
this.txtPortName.Enabled = false; this.txtPortName.Enabled = false;
this.txtPortName.Location = new System.Drawing.Point(132, 41); this.txtPortName.Location = new System.Drawing.Point(114, 41);
this.txtPortName.MaxLength = 30; this.txtPortName.MaxLength = 30;
this.txtPortName.Name = "txtPortName"; this.txtPortName.Name = "txtPortName";
this.txtPortName.Size = new System.Drawing.Size(131, 26); this.txtPortName.Size = new System.Drawing.Size(164, 26);
this.txtPortName.TabIndex = 276; this.txtPortName.TabIndex = 276;
this.txtPortName.Text = "COM1"; this.txtPortName.Text = "COM1";
// //
// txtIOIndex // txtIOIndex
// //
this.txtIOIndex.Enabled = false; this.txtIOIndex.Enabled = false;
this.txtIOIndex.Location = new System.Drawing.Point(132, 149); this.txtIOIndex.Location = new System.Drawing.Point(114, 149);
this.txtIOIndex.MaxLength = 30; this.txtIOIndex.MaxLength = 30;
this.txtIOIndex.Name = "txtIOIndex"; this.txtIOIndex.Name = "txtIOIndex";
this.txtIOIndex.Size = new System.Drawing.Size(131, 26); this.txtIOIndex.Size = new System.Drawing.Size(164, 26);
this.txtIOIndex.TabIndex = 275; this.txtIOIndex.TabIndex = 275;
this.txtIOIndex.Text = "1"; this.txtIOIndex.Text = "1";
// //
// label2 // label2
// //
this.label2.AutoSize = true; this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(14, 152); this.label2.Location = new System.Drawing.Point(5, 152);
this.label2.Name = "label2"; this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(107, 20); this.label2.Size = new System.Drawing.Size(107, 20);
this.label2.TabIndex = 274; this.label2.TabIndex = 274;
...@@ -150,17 +155,17 @@ ...@@ -150,17 +155,17 @@
// txtIoIp // txtIoIp
// //
this.txtIoIp.Enabled = false; this.txtIoIp.Enabled = false;
this.txtIoIp.Location = new System.Drawing.Point(132, 113); this.txtIoIp.Location = new System.Drawing.Point(114, 113);
this.txtIoIp.MaxLength = 30; this.txtIoIp.MaxLength = 30;
this.txtIoIp.Name = "txtIoIp"; this.txtIoIp.Name = "txtIoIp";
this.txtIoIp.Size = new System.Drawing.Size(131, 26); this.txtIoIp.Size = new System.Drawing.Size(164, 26);
this.txtIoIp.TabIndex = 273; this.txtIoIp.TabIndex = 273;
this.txtIoIp.Text = "192.168.201.11"; this.txtIoIp.Text = "192.168.201.11";
// //
// label1 // label1
// //
this.label1.AutoSize = true; this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(42, 116); this.label1.Location = new System.Drawing.Point(33, 116);
this.label1.Name = "label1"; this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(79, 20); this.label1.Size = new System.Drawing.Size(79, 20);
this.label1.TabIndex = 272; this.label1.TabIndex = 272;
...@@ -169,7 +174,7 @@ ...@@ -169,7 +174,7 @@
// label7 // label7
// //
this.label7.AutoSize = true; this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(42, 366); this.label7.Location = new System.Drawing.Point(33, 370);
this.label7.Name = "label7"; this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(79, 20); this.label7.Size = new System.Drawing.Size(79, 20);
this.label7.TabIndex = 271; this.label7.TabIndex = 271;
...@@ -178,17 +183,17 @@ ...@@ -178,17 +183,17 @@
// txtActualPosition // txtActualPosition
// //
this.txtActualPosition.Enabled = false; this.txtActualPosition.Enabled = false;
this.txtActualPosition.Location = new System.Drawing.Point(132, 363); this.txtActualPosition.Location = new System.Drawing.Point(114, 367);
this.txtActualPosition.MaxLength = 30; this.txtActualPosition.MaxLength = 30;
this.txtActualPosition.Name = "txtActualPosition"; this.txtActualPosition.Name = "txtActualPosition";
this.txtActualPosition.Size = new System.Drawing.Size(131, 26); this.txtActualPosition.Size = new System.Drawing.Size(164, 26);
this.txtActualPosition.TabIndex = 270; this.txtActualPosition.TabIndex = 270;
// //
// btnGetActualPosition // btnGetActualPosition
// //
this.btnGetActualPosition.Location = new System.Drawing.Point(284, 345); this.btnGetActualPosition.Location = new System.Drawing.Point(285, 362);
this.btnGetActualPosition.Name = "btnGetActualPosition"; this.btnGetActualPosition.Name = "btnGetActualPosition";
this.btnGetActualPosition.Size = new System.Drawing.Size(111, 36); this.btnGetActualPosition.Size = new System.Drawing.Size(132, 36);
this.btnGetActualPosition.TabIndex = 269; this.btnGetActualPosition.TabIndex = 269;
this.btnGetActualPosition.Text = "读取位置"; this.btnGetActualPosition.Text = "读取位置";
this.btnGetActualPosition.UseVisualStyleBackColor = true; this.btnGetActualPosition.UseVisualStyleBackColor = true;
...@@ -197,7 +202,7 @@ ...@@ -197,7 +202,7 @@
// label6 // label6
// //
this.label6.AutoSize = true; this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(42, 332); this.label6.Location = new System.Drawing.Point(33, 336);
this.label6.Name = "label6"; this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(79, 20); this.label6.Size = new System.Drawing.Size(79, 20);
this.label6.TabIndex = 268; this.label6.TabIndex = 268;
...@@ -206,17 +211,17 @@ ...@@ -206,17 +211,17 @@
// txtTargetPosition // txtTargetPosition
// //
this.txtTargetPosition.Enabled = false; this.txtTargetPosition.Enabled = false;
this.txtTargetPosition.Location = new System.Drawing.Point(132, 329); this.txtTargetPosition.Location = new System.Drawing.Point(114, 333);
this.txtTargetPosition.MaxLength = 30; this.txtTargetPosition.MaxLength = 30;
this.txtTargetPosition.Name = "txtTargetPosition"; this.txtTargetPosition.Name = "txtTargetPosition";
this.txtTargetPosition.Size = new System.Drawing.Size(131, 26); this.txtTargetPosition.Size = new System.Drawing.Size(164, 26);
this.txtTargetPosition.TabIndex = 267; this.txtTargetPosition.TabIndex = 267;
// //
// btnServoOff // btnServoOff
// //
this.btnServoOff.Location = new System.Drawing.Point(284, 80); this.btnServoOff.Location = new System.Drawing.Point(285, 80);
this.btnServoOff.Name = "btnServoOff"; this.btnServoOff.Name = "btnServoOff";
this.btnServoOff.Size = new System.Drawing.Size(111, 36); this.btnServoOff.Size = new System.Drawing.Size(132, 36);
this.btnServoOff.TabIndex = 259; this.btnServoOff.TabIndex = 259;
this.btnServoOff.Text = "关闭伺服"; this.btnServoOff.Text = "关闭伺服";
this.btnServoOff.UseVisualStyleBackColor = true; this.btnServoOff.UseVisualStyleBackColor = true;
...@@ -224,9 +229,9 @@ ...@@ -224,9 +229,9 @@
// //
// btnServoOn // btnServoOn
// //
this.btnServoOn.Location = new System.Drawing.Point(284, 41); this.btnServoOn.Location = new System.Drawing.Point(285, 41);
this.btnServoOn.Name = "btnServoOn"; this.btnServoOn.Name = "btnServoOn";
this.btnServoOn.Size = new System.Drawing.Size(111, 36); this.btnServoOn.Size = new System.Drawing.Size(132, 36);
this.btnServoOn.TabIndex = 258; this.btnServoOn.TabIndex = 258;
this.btnServoOn.Text = "打开伺服"; this.btnServoOn.Text = "打开伺服";
this.btnServoOn.UseVisualStyleBackColor = true; this.btnServoOn.UseVisualStyleBackColor = true;
...@@ -234,9 +239,9 @@ ...@@ -234,9 +239,9 @@
// //
// btnSdStop // btnSdStop
// //
this.btnSdStop.Location = new System.Drawing.Point(284, 271); this.btnSdStop.Location = new System.Drawing.Point(285, 275);
this.btnSdStop.Name = "btnSdStop"; this.btnSdStop.Name = "btnSdStop";
this.btnSdStop.Size = new System.Drawing.Size(111, 36); this.btnSdStop.Size = new System.Drawing.Size(132, 36);
this.btnSdStop.TabIndex = 257; this.btnSdStop.TabIndex = 257;
this.btnSdStop.Text = "停止"; this.btnSdStop.Text = "停止";
this.btnSdStop.UseVisualStyleBackColor = true; this.btnSdStop.UseVisualStyleBackColor = true;
...@@ -244,9 +249,9 @@ ...@@ -244,9 +249,9 @@
// //
// btnHomeMove // btnHomeMove
// //
this.btnHomeMove.Location = new System.Drawing.Point(284, 129); this.btnHomeMove.Location = new System.Drawing.Point(285, 129);
this.btnHomeMove.Name = "btnHomeMove"; this.btnHomeMove.Name = "btnHomeMove";
this.btnHomeMove.Size = new System.Drawing.Size(111, 36); this.btnHomeMove.Size = new System.Drawing.Size(132, 36);
this.btnHomeMove.TabIndex = 110; this.btnHomeMove.TabIndex = 110;
this.btnHomeMove.Text = "原点返回"; this.btnHomeMove.Text = "原点返回";
this.btnHomeMove.UseVisualStyleBackColor = true; this.btnHomeMove.UseVisualStyleBackColor = true;
...@@ -255,9 +260,9 @@ ...@@ -255,9 +260,9 @@
// btnClear // btnClear
// //
this.btnClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.btnClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnClear.Location = new System.Drawing.Point(867, 607); this.btnClear.Location = new System.Drawing.Point(677, 604);
this.btnClear.Name = "btnClear"; this.btnClear.Name = "btnClear";
this.btnClear.Size = new System.Drawing.Size(105, 32); this.btnClear.Size = new System.Drawing.Size(132, 36);
this.btnClear.TabIndex = 106; this.btnClear.TabIndex = 106;
this.btnClear.Text = "清理"; this.btnClear.Text = "清理";
this.btnClear.UseVisualStyleBackColor = true; this.btnClear.UseVisualStyleBackColor = true;
...@@ -268,26 +273,27 @@ ...@@ -268,26 +273,27 @@
this.richTextBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.richTextBox1.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.richTextBox1.Location = new System.Drawing.Point(423, 20); this.richTextBox1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.richTextBox1.Location = new System.Drawing.Point(432, 20);
this.richTextBox1.Name = "richTextBox1"; this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.Size = new System.Drawing.Size(565, 581); this.richTextBox1.Size = new System.Drawing.Size(553, 581);
this.richTextBox1.TabIndex = 105; this.richTextBox1.TabIndex = 105;
this.richTextBox1.Text = ""; this.richTextBox1.Text = "";
// //
// txtAddr // txtAddr
// //
this.txtAddr.Enabled = false; this.txtAddr.Enabled = false;
this.txtAddr.Location = new System.Drawing.Point(132, 77); this.txtAddr.Location = new System.Drawing.Point(114, 77);
this.txtAddr.MaxLength = 30; this.txtAddr.MaxLength = 30;
this.txtAddr.Name = "txtAddr"; this.txtAddr.Name = "txtAddr";
this.txtAddr.Size = new System.Drawing.Size(131, 26); this.txtAddr.Size = new System.Drawing.Size(164, 26);
this.txtAddr.TabIndex = 95; this.txtAddr.TabIndex = 95;
this.txtAddr.Text = "1"; this.txtAddr.Text = "1";
// //
// label18 // label18
// //
this.label18.AutoSize = true; this.label18.AutoSize = true;
this.label18.Location = new System.Drawing.Point(70, 80); this.label18.Location = new System.Drawing.Point(61, 80);
this.label18.Name = "label18"; this.label18.Name = "label18";
this.label18.Size = new System.Drawing.Size(51, 20); this.label18.Size = new System.Drawing.Size(51, 20);
this.label18.TabIndex = 94; this.label18.TabIndex = 94;
...@@ -296,7 +302,7 @@ ...@@ -296,7 +302,7 @@
// label13 // label13
// //
this.label13.AutoSize = true; this.label13.AutoSize = true;
this.label13.Location = new System.Drawing.Point(70, 279); this.label13.Location = new System.Drawing.Point(61, 283);
this.label13.Name = "label13"; this.label13.Name = "label13";
this.label13.Size = new System.Drawing.Size(51, 20); this.label13.Size = new System.Drawing.Size(51, 20);
this.label13.TabIndex = 90; this.label13.TabIndex = 90;
...@@ -304,18 +310,18 @@ ...@@ -304,18 +310,18 @@
// //
// txtPosition // txtPosition
// //
this.txtPosition.Location = new System.Drawing.Point(132, 276); this.txtPosition.Location = new System.Drawing.Point(114, 280);
this.txtPosition.MaxLength = 30; this.txtPosition.MaxLength = 30;
this.txtPosition.Name = "txtPosition"; this.txtPosition.Name = "txtPosition";
this.txtPosition.Size = new System.Drawing.Size(131, 26); this.txtPosition.Size = new System.Drawing.Size(164, 26);
this.txtPosition.TabIndex = 89; this.txtPosition.TabIndex = 89;
this.txtPosition.Text = "5000"; this.txtPosition.Text = "5000";
// //
// btnAbsMove // btnAbsMove
// //
this.btnAbsMove.Location = new System.Drawing.Point(284, 233); this.btnAbsMove.Location = new System.Drawing.Point(285, 237);
this.btnAbsMove.Name = "btnAbsMove"; this.btnAbsMove.Name = "btnAbsMove";
this.btnAbsMove.Size = new System.Drawing.Size(111, 36); this.btnAbsMove.Size = new System.Drawing.Size(132, 36);
this.btnAbsMove.TabIndex = 88; this.btnAbsMove.TabIndex = 88;
this.btnAbsMove.Text = "开始运动"; this.btnAbsMove.Text = "开始运动";
this.btnAbsMove.UseVisualStyleBackColor = true; this.btnAbsMove.UseVisualStyleBackColor = true;
...@@ -324,7 +330,7 @@ ...@@ -324,7 +330,7 @@
// label8 // label8
// //
this.label8.AutoSize = true; this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(70, 241); this.label8.Location = new System.Drawing.Point(61, 245);
this.label8.Name = "label8"; this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(51, 20); this.label8.Size = new System.Drawing.Size(51, 20);
this.label8.TabIndex = 84; this.label8.TabIndex = 84;
...@@ -332,17 +338,17 @@ ...@@ -332,17 +338,17 @@
// //
// txtSpeed // txtSpeed
// //
this.txtSpeed.Location = new System.Drawing.Point(132, 238); this.txtSpeed.Location = new System.Drawing.Point(114, 242);
this.txtSpeed.MaxLength = 30; this.txtSpeed.MaxLength = 30;
this.txtSpeed.Name = "txtSpeed"; this.txtSpeed.Name = "txtSpeed";
this.txtSpeed.Size = new System.Drawing.Size(131, 26); this.txtSpeed.Size = new System.Drawing.Size(164, 26);
this.txtSpeed.TabIndex = 83; this.txtSpeed.TabIndex = 83;
this.txtSpeed.Text = "20"; this.txtSpeed.Text = "20";
// //
// label12 // label12
// //
this.label12.AutoSize = true; this.label12.AutoSize = true;
this.label12.Location = new System.Drawing.Point(56, 44); this.label12.Location = new System.Drawing.Point(47, 44);
this.label12.Name = "label12"; this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(65, 20); this.label12.Size = new System.Drawing.Size(65, 20);
this.label12.TabIndex = 1; this.label12.TabIndex = 1;
...@@ -353,6 +359,37 @@ ...@@ -353,6 +359,37 @@
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);
// //
// ioStatusControl1
//
this.ioStatusControl1.IOName = null;
this.ioStatusControl1.IOValue = 0;
this.ioStatusControl1.isCanClick = false;
this.ioStatusControl1.Location = new System.Drawing.Point(122, 483);
this.ioStatusControl1.Name = "ioStatusControl1";
this.ioStatusControl1.Size = new System.Drawing.Size(171, 39);
this.ioStatusControl1.TabIndex = 279;
//
// btnOpenFolder
//
this.btnOpenFolder.Location = new System.Drawing.Point(285, 180);
this.btnOpenFolder.Name = "btnOpenFolder";
this.btnOpenFolder.Size = new System.Drawing.Size(132, 36);
this.btnOpenFolder.TabIndex = 280;
this.btnOpenFolder.Text = "打开文件夹";
this.btnOpenFolder.UseVisualStyleBackColor = true;
this.btnOpenFolder.Click += new System.EventHandler(this.btnOpenFolder_Click);
//
// btnExit
//
this.btnExit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnExit.Location = new System.Drawing.Point(824, 604);
this.btnExit.Name = "btnExit";
this.btnExit.Size = new System.Drawing.Size(132, 36);
this.btnExit.TabIndex = 281;
this.btnExit.Text = "退出";
this.btnExit.UseVisualStyleBackColor = true;
this.btnExit.Click += new System.EventHandler(this.btnExit_Click);
//
// FrmPositionTool // FrmPositionTool
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
...@@ -362,6 +399,8 @@ ...@@ -362,6 +399,8 @@
this.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Name = "FrmPositionTool"; this.Name = "FrmPositionTool";
this.Text = "升降轴位置测试"; this.Text = "升降轴位置测试";
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmPositionTool_FormClosing);
this.Load += new System.EventHandler(this.Form1_Load); this.Load += new System.EventHandler(this.Form1_Load);
this.groupBox6.ResumeLayout(false); this.groupBox6.ResumeLayout(false);
this.groupBox6.PerformLayout(); this.groupBox6.PerformLayout();
...@@ -397,8 +436,11 @@ ...@@ -397,8 +436,11 @@
private System.Windows.Forms.TextBox txtIoIp; private System.Windows.Forms.TextBox txtIoIp;
private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox txtPortName; private System.Windows.Forms.TextBox txtPortName;
private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.TextBox txtFileName;
private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label3;
private UserFromControl.IOStatusControl ioStatusControl1;
private System.Windows.Forms.Button btnOpenFolder;
private System.Windows.Forms.Button btnExit;
} }
} }
 
using OnlineStore.Common; using OnlineStore.Common;
using OnlineStore.DeviceLibrary; using OnlineStore.DeviceLibrary;
using OnlineStore.LoadCSVLibrary;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Data; using System.Data;
using System.Drawing; using System.Drawing;
using System.IO;
using System.IO.Ports; using System.IO.Ports;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
...@@ -13,14 +15,16 @@ using System.Threading; ...@@ -13,14 +15,16 @@ using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
namespace OnlineStore.ACSingleStore namespace OnlineStore.AutoInOutStore
{ {
public partial class FrmPositionTool : Form public partial class FrmPositionTool : FrmBase
{ {
private string LogName = "升降轴位置调试:";
private string PortName = ""; private string PortName = "";
private int SlvAddr = 0; private int SlvAddr = 0;
private string IoIp = ""; private string IoIp = "";
private int IoIndex = 0; private int IoIndex = 0;
public string Axis_Brake = IO_Type.Axis_Brake;
private System.Timers.Timer toolTimer = new System.Timers.Timer(); private System.Timers.Timer toolTimer = new System.Timers.Timer();
public FrmPositionTool(string protName, int slvAddr,string ioIp, int ioIndex) public FrmPositionTool(string protName, int slvAddr,string ioIp, int ioIndex)
{ {
...@@ -34,11 +38,13 @@ namespace OnlineStore.ACSingleStore ...@@ -34,11 +38,13 @@ namespace OnlineStore.ACSingleStore
toolTimer.Interval = 300; toolTimer.Interval = 300;
toolTimer.AutoReset = true; toolTimer.AutoReset = true;
toolTimer.Elapsed += ToolTimer_Elapsed; toolTimer.Elapsed += ToolTimer_Elapsed;
FrmPositionTool.CheckForIllegalCrossThreadCalls = false;
} }
private void Form1_Load(object sender, EventArgs e) private void Form1_Load(object sender, EventArgs e)
{ {
ACServerManager.IsShowMsg = true; ACServerManager.IsShowMsg = false;
LogUtil.logBox = this.richTextBox1; LogUtil.logBox = this.richTextBox1;
//ACServerManager.richeBox = this.richTextBox1; //ACServerManager.richeBox = this.richTextBox1;
formStatus(false); formStatus(false);
...@@ -48,7 +54,12 @@ namespace OnlineStore.ACSingleStore ...@@ -48,7 +54,12 @@ namespace OnlineStore.ACSingleStore
txtIOIndex .Text= IoIndex.ToString(); txtIOIndex .Text= IoIndex.ToString();
txtIoIp.Text = IoIp.ToString(); txtIoIp.Text = IoIp.ToString();
if (IOManager.instance == null)
{
IOManager.Init();
}
IOManager.instance.ConnectionIOList(new List<string> { IoIp });
timer1.Start();
} }
private void btnServoOn_Click(object sender, EventArgs e) private void btnServoOn_Click(object sender, EventArgs e)
{ {
...@@ -66,14 +77,34 @@ namespace OnlineStore.ACSingleStore ...@@ -66,14 +77,34 @@ namespace OnlineStore.ACSingleStore
Thread.Sleep(100); Thread.Sleep(100);
ACServerManager.AlarmClear(PortName, SlvAddr); ACServerManager.AlarmClear(PortName, SlvAddr);
ACServerManager.ServoOn(PortName, SlvAddr); ACServerManager.ServoOn(PortName, SlvAddr);
try
{
IOManager.IOMove(Axis_Brake, IO_VALUE.HIGH);
}catch(Exception ex)
{
}
} }
private void btnServoOff_Click(object sender, EventArgs e) private void btnServoOff_Click(object sender, EventArgs e)
{ {
toolTimer.Stop(); StopTimer();
// toolTimer.Stop();
ACServerManager.SuddenStop(PortName, SlvAddr); ACServerManager.SuddenStop(PortName, SlvAddr);
Thread.Sleep(100); Thread.Sleep(100);
try
{
IOManager.IOMove(Axis_Brake, IO_VALUE.LOW);
}
catch (Exception ex)
{
}
ACServerManager.ServoOff(PortName, SlvAddr); ACServerManager.ServoOff(PortName, SlvAddr);
formStatus(false );
} }
private void formStatus(bool p) private void formStatus(bool p)
...@@ -81,7 +112,7 @@ namespace OnlineStore.ACSingleStore ...@@ -81,7 +112,7 @@ namespace OnlineStore.ACSingleStore
txtPortName.Enabled = !p; txtPortName.Enabled = !p;
txtAddr.Enabled = !p; txtAddr.Enabled = !p;
txtIOIndex.Enabled = !p; txtIOIndex.Enabled = !p;
txtIoIp.Enabled = !p; // txtIoIp.Enabled = !p;
btnAbsMove.Enabled = p; btnAbsMove.Enabled = p;
btnSdStop.Enabled = p; btnSdStop.Enabled = p;
...@@ -112,7 +143,14 @@ namespace OnlineStore.ACSingleStore ...@@ -112,7 +143,14 @@ namespace OnlineStore.ACSingleStore
int speed = Convert.ToInt32(txtSpeed.Text); int speed = Convert.ToInt32(txtSpeed.Text);
ACServerManager.SpeedMove(PortName, SlvAddr, speed); ACServerManager.SpeedMove(PortName, SlvAddr, speed);
} }
private int TargetPostion = 0; private void btnGetActualPosition_Click(object sender, EventArgs e)
{
int value = ACServerManager.GetTargetPosition(PortName, SlvAddr);
txtTargetPosition.Text = value.ToString();
value = ACServerManager.GetActualtPosition(PortName, SlvAddr);
txtActualPosition.Text = value.ToString();
}
private void btnAbsMove_Click(object sender, EventArgs e) private void btnAbsMove_Click(object sender, EventArgs e)
{ {
int speed = Convert.ToInt32(txtSpeed.Text); int speed = Convert.ToInt32(txtSpeed.Text);
...@@ -125,8 +163,21 @@ namespace OnlineStore.ACSingleStore ...@@ -125,8 +163,21 @@ namespace OnlineStore.ACSingleStore
txtSpeed.Focus(); txtSpeed.Focus();
return; return;
} }
LastValue = IO_VALUE.LOW;
string fileName = txtFileName.Text;
string filePath = Application.StartupPath + @"\" + fileName;
if (File.Exists(filePath))
{
DialogResult result = MessageBox.Show("文件【"+filePath+"】已存在,是否确定覆盖?","", MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
if (!result.Equals(DialogResult.OK))
{
return;
}
}
PositionList = new List<int>();
LogUtil.info(LogName + "伺服开始运动,速度【"+speed+"】位置【"+position+"】启动定时器 ");
ACServerManager.AbsMove(PortName, SlvAddr, position,speed);
toolTimer.Start(); toolTimer.Start();
ACServerManager.AbsMove(PortName, SlvAddr, position);
} }
private void btnSdStop_Click(object sender, EventArgs e) private void btnSdStop_Click(object sender, EventArgs e)
...@@ -135,42 +186,123 @@ namespace OnlineStore.ACSingleStore ...@@ -135,42 +186,123 @@ namespace OnlineStore.ACSingleStore
ACServerManager.SuddenStop(PortName, SlvAddr); ACServerManager.SuddenStop(PortName, SlvAddr);
} }
private IO_VALUE GetSingleValue()
{
return IOManager.instance.GetDIValue(IoIp, 0, (ushort)IoIndex);
}
private void btnGetActualPosition_Click(object sender, EventArgs e)
private int TargetPostion = 0;
private bool isInProcesss = false;
private DateTime LastTime = DateTime.Now;
private List<int> PositionList = new List<int>();
private IO_VALUE LastValue = IO_VALUE.LOW;
private void ToolTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{ {
int value = ACServerManager.GetTargetPosition(PortName, SlvAddr); TimeSpan span = DateTime.Now - LastTime;
txtTargetPosition.Text = value.ToString(); if (isInProcesss && span.TotalSeconds < 1)
value = ACServerManager.GetActualtPosition(PortName, SlvAddr); {
txtActualPosition.Text = value.ToString(); return;
}
isInProcesss = true;
try
{
int moveS = ACServerManager.GetBusyStatus(PortName, SlvAddr);
if (moveS.Equals(1))
{
IO_VALUE currValue = GetSingleValue();
if (LastValue.Equals(IO_VALUE.LOW) && currValue.Equals(IO_VALUE.HIGH))
{
int currPos = ACServerManager.GetActualtPosition(PortName, SlvAddr);
txtActualPosition.Text = currPos.ToString();
PositionList.Add(currPos);
int num = PositionList.Count;
LogUtil.info(LogName + "收到信号,【"+ num + "】【" + currPos+"】");
LastValue = IO_VALUE.HIGH;
} }
private bool isInProcesss = false;
private void ToolTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) LastValue = currValue;
}
else
{
StopTimer();
}
}catch(Exception ex)
{ {
LogUtil.error(LogName+"ToolTimer_Elapsed" + ex.ToString());
}
isInProcesss = false;
} }
private int getDataIndex = 0; private void StopTimer()
private void timer1_Tick(object sender, EventArgs e) {
toolTimer.Stop();
if (PositionList.Count <= 0)
{ {
return;
}
LogUtil.info(LogName + "伺服已停止运动,停止定时器,记录数据");
string resultstr = "";
int index = 1;
foreach (int p in PositionList)
{
resultstr += index + "," + p + "\r\n";
index++;
}
string fileName = txtFileName.Text;
string filePath = Application.StartupPath + @"\" + fileName;
try try
{ {
getDataIndex++; // Clipboard.SetDataObject(resultstr);
File.WriteAllText(filePath, resultstr);
LogUtil.error(LogName + "保存位置到文件【" + filePath + "】成功");
} }
catch (Exception ex) catch (Exception ex)
{ {
LogUtil.error(LogName + "保存位置到文件【" + filePath + "】出错:" + ex.ToString());
}
} }
private int getDataIndex = 0;
private void timer1_Tick(object sender, EventArgs e)
{
try try
{ {
ioStatusControl1.IOValue = (int)GetSingleValue();
ioStatusControl1.ShowData();
} }
catch (Exception ex) catch (Exception ex)
{ {
} }
} }
private void FrmPositionTool_FormClosing(object sender, FormClosingEventArgs e)
{
timer1.Stop();
if (btnServoOff.Enabled)
{
btnServoOff_Click(null, null);
}
ACServerManager.CloseAllPort();
IOManager.instance.CloseAllConnection();
}
private void btnOpenFolder_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("Explorer.exe", Application.StartupPath);
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
} }
} }
...@@ -19,7 +19,7 @@ namespace OnlineStore.Common ...@@ -19,7 +19,7 @@ namespace OnlineStore.Common
public static System.Windows.Forms.RichTextBox logBox = null; public static System.Windows.Forms.RichTextBox logBox = null;
public static int showCount = 20; public static int showCount = 100;
public static bool debug_opened = false; public static bool debug_opened = false;
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
<DebugType>full</DebugType> <DebugType>full</DebugType>
<Optimize>false</Optimize> <Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath> <OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>TRACE;DEBUG;PositionTool</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
...@@ -36,6 +36,9 @@ ...@@ -36,6 +36,9 @@
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Asa.IOModule.AIOBOX">
<HintPath>..\..\dll\Asa.IOModule.AIOBOX.dll</HintPath>
</Reference>
<Reference Include="CodeLibrary"> <Reference Include="CodeLibrary">
<HintPath>..\..\dll\CodeLibrary.dll</HintPath> <HintPath>..\..\dll\CodeLibrary.dll</HintPath>
</Reference> </Reference>
...@@ -61,11 +64,8 @@ ...@@ -61,11 +64,8 @@
<Compile Include="acSingleStore\AutomaticBaiting_Partial.cs" /> <Compile Include="acSingleStore\AutomaticBaiting_Partial.cs" />
<Compile Include="acSingleStore\StoreManager.cs" /> <Compile Include="acSingleStore\StoreManager.cs" />
<Compile Include="acSingleStore\AutomaticBaiting.cs" /> <Compile Include="acSingleStore\AutomaticBaiting.cs" />
<Compile Include="DeviceLibrary\IO\AIOBOX\BLL2.cs" />
<Compile Include="DeviceLibrary\halcon\CodeManager.cs" /> <Compile Include="DeviceLibrary\halcon\CodeManager.cs" />
<Compile Include="DeviceLibrary\IO\AIOBOX\AIOBOXManager.cs" /> <Compile Include="DeviceLibrary\IO\AIOBOX\AIOBOXManager.cs" />
<Compile Include="DeviceLibrary\IO\AIOBOX\BLL.cs" />
<Compile Include="DeviceLibrary\IO\AIOBOX\Common.cs" />
<Compile Include="DeviceLibrary\IO\IOManager.cs" /> <Compile Include="DeviceLibrary\IO\IOManager.cs" />
<Compile Include="DeviceLibrary\IO\KangNaiDe\KNDManager.cs" /> <Compile Include="DeviceLibrary\IO\KangNaiDe\KNDManager.cs" />
<Compile Include="DeviceLibrary\IO\KangNaiDe\MasterTcpClient.cs" /> <Compile Include="DeviceLibrary\IO\KangNaiDe\MasterTcpClient.cs" />
......
...@@ -18,18 +18,18 @@ namespace OnlineStore.DeviceLibrary ...@@ -18,18 +18,18 @@ namespace OnlineStore.DeviceLibrary
//public static uint DefaultDOCount = 16; //public static uint DefaultDOCount = 16;
public readonly ILog LOGGER = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); public readonly ILog LOGGER = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public Dictionary<string, AIOBOX2> AIOMap = new Dictionary<string, AIOBOX2>(); 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>>();
public Dictionary<string, List<Box_Sta>> DOValueMap = new Dictionary<string, List<Box_Sta>>(); public Dictionary<string, List<Box_Sta>> DOValueMap = new Dictionary<string, List<Box_Sta>>();
private object DIMapLock = ""; private object DIMapLock = "";
private object DOMapLock = ""; private object DOMapLock = "";
public System.Timers.Timer timer = null;
private object DILock = ""; private object DILock = "";
private object DOLock = ""; private object DOLock = "";
public void ConnectionIP(string ioIp ) public void ConnectionIP(string ioIp)
{ {
AIOBOX2 aioBox = null; AIOBOX aioBox = null;
if (AIOMap.ContainsKey(ioIp)) if (AIOMap.ContainsKey(ioIp))
{ {
aioBox = AIOMap[ioIp]; aioBox = AIOMap[ioIp];
...@@ -49,11 +49,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -49,11 +49,6 @@ namespace OnlineStore.DeviceLibrary
{ {
DOValueMap.Remove(ioIp); DOValueMap.Remove(ioIp);
} }
try
{
// Create new modbus master and add event functions
aioBox = new AIOBOX2();
aioBox.IP = ioIp;
int DIMS = ConfigAppSettings.GetIntValue("DIMS"); int DIMS = ConfigAppSettings.GetIntValue("DIMS");
if (DIMS < 20) if (DIMS < 20)
{ {
...@@ -64,32 +59,36 @@ namespace OnlineStore.DeviceLibrary ...@@ -64,32 +59,36 @@ namespace OnlineStore.DeviceLibrary
{ {
DOMS = 200; DOMS = 200;
} }
int DILength = GetDILength(ioIp);
int DOLength = GetDOLength(ioIp);
string logName = "IO模块[" + ioIp + "] DI[" + DILength + "] DO[" + DOLength + "],[" + DIMS + "] [" + DOMS + "]";
try
{
// Create new modbus master and add event functions
aioBox = new AIOBOX();
aioBox.IP = ioIp;
// bool rtn = aioBox.AutoIP(ioIp);
aioBox.AutoReadDI(true, DIMS); aioBox.SetInput(Asa.IOModule.Box_Type.DI, DILength);
aioBox.AutoReadDO (true, DOMS); aioBox.SetOutput(Asa.IOModule.Box_Type.DO, DOLength);
aioBox.AutoReadInput(true, DIMS);
aioBox.AutoReadOutput(true, DOMS);
aioBox.LogOut = true; aioBox.LogOut = true;
//aioBox.Reconnect_Event += AioBox_Reconnect_Event;
if (StoreManager.Config.GetDILength(ioIp).Equals(8))
{
aioBox.Type = Box_Type.DIO_16;
}
else
{
aioBox.Type = Box_Type.DIO_32;
}
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_Out_Event += AioBox_Log_Out_Event;
//aioBox.Log_RxTx_Event += AioBox_Log_RxTx_Event; //aioBox.Log_RxTx_Event += AioBox_Log_RxTx_Event;
AIOMap.Add(ioIp, aioBox); AIOMap.Add(ioIp, aioBox);
LogUtil.info("开始连接IO模块[" + ioIp + "]["+DIMS+"]["+DOMS+"],尝试重连三次");
for (int i = 1; i <= 3; i++) LogUtil.debug("开始连接" + logName + ",尝试重连5次");
for (int i = 1; i <= 5; i++)
{ {
bool result = aioBox.Connect(); bool result = aioBox.Connect();
if (result) if (result)
{ {
LogUtil.info("第【"+i+"】次连接IO模块【" + ioIp + "】成功:" + aioBox.ErrInfo); LogUtil.info("第【" + i + "】次连接 " + logName + " 成功:" + aioBox.ErrInfo);
Thread.Sleep(10); Thread.Sleep(10);
//读取所有的DO //读取所有的DO
ReadAllDI(ioIp, 0); ReadAllDI(ioIp, 0);
...@@ -97,26 +96,19 @@ namespace OnlineStore.DeviceLibrary ...@@ -97,26 +96,19 @@ namespace OnlineStore.DeviceLibrary
} }
else else
{ {
LogUtil.error("第【" + i + "】次连接IO模块【" + ioIp + "】失败:" + aioBox.ErrInfo + ""); LogUtil.error("第【" + i + "】次连接 " + logName + " 失败:" + aioBox.ErrInfo + "");
}
Thread.Sleep(10);
} }
if (timer == null) Thread.Sleep(2);
{
timer = new System.Timers.Timer();
timer.Interval = 5000;
timer.AutoReset = true;
timer.Elapsed += timer_Elapsed;
timer.Enabled = true;
} }
} }
catch (Exception error) catch (Exception error)
{ {
LogUtil.error(LOGGER, "连接IO模块[" + ioIp + "]出错:" + error.ToString()); LogUtil.error(LOGGER, "连接IO模块 " + logName + " 出错:" + error.ToString());
} }
} }
private void AioBox_Reconnect_Event(AIOBOX2 box, int times, ref bool conn, Dictionary<string, string> dict) private void AioBox_Reconnect_Event(AIOBOX box, int times, ref bool conn, Dictionary<string, string> dict)
{ {
conn = true; conn = true;
string msg = "重连AIO块【" + box.IP + "】次数:" + times + "【" + box.ErrInfo + "】,连接信息如下\r\n"; string msg = "重连AIO块【" + box.IP + "】次数:" + times + "【" + box.ErrInfo + "】,连接信息如下\r\n";
...@@ -129,20 +121,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -129,20 +121,9 @@ namespace OnlineStore.DeviceLibrary
} }
private DateTime lastLogTime = DateTime.Now; private DateTime lastLogTime = DateTime.Now;
//private void AioBox_Log_RxTx_Event(AIOBOX2 box, string[] s)
//{
// TimeSpan span = DateTime.Now - lastLogTime;
// //if (span.TotalMinutes > 1)
// {
// lastLogTime = DateTime.Now;
// foreach (string str in s)
// {
// LogUtil.AIOLog.Debug("[" + box.IP + "]" + str);
// }
// }
//}
private void AioBox_Log_Out_Event(AIOBOX2 box, string[] s)
private void AioBox_Log_Out_Event(AIOBOX box, string[] s)
{ {
foreach (string str in s) foreach (string str in s)
{ {
...@@ -150,7 +131,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -150,7 +131,7 @@ namespace OnlineStore.DeviceLibrary
} }
} }
private void AioBox_DI_Changed_Event(AIOBOX2 box, Box_Sta[] sta) private void AioBox_DI_Changed_Event(AIOBOX box, Box_Sta[] sta)
{ {
try try
{ {
...@@ -161,10 +142,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -161,10 +142,11 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error("AioBox_DI_Changed_Event出错:" + ex.ToString()); LogUtil.error("AioBox_DI_Changed_Event出错:" + ex.ToString());
} }
} }
private void AioBox_DO_Changed_Event(AIOBOX2 box, Box_Sta[] sta) private void AioBox_DO_Changed_Event(AIOBOX box, Box_Sta[] sta)
{ {
try try
{ {
UpdateAllDO(box.IP, sta); UpdateAllDO(box.IP, sta);
} }
catch (Exception ex) catch (Exception ex)
...@@ -175,8 +157,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -175,8 +157,9 @@ namespace OnlineStore.DeviceLibrary
private void UpdateAllDI(string ip, Box_Sta[] sta) private void UpdateAllDI(string ip, Box_Sta[] sta)
{ {
if (sta != null && sta.Length >= StoreManager.Config.GetDILength(ip)) if (sta != null && sta.Length >= GetDILength(ip))
{ {
string updateDi = "[" + ip + "]:";
bool needUpdate = false; bool needUpdate = false;
List<Box_Sta> newList = new List<Box_Sta>(); List<Box_Sta> newList = new List<Box_Sta>();
newList.AddRange(sta); newList.AddRange(sta);
...@@ -188,6 +171,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -188,6 +171,14 @@ 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])))
...@@ -212,13 +203,20 @@ namespace OnlineStore.DeviceLibrary ...@@ -212,13 +203,20 @@ namespace OnlineStore.DeviceLibrary
} }
private void UpdateAllDO(string ip, Box_Sta[] sta) private void UpdateAllDO(string ip, Box_Sta[] sta)
{ {
if (sta != null && sta.Length >= StoreManager.Config.GetDOLength(ip)) if (sta != null && sta.Length >= GetDOLength(ip))
{ {
bool needUpdate = false; bool needUpdate = false;
List<Box_Sta> newList = new List<Box_Sta>(); List<Box_Sta> newList = new List<Box_Sta>();
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;
...@@ -246,85 +244,65 @@ namespace OnlineStore.DeviceLibrary ...@@ -246,85 +244,65 @@ namespace OnlineStore.DeviceLibrary
} }
} }
} }
} //else
private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
try
{
//List<string> list = new List<string>(AIOMap.Keys);
//foreach (string io in list)
//{ //{
// //判断是否连接,如果没有连接自动重连 // if (sta == null)
// AIOBOX2 client = AIOMap[io];
// if (!client.IsConn)
// {
// //重连
// bool result = client.Connect();
// if (result)
// { // {
// LogUtil.info("重连O模块【" + client.IP + "】成功:" + client.ErrInfo); // LogUtil.error("UpdateAllDO ip[" + ip + "], sta=null");
// } // }
// else // else
// { // {
// LogUtil.error("重连O模块【" + client.IP + "】失败:" + client.ErrInfo); // LogUtil.error(" UpdateAllDO ip[" + ip + "], sta.Length=" + sta.Length);
// }
// } // }
//} //}
} }
catch (Exception ex)
{
LogUtil.error(LOGGER, "出错啦:" + ex.ToString());
}
Thread.Sleep(1);
}
public override void ConnectionIOList(List<string> DIONameList) public override void ConnectionIOList(List<string> DIONameList)
{ {
foreach (string ip in DIONameList) foreach (string ip in DIONameList)
{ {
ConnectionIP(ip ); ConnectionIP(ip);
} }
} }
//关闭所有的DO //关闭所有的DO
public override void CloseAllDO() public override void CloseAllDO()
{ {
foreach (AIOBOX2 aio in AIOMap.Values) foreach (AIOBOX aio in AIOMap.Values)
{ {
ushort length = StoreManager.Config.GetDILength(aio.IP); ushort length = 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 + length);
Box_Addr addr = GetAddr(u); // ushort u = (ushort)(i );
aio.WriteDO(addr, Box_Sta.Off); // Box_Addr addr = GetAddr(u);
aio.WriteDO(i, Box_Sta.Off);
} }
} }
} }
public override void CloseAllConnection() public override void CloseAllConnection()
{ {
foreach (AIOBOX2 aio in AIOMap.Values) foreach (AIOBOX aio in AIOMap.Values)
{ {
aio.Close(); aio.Close();
} }
AIOMap.Clear(); AIOMap.Clear();
timer.Stop();
timer = null;
} }
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)
{ {
try try
{ {
AIOBOX2 aioBox = getAIO(ioIp); AIOBOX aioBox = getAIO(ioIp);
if (aioBox != null) if (aioBox != null)
{ {
Box_Addr add = GetAddr(StartAddress); // Box_Addr add = GetAddr(StartAddress);
for (int i = 1; i <= 3; i++) for (int i = 1; i <= 3; i++)
{ {
bool result = aioBox.WriteDO(GetAddr(StartAddress), GetBox_Sta(onOff)); bool result = aioBox.WriteDO(StartAddress, GetBox_Sta(onOff));
if (!result) if (!result)
{ {
LogUtil.error("AIO WriteSingleDO [" + StartAddress + "] 第" + i + "次失败:" + aioBox.ErrInfo); LogUtil.error("AIO WriteSingleDO [" + StartAddress + "] 第" + i + "次失败:" + aioBox.ErrInfo);
...@@ -337,7 +315,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -337,7 +315,7 @@ namespace OnlineStore.DeviceLibrary
} }
else else
{ {
LogUtil.error(LOGGER, "ReadSingleDO出错没有连接IO模块:" + ioIp); LogUtil.error(LOGGER, "WriteSingleDO出错 没有连接IO模块:" + ioIp);
} }
} }
catch (Exception ex) catch (Exception ex)
...@@ -350,12 +328,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -350,12 +328,12 @@ namespace OnlineStore.DeviceLibrary
try try
{ {
AIOBOX2 aioBox = getAIO(ioIp); AIOBOX aioBox = getAIO(ioIp);
Box_Sta currBox_Sta = GetBox_Sta(onOff); Box_Sta currBox_Sta = GetBox_Sta(onOff);
if (aioBox != null) if (aioBox != null)
{ {
Box_Addr add = GetAddr(StartAddress); // Box_Addr add = GetAddr(StartAddress);
aioBox.WriteDO(GetAddr(StartAddress), currBox_Sta); aioBox.WriteDO(StartAddress, currBox_Sta);
//写入之后,等待指定间隔后回写 //写入之后,等待指定间隔后回写
System.Timers.Timer mytimer = new System.Timers.Timer(mSeconds); System.Timers.Timer mytimer = new System.Timers.Timer(mSeconds);
...@@ -363,7 +341,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -363,7 +341,7 @@ namespace OnlineStore.DeviceLibrary
{ {
try try
{ {
aioBox.WriteDO(GetAddr(StartAddress), aioBox.ReverseStatus(currBox_Sta)); aioBox.WriteDO(StartAddress, aioBox.ReverseStatus(currBox_Sta));
LogUtil.debug(LOGGER, "**********定时回写入 IO【" + ioIp + "," + StartAddress + ",值" + aioBox.ReverseStatus(currBox_Sta) + "】:"); LogUtil.debug(LOGGER, "**********定时回写入 IO【" + ioIp + "," + StartAddress + ",值" + aioBox.ReverseStatus(currBox_Sta) + "】:");
} }
catch (Exception ex) catch (Exception ex)
...@@ -376,22 +354,22 @@ namespace OnlineStore.DeviceLibrary ...@@ -376,22 +354,22 @@ namespace OnlineStore.DeviceLibrary
} }
else else
{ {
LogUtil.error(LOGGER, "WriteSingleDO出错没有连接IO模块:" + ioIp); LogUtil.error(LOGGER, "WriteSingleDO出错 没有连接IO模块:" + ioIp);
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
LogUtil.error("WriteSingleDO出错:" + ioIp); LogUtil.error("WriteSingleDO 出错:" + ioIp);
} }
} }
public override void ReadAllDI(string ioIp, byte slaveId) public override void ReadAllDI(string ioIp, byte slaveId)
{ {
try try
{ {
AIOBOX2 aioBox = getAIO(ioIp); AIOBOX aioBox = getAIO(ioIp);
if (aioBox != null) if (aioBox != null)
{ {
Box_Sta[] allDi = aioBox.ReadDI(Box_Addr.DI_1, StoreManager.Config.GetDILength(ioIp)); Box_Sta[] allDi = aioBox.ReadDI(0, GetDILength(ioIp));
UpdateAllDI(ioIp, allDi); UpdateAllDI(ioIp, allDi);
} }
} }
...@@ -404,10 +382,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -404,10 +382,11 @@ namespace OnlineStore.DeviceLibrary
{ {
try try
{ {
AIOBOX2 aioBox = getAIO(ioIp); AIOBOX aioBox = getAIO(ioIp);
if (aioBox != null) if (aioBox != null)
{ {
Box_Sta[] allDO = aioBox.ReadDO(Box_Addr.DO_1, StoreManager.Config.GetDOLength(ioIp)); // int startIndex = StoreManager.Config.GetDILength(ioIp);
Box_Sta[] allDO = aioBox.ReadDO(0, GetDOLength(ioIp));
UpdateAllDO(ioIp, allDO); UpdateAllDO(ioIp, allDO);
} }
} }
...@@ -421,18 +400,19 @@ namespace OnlineStore.DeviceLibrary ...@@ -421,18 +400,19 @@ namespace OnlineStore.DeviceLibrary
IO_VALUE value = IO_VALUE.LOW; IO_VALUE value = IO_VALUE.LOW;
try try
{ {
AIOBOX2 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); // Box_Addr addr = GetAddr(StartAddress);
int index = (int)StartAddress - (int)StoreManager.Config.GetDILength(ioIP);
if (DOValueMap.ContainsKey(ioIP) && DOValueMap[ioIP].Count > index) // int index = (int)StartAddress - (int)StoreManager.Config.GetDILength(ioIP);
if (DOValueMap.ContainsKey(ioIP) && DOValueMap[ioIP].Count > StartAddress)
{ {
sta = DOValueMap[ioIP][index]; sta = DOValueMap[ioIP][StartAddress];
} }
else else
{ sta = aioBox.ReadDO(addr); } { sta = aioBox.ReadDO(StartAddress); }
if (sta.Equals(Box_Sta.On)) if (sta.Equals(Box_Sta.On))
{ {
value = IO_VALUE.HIGH; value = IO_VALUE.HIGH;
...@@ -441,7 +421,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -441,7 +421,7 @@ namespace OnlineStore.DeviceLibrary
} }
catch (Exception ex) catch (Exception ex)
{ {
LogUtil.error("ReadDI 出错:" + ex.ToString()); LogUtil.error("GetDOValue 出错:" + ex.ToString());
} }
return value; return value;
} }
...@@ -451,19 +431,19 @@ namespace OnlineStore.DeviceLibrary ...@@ -451,19 +431,19 @@ namespace OnlineStore.DeviceLibrary
IO_VALUE value = IO_VALUE.LOW; IO_VALUE value = IO_VALUE.LOW;
try try
{ {
AIOBOX2 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); // Box_Addr addr = GetAddr(StartAddress);
int index = StartAddress; int index = StartAddress;
if (DIValueMap.ContainsKey(ioIP) && DIValueMap[ioIP].Count> index) if (DIValueMap.ContainsKey(ioIP) && DIValueMap[ioIP].Count > index)
{ {
sta = DIValueMap[ioIP][index]; sta = DIValueMap[ioIP][index];
} }
else else
{ {
sta= aioBox.ReadDI(addr ); sta = aioBox.ReadDI(StartAddress);
} }
if (sta.Equals(Box_Sta.On)) if (sta.Equals(Box_Sta.On))
{ {
...@@ -473,7 +453,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -473,7 +453,7 @@ namespace OnlineStore.DeviceLibrary
} }
catch (Exception ex) catch (Exception ex)
{ {
LogUtil.error("ReadDI 出错:" + ex.ToString()); LogUtil.error("GetDIValue 出错:" + ex.ToString());
} }
return value; return value;
} }
...@@ -493,14 +473,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -493,14 +473,14 @@ namespace OnlineStore.DeviceLibrary
} }
catch (Exception ex) catch (Exception ex)
{ {
LogUtil.error(LOGGER, "获取数据出错:" + ex.ToString()); LogUtil.error(LOGGER, " GetIOValue 获取数据出错:" + ex.ToString());
} }
return value; return value;
} }
private Box_Addr GetAddr(ushort StartAddress) private Box_Addr GetAddr(ushort StartAddress)
{ {
return (Box_Addr)(StartAddress ); return (Box_Addr)(StartAddress);
} }
private Box_Sta GetBox_Sta(IO_VALUE onOff) private Box_Sta GetBox_Sta(IO_VALUE onOff)
{ {
...@@ -514,9 +494,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -514,9 +494,9 @@ namespace OnlineStore.DeviceLibrary
} }
} }
private AIOBOX2 getAIO(string ioIp) private AIOBOX getAIO(string ioIp)
{ {
AIOBOX2 aioBox = null; AIOBOX aioBox = null;
if (AIOMap.ContainsKey(ioIp)) if (AIOMap.ContainsKey(ioIp))
{ {
aioBox = AIOMap[ioIp]; aioBox = AIOMap[ioIp];
......
...@@ -11,7 +11,31 @@ namespace OnlineStore.DeviceLibrary ...@@ -11,7 +11,31 @@ namespace OnlineStore.DeviceLibrary
public abstract class IOManager public abstract class IOManager
{ {
public static IOManager instance = null; public static IOManager instance = null;
protected static ushort GetDILength(string ioIp)
{
try
{
return StoreManager.Config.GetDILength(ioIp);
}
catch (Exception ex)
{
}
return 16;
}
protected static ushort GetDOLength(string ioIp)
{
try
{
return StoreManager.Config.GetDOLength(ioIp);
}
catch (Exception ex)
{
}
return 16;
}
public abstract void ConnectionIOList(List<string> dIODeviceNameList); public abstract void ConnectionIOList(List<string> dIODeviceNameList);
......
...@@ -125,7 +125,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -125,7 +125,7 @@ namespace OnlineStore.DeviceLibrary
Thread.Sleep(10); Thread.Sleep(10);
//读取所有的DO //读取所有的DO
ReadMultipleDO(ioIp, DefualtSlaveID, DoStartAddress, StoreManager.Config.GetDOLength(ioIp)); ReadMultipleDO(ioIp, DefualtSlaveID, DoStartAddress, GetDOLength(ioIp));
} }
catch (Exception error) catch (Exception error)
...@@ -245,7 +245,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -245,7 +245,7 @@ namespace OnlineStore.DeviceLibrary
foreach (string key in mastMap.Keys) foreach (string key in mastMap.Keys)
{ {
byte[] data = new byte[] { 0, 0 }; byte[] data = new byte[] { 0, 0 };
WriteMultipleDO(key, DefualtSlaveID, DoStartAddress, StoreManager.Config.GetDOLength(key), data); WriteMultipleDO(key, DefualtSlaveID, DoStartAddress, GetDOLength(key), data);
} }
} }
...@@ -263,7 +263,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -263,7 +263,7 @@ namespace OnlineStore.DeviceLibrary
} }
public static void CloseAllDO(string ioIp, byte slaveId) public static void CloseAllDO(string ioIp, byte slaveId)
{ {
ushort length = StoreManager.Config.GetDOLength(ioIp); ushort length = GetDOLength(ioIp);
byte[] bytes = new byte[length]; byte[] bytes = new byte[length];
for (int i = 0; i < length; i++) for (int i = 0; i < length; i++)
{ {
...@@ -448,7 +448,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -448,7 +448,7 @@ namespace OnlineStore.DeviceLibrary
{ {
try try
{ {
ushort DILength = StoreManager.Config.GetDILength(ioIp); ushort DILength =GetDILength(ioIp);
string finalData = ""; string finalData = "";
if (values.Length == 2 && DILength.Equals(16)) if (values.Length == 2 && DILength.Equals(16))
{ {
...@@ -496,9 +496,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -496,9 +496,10 @@ namespace OnlineStore.DeviceLibrary
} }
} }
private static void SaveDOData(string ioIp, ushort ID, byte[] values) private static void SaveDOData(string ioIp, ushort ID, byte[] values)
{ {
ushort DoLength = StoreManager.Config.GetDOLength(ioIp); ushort DoLength = GetDOLength(ioIp);
string finalData = ""; string finalData = "";
if (values.Length == 2 && DoLength.Equals(16)) if (values.Length == 2 && DoLength.Equals(16))
{ {
......
...@@ -83,7 +83,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -83,7 +83,7 @@ namespace OnlineStore.DeviceLibrary
int ACBaudRate = ConfigAppSettings.GetIntValue(Setting_Init.ACBaudRate); int ACBaudRate = ConfigAppSettings.GetIntValue(Setting_Init.ACBaudRate);
if (ACBaudRate <= 0) if (ACBaudRate <= 0)
{ {
ACBaudRate = 9600; ACBaudRate = 115200;
} }
AcSerialBean bean = new AcSerialBean(portName, ACBaudRate, Parity.Even, 8, StopBits.One); AcSerialBean bean = new AcSerialBean(portName, ACBaudRate, Parity.Even, 8, StopBits.One);
bool result = bean.openPort(); bool result = bean.openPort();
......
...@@ -1624,13 +1624,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -1624,13 +1624,13 @@ namespace OnlineStore.DeviceLibrary
boxStatus.SetMsg(obj.WarnMsg, obj.MsgCode, obj.MsgParam); boxStatus.SetMsg(obj.WarnMsg, obj.MsgCode, obj.MsgParam);
lineOperation.SetMsg(obj.WarnMsg, obj.MsgCode, obj.MsgParam); lineOperation.SetMsg(obj.WarnMsg, obj.MsgCode, obj.MsgParam);
} }
if (lineOperation.msg.Equals("")) if (lineOperation.msg.Equals("") && (!AutomaticBaiting.CodeMsg.Equals("")))
{ {
boxStatus.SetMsg(AutomaticBaiting.CodeMsg, ResourceControl.NoCodeMsg ); boxStatus.SetMsg(AutomaticBaiting.CodeMsg, ResourceControl.NoCodeMsg);
lineOperation.SetMsg(AutomaticBaiting.CodeMsg, ResourceControl.NoCodeMsg); lineOperation.SetMsg(AutomaticBaiting.CodeMsg, ResourceControl.NoCodeMsg);
AutomaticBaiting.CodeMsg = ""; AutomaticBaiting.CodeMsg = "";
} }
if (lineOperation.msg.Equals("")) if (lineOperation.msg.Equals("") && (!CodeOrInoutMsg.Equals("")))
{ {
boxStatus.SetMsg(CodeOrInoutMsg, ResourceControl.InStoreNoCode); boxStatus.SetMsg(CodeOrInoutMsg, ResourceControl.InStoreNoCode);
lineOperation.SetMsg(CodeOrInoutMsg, ResourceControl.InStoreNoCode); lineOperation.SetMsg(CodeOrInoutMsg, ResourceControl.InStoreNoCode);
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!