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 @@
AIOBOX操作类
</summary>
</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">
<summary>
自动读取DI委托
......@@ -33,41 +57,28 @@
自动读取DO事件触发
</summary>
</member>
<member name="T:Asa.IOModule.AIOBOX.Log_Out">
<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">
<member name="T:Asa.IOModule.AIOBOX.AI_Changed">
<summary>
日志输出
自动读取AI委托
</summary>
<param name="box"></param>
<param name="s"></param>
<param name="box">AIOBOX</param>
<param name="val">所有AI的值</param>
</member>
<member name="E:Asa.IOModule.AIOBOX.Log_RxTx_Event">
<member name="E:Asa.IOModule.AIOBOX.AI_Changed_Event">
<summary>
日志输出事件,发送命令的标识减去接收命令的标识
自动读取AI事件触发
</summary>
</member>
<member name="T:Asa.IOModule.AIOBOX.Reconnect">
<member name="T:Asa.IOModule.AIOBOX.AO_Changed">
<summary>
断开重连
自动读取AO委托
</summary>
<param name="box"></param>
<param name="times">断开次数</param>
<param name="conn"></param>
<param name="box">AIOBOX</param>
<param name="val">所有AO的值</param>
</member>
<member name="E:Asa.IOModule.AIOBOX.Reconnect_Event">
<member name="E:Asa.IOModule.AIOBOX.AO_Changed_Event">
<summary>
断开重连事件
自动读取AO事件触发
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.#ctor">
......@@ -95,15 +106,56 @@
错误信息
</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">
<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>
</member>
<member name="P:Asa.IOModule.AIOBOX.Type">
<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>
<param name="localIP">本地IP地址</param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.Connect">
<summary>
......@@ -116,62 +168,92 @@
关闭连接
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.AutoReadDI(System.Boolean,System.Int32)">
<member name="M:Asa.IOModule.AIOBOX.AutoReadInput(System.Boolean,System.Int32)">
<summary>
自动读取DI状态,触发DI_Changed_Event
自动读取输入端,触发事件
</summary>
<param name="read">是否自动读取</param>
<param name="sleep">间隔,必须大于10ms</param>
<param name="sleep">间隔,必须大于15ms</param>
</member>
<member name="M:Asa.IOModule.AIOBOX.AutoReadDO(System.Boolean,System.Int32)">
<member name="M:Asa.IOModule.AIOBOX.AutoReadOutput(System.Boolean,System.Int32)">
<summary>
自动读取DO状态,触发DO_Changed_Event
自动读取输出端,触发事件
</summary>
<param name="read">是否自动读取</param>
<param name="sleep">间隔,必须大于10ms</param>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReverseStatus(Asa.IOModule.Box_Sta)">
<summary>
相反状态
相反状态(ON/OFF)
</summary>
<param name="sta"></param>
<returns></returns>
</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>
读取单个DI
读取单个DO输出状态(ON/OFF)
</summary>
<param name="add"></param>
<param name="add">输出地址,从0开始</param>
<returns></returns>
</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>
读取多个DI
读取多个DO输出状态(ON/OFF)
</summary>
<param name="add"></param>
<param name="count"></param>
<param name="add">起始地址,从0开始</param>
<param name="count">数量</param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadDO(Asa.IOModule.Box_Addr)">
<member name="M:Asa.IOModule.AIOBOX.ReadAO(System.Int32)">
<summary>
读取单个DO
读取单个AO模拟量的值
</summary>
<param name="add"></param>
<param name="add">输出地址,从0开始</param>
<returns></returns>
</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>
读取多个DO
读取多个AO模拟量的值
</summary>
<param name="add"></param>
<param name="count"></param>
<param name="add">起始地址,从0开始</param>
<param name="count">数量</param>
<returns></returns>
</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>
写入单个DO
写入单个DO输出状态(ON/OFF)
</summary>
<param name="add"></param>
<param name="add">输出地址,从0开始</param>
<param name="sta"></param>
<returns></returns>
</member>
......@@ -193,21 +275,28 @@
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadSingle(System.Byte[])">
<summary>
读取单个DO
读取写入单个DO,功能码5
</summary>
<param name="buff"></param>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadDO(System.Byte[])">
<summary>
读取所有DO状态
读取所有DO状态,功能码1
</summary>
<param name="buff"></param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadDI(System.Byte[])">
<summary>
读取所有DI状态
读取所有DI状态,功能码2
</summary>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.ReadAI(System.Byte[])">
<summary>
读取所有AI的值,功能码4
</summary>
<param name="buff"></param>
<returns></returns>
</member>
<member name="M:Asa.IOModule.AIOBOX.Command">
......@@ -221,40 +310,59 @@
触发DIO改变事件
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.LogPrint">
<member name="M:Asa.IOModule.AIOBOX.AutoReadInput">
<summary>
日志输出线程
自动读取输入端线程
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.AutoReadDI">
<member name="M:Asa.IOModule.AIOBOX.AutoReadOutput">
<summary>
自动读取DIO线程
自动读取输出端线程
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.AutoReadDO">
<member name="M:Asa.IOModule.AIOBOX.Listen">
<summary>
自动读取DIO线程
监听结果线程
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.Listen">
<member name="T:Asa.IOModule.Box_Type">
<summary>
监听结果线程
IO模块类型
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.Target(System.IAsyncResult)">
<member name="F:Asa.IOModule.Box_Type.DI">
<summary>
回调函数,开启监听线程
数字信号输入
</summary>
<param name="args"></param>
</member>
<member name="M:Asa.IOModule.AIOBOX.Reconn">
<member name="F:Asa.IOModule.Box_Type.DO">
<summary>
断开重连
数字信号输出
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.CloseConn">
<member name="F:Asa.IOModule.Box_Type.AI">
<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>
</member>
<member name="T:Asa.IOModule.Reg">
......@@ -490,39 +598,14 @@
</summary>
</member>
<member name="T:Asa.IOModule.Box_Type">
<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">
<member name="T:Asa.IOModule.DI_Addr">
<summary>
断开,关闭,低电平
输入端地址
</summary>
</member>
<member name="F:Asa.IOModule.Box_Sta.On">
<member name="T:Asa.IOModule.DO_Addr">
<summary>
闭合,打开,高电平
输入端地址
</summary>
</member>
</members>
......
......@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ACServoDriveTest</RootNamespace>
<AssemblyName>ACServoDriveTest</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
......@@ -22,6 +22,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
......@@ -31,6 +32,7 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
......
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
</startup>
</configuration>
......@@ -593,7 +593,7 @@
this.txtAddr.Name = "txtAddr";
this.txtAddr.Size = new System.Drawing.Size(103, 21);
this.txtAddr.TabIndex = 95;
this.txtAddr.Text = "1";
this.txtAddr.Text = "4";
//
// label18
//
......
......@@ -47,7 +47,7 @@ namespace ACServoDriveTest.Properties {
}
/// <summary>
/// 使用此强类型资源类,为所有资源查找
/// 重写当前线程的 CurrentUICulture 属性
/// 重写当前线程的 CurrentUICulture 属性。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
......
......@@ -12,7 +12,7 @@ namespace ACServoDriveTest.Properties {
[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 {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
......
......@@ -19,7 +19,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DefineConstants>TRACE;DEBUG;PositionTool</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
......@@ -92,6 +92,12 @@
<DependentUpon>FrmStoreBox.cs</DependentUpon>
</Compile>
<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="Properties\AssemblyInfo.cs" />
<Compile Include="ResourceCulture.cs" />
......@@ -110,6 +116,9 @@
<EmbeddedResource Include="FrmStoreBox.resx">
<DependentUpon>FrmStoreBox.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="positionTool\FrmPositionTool.resx">
<DependentUpon>FrmPositionTool.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resource.en-US.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
......
......@@ -8,7 +8,7 @@ using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms;
namespace OnlineStore.AutoInOutStore
{
......@@ -46,7 +46,7 @@ namespace OnlineStore.AutoInOutStore
public static readonly ILog LOGGER = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
#endregion
/// <summary>
/// 应用程序的主入口点。
/// </summary>
......@@ -93,10 +93,24 @@ namespace OnlineStore.AutoInOutStore
}
if (!isShow)
{
XmlConfigurator.Configure();
XmlConfigurator.Configure();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FrmStoreBox());
#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());
}
#endif
}
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
......
namespace OnlineStore.ACSingleStore
namespace OnlineStore.AutoInOutStore
{
partial class FrmPositionTool
{
......@@ -30,7 +30,7 @@
{
this.components = new System.ComponentModel.Container();
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.txtPortName = new System.Windows.Forms.TextBox();
this.txtIOIndex = new System.Windows.Forms.TextBox();
......@@ -57,6 +57,9 @@
this.txtSpeed = new System.Windows.Forms.TextBox();
this.label12 = new System.Windows.Forms.Label();
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.SuspendLayout();
//
......@@ -65,7 +68,10 @@
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.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.txtPortName);
this.groupBox6.Controls.Add(this.txtIOIndex);
......@@ -99,20 +105,19 @@
this.groupBox6.TabStop = false;
this.groupBox6.Text = "伺服运动测试";
//
// textBox1
// txtFileName
//
this.textBox1.Enabled = false;
this.textBox1.Location = new System.Drawing.Point(132, 185);
this.textBox1.MaxLength = 30;
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(131, 26);
this.textBox1.TabIndex = 278;
this.textBox1.Text = "position.csv";
this.txtFileName.Location = new System.Drawing.Point(114, 185);
this.txtFileName.MaxLength = 30;
this.txtFileName.Name = "txtFileName";
this.txtFileName.Size = new System.Drawing.Size(164, 26);
this.txtFileName.TabIndex = 278;
this.txtFileName.Text = "position.csv";
//
// label3
//
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.Size = new System.Drawing.Size(107, 20);
this.label3.TabIndex = 277;
......@@ -121,27 +126,27 @@
// txtPortName
//
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.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.Text = "COM1";
//
// txtIOIndex
//
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.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.Text = "1";
//
// label2
//
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.Size = new System.Drawing.Size(107, 20);
this.label2.TabIndex = 274;
......@@ -150,17 +155,17 @@
// txtIoIp
//
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.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.Text = "192.168.201.11";
//
// label1
//
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.Size = new System.Drawing.Size(79, 20);
this.label1.TabIndex = 272;
......@@ -169,7 +174,7 @@
// label7
//
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.Size = new System.Drawing.Size(79, 20);
this.label7.TabIndex = 271;
......@@ -178,17 +183,17 @@
// txtActualPosition
//
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.Name = "txtActualPosition";
this.txtActualPosition.Size = new System.Drawing.Size(131, 26);
this.txtActualPosition.Size = new System.Drawing.Size(164, 26);
this.txtActualPosition.TabIndex = 270;
//
// 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.Size = new System.Drawing.Size(111, 36);
this.btnGetActualPosition.Size = new System.Drawing.Size(132, 36);
this.btnGetActualPosition.TabIndex = 269;
this.btnGetActualPosition.Text = "读取位置";
this.btnGetActualPosition.UseVisualStyleBackColor = true;
......@@ -197,7 +202,7 @@
// label6
//
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.Size = new System.Drawing.Size(79, 20);
this.label6.TabIndex = 268;
......@@ -206,17 +211,17 @@
// txtTargetPosition
//
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.Name = "txtTargetPosition";
this.txtTargetPosition.Size = new System.Drawing.Size(131, 26);
this.txtTargetPosition.Size = new System.Drawing.Size(164, 26);
this.txtTargetPosition.TabIndex = 267;
//
// 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.Size = new System.Drawing.Size(111, 36);
this.btnServoOff.Size = new System.Drawing.Size(132, 36);
this.btnServoOff.TabIndex = 259;
this.btnServoOff.Text = "关闭伺服";
this.btnServoOff.UseVisualStyleBackColor = true;
......@@ -224,9 +229,9 @@
//
// 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.Size = new System.Drawing.Size(111, 36);
this.btnServoOn.Size = new System.Drawing.Size(132, 36);
this.btnServoOn.TabIndex = 258;
this.btnServoOn.Text = "打开伺服";
this.btnServoOn.UseVisualStyleBackColor = true;
......@@ -234,9 +239,9 @@
//
// 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.Size = new System.Drawing.Size(111, 36);
this.btnSdStop.Size = new System.Drawing.Size(132, 36);
this.btnSdStop.TabIndex = 257;
this.btnSdStop.Text = "停止";
this.btnSdStop.UseVisualStyleBackColor = true;
......@@ -244,9 +249,9 @@
//
// 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.Size = new System.Drawing.Size(111, 36);
this.btnHomeMove.Size = new System.Drawing.Size(132, 36);
this.btnHomeMove.TabIndex = 110;
this.btnHomeMove.Text = "原点返回";
this.btnHomeMove.UseVisualStyleBackColor = true;
......@@ -255,9 +260,9 @@
// btnClear
//
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.Size = new System.Drawing.Size(105, 32);
this.btnClear.Size = new System.Drawing.Size(132, 36);
this.btnClear.TabIndex = 106;
this.btnClear.Text = "清理";
this.btnClear.UseVisualStyleBackColor = true;
......@@ -268,26 +273,27 @@
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.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.Size = new System.Drawing.Size(565, 581);
this.richTextBox1.Size = new System.Drawing.Size(553, 581);
this.richTextBox1.TabIndex = 105;
this.richTextBox1.Text = "";
//
// txtAddr
//
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.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.Text = "1";
//
// label18
//
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.Size = new System.Drawing.Size(51, 20);
this.label18.TabIndex = 94;
......@@ -296,7 +302,7 @@
// label13
//
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.Size = new System.Drawing.Size(51, 20);
this.label13.TabIndex = 90;
......@@ -304,18 +310,18 @@
//
// 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.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.Text = "5000";
//
// 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.Size = new System.Drawing.Size(111, 36);
this.btnAbsMove.Size = new System.Drawing.Size(132, 36);
this.btnAbsMove.TabIndex = 88;
this.btnAbsMove.Text = "开始运动";
this.btnAbsMove.UseVisualStyleBackColor = true;
......@@ -324,7 +330,7 @@
// label8
//
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.Size = new System.Drawing.Size(51, 20);
this.label8.TabIndex = 84;
......@@ -332,17 +338,17 @@
//
// 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.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.Text = "20";
//
// label12
//
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.Size = new System.Drawing.Size(65, 20);
this.label12.TabIndex = 1;
......@@ -353,6 +359,37 @@
this.timer1.Interval = 1000;
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
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
......@@ -362,6 +399,8 @@
this.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Name = "FrmPositionTool";
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.groupBox6.ResumeLayout(false);
this.groupBox6.PerformLayout();
......@@ -397,8 +436,11 @@
private System.Windows.Forms.TextBox txtIoIp;
private System.Windows.Forms.Label label1;
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 UserFromControl.IOStatusControl ioStatusControl1;
private System.Windows.Forms.Button btnOpenFolder;
private System.Windows.Forms.Button btnExit;
}
}

using OnlineStore.Common;
using OnlineStore.DeviceLibrary;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.IO.Ports;
using System.Linq;
using System.Text;
......@@ -13,14 +15,16 @@ using System.Threading;
using System.Threading.Tasks;
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 int SlvAddr = 0;
private string IoIp = "";
private int IoIndex = 0;
public string Axis_Brake = IO_Type.Axis_Brake;
private System.Timers.Timer toolTimer = new System.Timers.Timer();
public FrmPositionTool(string protName, int slvAddr,string ioIp, int ioIndex)
{
......@@ -34,11 +38,13 @@ namespace OnlineStore.ACSingleStore
toolTimer.Interval = 300;
toolTimer.AutoReset = true;
toolTimer.Elapsed += ToolTimer_Elapsed;
FrmPositionTool.CheckForIllegalCrossThreadCalls = false;
}
private void Form1_Load(object sender, EventArgs e)
{
ACServerManager.IsShowMsg = true;
ACServerManager.IsShowMsg = false;
LogUtil.logBox = this.richTextBox1;
//ACServerManager.richeBox = this.richTextBox1;
formStatus(false);
......@@ -47,8 +53,13 @@ namespace OnlineStore.ACSingleStore
txtAddr.Text = SlvAddr.ToString();
txtIOIndex .Text= IoIndex.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)
{
......@@ -66,14 +77,34 @@ namespace OnlineStore.ACSingleStore
Thread.Sleep(100);
ACServerManager.AlarmClear(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)
{
toolTimer.Stop();
StopTimer();
// toolTimer.Stop();
ACServerManager.SuddenStop(PortName, SlvAddr);
Thread.Sleep(100);
try
{
IOManager.IOMove(Axis_Brake, IO_VALUE.LOW);
}
catch (Exception ex)
{
}
ACServerManager.ServoOff(PortName, SlvAddr);
formStatus(false );
}
private void formStatus(bool p)
......@@ -81,7 +112,7 @@ namespace OnlineStore.ACSingleStore
txtPortName.Enabled = !p;
txtAddr.Enabled = !p;
txtIOIndex.Enabled = !p;
txtIoIp.Enabled = !p;
// txtIoIp.Enabled = !p;
btnAbsMove.Enabled = p;
btnSdStop.Enabled = p;
......@@ -112,7 +143,14 @@ namespace OnlineStore.ACSingleStore
int speed = Convert.ToInt32(txtSpeed.Text);
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)
{
int speed = Convert.ToInt32(txtSpeed.Text);
......@@ -125,8 +163,21 @@ namespace OnlineStore.ACSingleStore
txtSpeed.Focus();
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();
ACServerManager.AbsMove(PortName, SlvAddr, position);
}
private void btnSdStop_Click(object sender, EventArgs e)
......@@ -135,19 +186,85 @@ namespace OnlineStore.ACSingleStore
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);
txtTargetPosition.Text = value.ToString();
value = ACServerManager.GetActualtPosition(PortName, SlvAddr);
txtActualPosition.Text = value.ToString();
TimeSpan span = DateTime.Now - LastTime;
if (isInProcesss && span.TotalSeconds < 1)
{
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;
}
LastValue = currValue;
}
else
{
StopTimer();
}
}catch(Exception ex)
{
LogUtil.error(LogName+"ToolTimer_Elapsed" + ex.ToString());
}
isInProcesss = false;
}
private bool isInProcesss = false;
private void ToolTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
private void StopTimer()
{
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
{
// Clipboard.SetDataObject(resultstr);
File.WriteAllText(filePath, resultstr);
LogUtil.error(LogName + "保存位置到文件【" + filePath + "】成功");
}
catch (Exception ex)
{
LogUtil.error(LogName + "保存位置到文件【" + filePath + "】出错:" + ex.ToString());
}
}
private int getDataIndex = 0;
......@@ -155,22 +272,37 @@ namespace OnlineStore.ACSingleStore
{
try
{
getDataIndex++;
{
ioStatusControl1.IOValue = (int)GetSingleValue();
ioStatusControl1.ShowData();
}
catch (Exception ex)
{
}
}
try
{
}
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
public static System.Windows.Forms.RichTextBox logBox = null;
public static int showCount = 20;
public static int showCount = 100;
public static bool debug_opened = false;
......
......@@ -18,7 +18,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DefineConstants>TRACE;DEBUG;PositionTool</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
......@@ -36,6 +36,9 @@
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Asa.IOModule.AIOBOX">
<HintPath>..\..\dll\Asa.IOModule.AIOBOX.dll</HintPath>
</Reference>
<Reference Include="CodeLibrary">
<HintPath>..\..\dll\CodeLibrary.dll</HintPath>
</Reference>
......@@ -61,11 +64,8 @@
<Compile Include="acSingleStore\AutomaticBaiting_Partial.cs" />
<Compile Include="acSingleStore\StoreManager.cs" />
<Compile Include="acSingleStore\AutomaticBaiting.cs" />
<Compile Include="DeviceLibrary\IO\AIOBOX\BLL2.cs" />
<Compile Include="DeviceLibrary\halcon\CodeManager.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\KangNaiDe\KNDManager.cs" />
<Compile Include="DeviceLibrary\IO\KangNaiDe\MasterTcpClient.cs" />
......
......@@ -3,7 +3,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Text;
using System.Threading;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
......@@ -16,20 +16,20 @@ namespace OnlineStore.DeviceLibrary
{
//public static uint DefaultDICount = 16;
//public static uint DefaultDOCount = 16;
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>> DOValueMap = new Dictionary<string, List<Box_Sta>>();
private object DIMapLock = "";
private object DOMapLock = "";
public System.Timers.Timer timer = null;
private object DILock = "";
private object DOLock = "";
public void ConnectionIP(string ioIp )
public void ConnectionIP(string ioIp)
{
AIOBOX2 aioBox = null;
AIOBOX aioBox = null;
if (AIOMap.ContainsKey(ioIp))
{
aioBox = AIOMap[ioIp];
......@@ -43,53 +43,52 @@ namespace OnlineStore.DeviceLibrary
}
if (DIValueMap.ContainsKey(ioIp))
{
DIValueMap.Remove(ioIp);
DIValueMap.Remove(ioIp);
}
if (DOValueMap.ContainsKey(ioIp))
{
DOValueMap.Remove(ioIp);
DOValueMap.Remove(ioIp);
}
int DIMS = ConfigAppSettings.GetIntValue("DIMS");
if (DIMS < 20)
{
DIMS = 20;
}
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
{
// Create new modbus master and add event functions
aioBox = new AIOBOX2();
aioBox = new AIOBOX();
aioBox.IP = ioIp;
int DIMS = ConfigAppSettings.GetIntValue("DIMS");
if (DIMS < 20)
{
DIMS = 20;
}
int DOMS = ConfigAppSettings.GetIntValue("DOMS");
if (DOMS < 200)
{
DOMS = 200;
}
aioBox.AutoReadDI(true, DIMS);
aioBox.AutoReadDO (true, DOMS);
// bool rtn = aioBox.AutoIP(ioIp);
aioBox.SetInput(Asa.IOModule.Box_Type.DI, DILength);
aioBox.SetOutput(Asa.IOModule.Box_Type.DO, DOLength);
aioBox.AutoReadInput(true, DIMS);
aioBox.AutoReadOutput(true, DOMS);
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.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;
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();
if (result)
{
LogUtil.info("第【"+i+"】次连接IO模块【" + ioIp + "】成功:" + aioBox.ErrInfo);
LogUtil.info("第【" + i + "】次连接 " + logName + " 成功:" + aioBox.ErrInfo);
Thread.Sleep(10);
//读取所有的DO
ReadAllDI(ioIp, 0);
......@@ -97,26 +96,19 @@ namespace OnlineStore.DeviceLibrary
}
else
{
LogUtil.error("第【" + i + "】次连接IO模块【" + ioIp + "】失败:" + aioBox.ErrInfo + "");
LogUtil.error("第【" + i + "】次连接 " + logName + " 失败:" + aioBox.ErrInfo + "");
}
Thread.Sleep(10);
}
if (timer == null)
{
timer = new System.Timers.Timer();
timer.Interval = 5000;
timer.AutoReset = true;
timer.Elapsed += timer_Elapsed;
timer.Enabled = true;
Thread.Sleep(2);
}
}
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;
string msg = "重连AIO块【" + box.IP + "】次数:" + times + "【" + box.ErrInfo + "】,连接信息如下\r\n";
......@@ -129,20 +121,9 @@ namespace OnlineStore.DeviceLibrary
}
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)
{
......@@ -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
{
......@@ -161,10 +142,11 @@ namespace OnlineStore.DeviceLibrary
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
{
UpdateAllDO(box.IP, sta);
}
catch (Exception ex)
......@@ -175,8 +157,9 @@ namespace OnlineStore.DeviceLibrary
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;
List<Box_Sta> newList = new List<Box_Sta>();
newList.AddRange(sta);
......@@ -188,6 +171,14 @@ namespace OnlineStore.DeviceLibrary
}
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++)
{
if (!(oldList[i].Equals(newList[i])))
......@@ -208,17 +199,24 @@ namespace OnlineStore.DeviceLibrary
DIValueMap.Add(ip, newList);
}
}
}
}
}
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;
List<Box_Sta> newList = new List<Box_Sta>();
newList.AddRange(sta);
List<Box_Sta> oldList = null;
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))
{
needUpdate = true;
......@@ -246,85 +244,65 @@ namespace OnlineStore.DeviceLibrary
}
}
}
//else
//{
// if (sta == null)
// {
// LogUtil.error("UpdateAllDO ip[" + ip + "], sta=null");
// }
// else
// {
// LogUtil.error(" UpdateAllDO ip[" + ip + "], sta.Length=" + sta.Length);
// }
//}
}
private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
try
{
//List<string> list = new List<string>(AIOMap.Keys);
//foreach (string io in list)
//{
// //判断是否连接,如果没有连接自动重连
// AIOBOX2 client = AIOMap[io];
// if (!client.IsConn)
// {
// //重连
// bool result = client.Connect();
// if (result)
// {
// LogUtil.info("重连O模块【" + client.IP + "】成功:" + client.ErrInfo);
// }
// else
// {
// LogUtil.error("重连O模块【" + client.IP + "】失败:" + client.ErrInfo);
// }
// }
//}
}
catch (Exception ex)
{
LogUtil.error(LOGGER, "出错啦:" + ex.ToString());
}
Thread.Sleep(1);
}
public override void ConnectionIOList(List<string> DIONameList)
{
{
foreach (string ip in DIONameList)
{
ConnectionIP(ip );
{
ConnectionIP(ip);
}
}
//关闭所有的DO
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++)
{
ushort u =(ushort)( i + length);
Box_Addr addr = GetAddr(u);
aio.WriteDO(addr, Box_Sta.Off);
}
// ushort u = (ushort)(i + length);
// ushort u = (ushort)(i );
// Box_Addr addr = GetAddr(u);
aio.WriteDO(i, Box_Sta.Off);
}
}
}
public override void CloseAllConnection()
{
foreach (AIOBOX2 aio in AIOMap.Values)
foreach (AIOBOX aio in AIOMap.Values)
{
aio.Close();
}
AIOMap.Clear();
timer.Stop();
timer = null;
}
public override void WriteSingleDO(string ioIp, byte slaveId, ushort StartAddress, IO_VALUE onOff)
{
try
{
AIOBOX2 aioBox = getAIO(ioIp);
AIOBOX aioBox = getAIO(ioIp);
if (aioBox != null)
{
Box_Addr add = GetAddr(StartAddress);
// Box_Addr add = GetAddr(StartAddress);
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)
{
LogUtil.error("AIO WriteSingleDO [" + StartAddress + "] 第" + i + "次失败:" + aioBox.ErrInfo);
......@@ -337,25 +315,25 @@ namespace OnlineStore.DeviceLibrary
}
else
{
LogUtil.error(LOGGER, "ReadSingleDO出错没有连接IO模块:" + ioIp);
LogUtil.error(LOGGER, "WriteSingleDO出错 没有连接IO模块:" + ioIp);
}
}
catch (Exception ex)
{
LOGGER.Error("出错啦:" + ex.ToString());
}
}
}
public override void WriteSingleDO(string ioIp, byte slaveId, ushort StartAddress, IO_VALUE onOff, int mSeconds)
{
try
{
AIOBOX2 aioBox = getAIO(ioIp);
AIOBOX aioBox = getAIO(ioIp);
Box_Sta currBox_Sta = GetBox_Sta(onOff);
if (aioBox != null)
{
Box_Addr add = GetAddr(StartAddress);
aioBox.WriteDO(GetAddr(StartAddress), currBox_Sta);
// Box_Addr add = GetAddr(StartAddress);
aioBox.WriteDO(StartAddress, currBox_Sta);
//写入之后,等待指定间隔后回写
System.Timers.Timer mytimer = new System.Timers.Timer(mSeconds);
......@@ -363,7 +341,7 @@ namespace OnlineStore.DeviceLibrary
{
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) + "】:");
}
catch (Exception ex)
......@@ -376,22 +354,22 @@ namespace OnlineStore.DeviceLibrary
}
else
{
LogUtil.error(LOGGER, "WriteSingleDO出错没有连接IO模块:" + ioIp);
LogUtil.error(LOGGER, "WriteSingleDO出错 没有连接IO模块:" + ioIp);
}
}
catch (Exception ex)
{
LogUtil.error("WriteSingleDO出错:" + ioIp);
LogUtil.error("WriteSingleDO 出错:" + ioIp);
}
}
public override void ReadAllDI(string ioIp, byte slaveId)
{
try
{
AIOBOX2 aioBox = getAIO(ioIp);
AIOBOX aioBox = getAIO(ioIp);
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);
}
}
......@@ -404,11 +382,12 @@ namespace OnlineStore.DeviceLibrary
{
try
{
AIOBOX2 aioBox = getAIO(ioIp);
AIOBOX aioBox = getAIO(ioIp);
if (aioBox != null)
{
Box_Sta[] allDO = aioBox.ReadDO(Box_Addr.DO_1, StoreManager.Config.GetDOLength(ioIp));
UpdateAllDO(ioIp, allDO);
// int startIndex = StoreManager.Config.GetDILength(ioIp);
Box_Sta[] allDO = aioBox.ReadDO(0, GetDOLength(ioIp));
UpdateAllDO(ioIp, allDO);
}
}
catch (Exception ex)
......@@ -421,18 +400,19 @@ namespace OnlineStore.DeviceLibrary
IO_VALUE value = IO_VALUE.LOW;
try
{
AIOBOX2 aioBox = getAIO(ioIP);
AIOBOX aioBox = getAIO(ioIP);
if (aioBox != null)
{
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 > index)
// Box_Addr addr = GetAddr(StartAddress);
// 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
{ sta = aioBox.ReadDO(addr); }
{ sta = aioBox.ReadDO(StartAddress); }
if (sta.Equals(Box_Sta.On))
{
value = IO_VALUE.HIGH;
......@@ -441,7 +421,7 @@ namespace OnlineStore.DeviceLibrary
}
catch (Exception ex)
{
LogUtil.error("ReadDI 出错:" + ex.ToString());
LogUtil.error("GetDOValue 出错:" + ex.ToString());
}
return value;
}
......@@ -451,19 +431,19 @@ namespace OnlineStore.DeviceLibrary
IO_VALUE value = IO_VALUE.LOW;
try
{
AIOBOX2 aioBox = getAIO(ioIP);
AIOBOX aioBox = getAIO(ioIP);
if (aioBox != null)
{
Box_Sta sta = Box_Sta.Off;
Box_Addr addr = GetAddr(StartAddress);
// Box_Addr addr = GetAddr(StartAddress);
int index = StartAddress;
if (DIValueMap.ContainsKey(ioIP) && DIValueMap[ioIP].Count> index)
if (DIValueMap.ContainsKey(ioIP) && DIValueMap[ioIP].Count > index)
{
sta = DIValueMap[ioIP][index];
}
else
{
sta= aioBox.ReadDI(addr );
sta = aioBox.ReadDI(StartAddress);
}
if (sta.Equals(Box_Sta.On))
{
......@@ -473,7 +453,7 @@ namespace OnlineStore.DeviceLibrary
}
catch (Exception ex)
{
LogUtil.error("ReadDI 出错:" + ex.ToString());
LogUtil.error("GetDIValue 出错:" + ex.ToString());
}
return value;
}
......@@ -493,14 +473,14 @@ namespace OnlineStore.DeviceLibrary
}
catch (Exception ex)
{
LogUtil.error(LOGGER, "获取数据出错:" + ex.ToString());
LogUtil.error(LOGGER, " GetIOValue 获取数据出错:" + ex.ToString());
}
return value;
}
private Box_Addr GetAddr(ushort StartAddress)
{
return (Box_Addr)(StartAddress );
return (Box_Addr)(StartAddress);
}
private Box_Sta GetBox_Sta(IO_VALUE onOff)
{
......@@ -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))
{
aioBox = AIOMap[ioIp];
......
......@@ -11,7 +11,31 @@ namespace OnlineStore.DeviceLibrary
public abstract class IOManager
{
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);
......
......@@ -125,7 +125,7 @@ namespace OnlineStore.DeviceLibrary
Thread.Sleep(10);
//读取所有的DO
ReadMultipleDO(ioIp, DefualtSlaveID, DoStartAddress, StoreManager.Config.GetDOLength(ioIp));
ReadMultipleDO(ioIp, DefualtSlaveID, DoStartAddress, GetDOLength(ioIp));
}
catch (Exception error)
......@@ -245,7 +245,7 @@ namespace OnlineStore.DeviceLibrary
foreach (string key in mastMap.Keys)
{
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
}
public static void CloseAllDO(string ioIp, byte slaveId)
{
ushort length = StoreManager.Config.GetDOLength(ioIp);
ushort length = GetDOLength(ioIp);
byte[] bytes = new byte[length];
for (int i = 0; i < length; i++)
{
......@@ -448,7 +448,7 @@ namespace OnlineStore.DeviceLibrary
{
try
{
ushort DILength = StoreManager.Config.GetDILength(ioIp);
ushort DILength =GetDILength(ioIp);
string finalData = "";
if (values.Length == 2 && DILength.Equals(16))
{
......@@ -496,9 +496,10 @@ namespace OnlineStore.DeviceLibrary
}
}
private static void SaveDOData(string ioIp, ushort ID, byte[] values)
{
ushort DoLength = StoreManager.Config.GetDOLength(ioIp);
ushort DoLength = GetDOLength(ioIp);
string finalData = "";
if (values.Length == 2 && DoLength.Equals(16))
{
......
......@@ -83,7 +83,7 @@ namespace OnlineStore.DeviceLibrary
int ACBaudRate = ConfigAppSettings.GetIntValue(Setting_Init.ACBaudRate);
if (ACBaudRate <= 0)
{
ACBaudRate = 9600;
ACBaudRate = 115200;
}
AcSerialBean bean = new AcSerialBean(portName, ACBaudRate, Parity.Even, 8, StopBits.One);
bool result = bean.openPort();
......
......@@ -1624,16 +1624,16 @@ namespace OnlineStore.DeviceLibrary
boxStatus.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);
AutomaticBaiting.CodeMsg = "";
}
if (lineOperation.msg.Equals(""))
if (lineOperation.msg.Equals("") && (!CodeOrInoutMsg.Equals("")))
{
boxStatus.SetMsg(CodeOrInoutMsg, ResourceControl.InStoreNoCode);
lineOperation.SetMsg(CodeOrInoutMsg, ResourceControl.InStoreNoCode);
boxStatus.SetMsg(CodeOrInoutMsg, ResourceControl.InStoreNoCode);
lineOperation.SetMsg(CodeOrInoutMsg, ResourceControl.InStoreNoCode);
CodeOrInoutMsg = "";
}
if (CodeOrInoutMsg.Equals(""))
......
......@@ -583,7 +583,7 @@ namespace OnlineStore.DeviceLibrary
if (IOManager.IOValue(IO_Type.SafetyLightCurtains).Equals(IO_VALUE.HIGH))
{
InStoreLog("送出料盘:SI_13 叉子从库位返回,进出轴到P1(待机点) ");
CodeOrInoutMsg = "";
CodeOrInoutMsg = "";
// 5= 入仓位完成(料仓Box把料盘放入对应的库位中,装置还未恢复原始状态)
string posId = StoreMove.MoveParam != null ? StoreMove.MoveParam.PositionNum : "";
lastPosId = "";
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!