Commit ee28c326 几米阳光

增加新IO模块的代码切换。

1 个父辈 2248c229
此文件类型无法预览
此文件的差异被折叠, 点击展开。
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>OnlineStore.ACSingleStore</RootNamespace> <RootNamespace>OnlineStore.ACSingleStore</RootNamespace>
<AssemblyName>BJACSingleStore</AssemblyName> <AssemblyName>BJACSingleStore</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<TargetFrameworkProfile /> <TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
......
<?xml version="1.0"?> <?xml version="1.0"?>
<configuration> <configuration>
<configSections> <configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections> </configSections>
<appSettings> <appSettings>
<!--是否开机自动启动料仓--> <!--是否开机自动启动料仓-->
<add key="App_AutoRun" value="1" /> <add key="App_AutoRun" value="1"/>
<add key="App_Title" value="AC_SA_料仓" /> <add key="App_Title" value="AC_SA_料仓"/>
<!--默认语言--> <!--默认语言-->
<add key="Default_Language" value="zh-CN" /> <add key="Default_Language" value="zh-CN"/>
<add key="scanner_start_command" value="S" /> <add key="scanner_start_command" value="S"/>
<!-- 开始吹气的判断值(配置值=服务器发送的湿度值-开始吹气值)--> <!-- 开始吹气的判断值(配置值=服务器发送的湿度值-开始吹气值)-->
<add key="StartBlowValue" value="4" /> <add key="StartBlowValue" value="4"/>
<!-- 停止吹气的判断值(配置值=服务器发送的湿度值-停止吹气值)--> <!-- 停止吹气的判断值(配置值=服务器发送的湿度值-停止吹气值)-->
<add key="StopBlowValue" value="4" /> <add key="StopBlowValue" value="4"/>
<!--Server address--> <!--Server address-->
<add key="http.server" value="http://192.168.1.106:8080/"/> <add key="http.server" value="http://192.168.1.106:8080/"/>
<!--storeType--> <!--storeType-->
<add key="store_count" value="1" /> <add key="store_count" value="1"/>
<!--start one store config--> <!--start one store config-->
<add key="Store_Position_Config" value="\StoreConfig\AC\linePositions.csv" /> <add key="Store_Position_Config" value="\StoreConfig\AC\linePositions.csv"/>
<add key="Store_ConfigPath" value="\StoreConfig\AC\StoreConfig.csv" /> <add key="Store_ConfigPath" value="\StoreConfig\AC\StoreConfig.csv"/>
<add key="Store_Type" value="RC_AC_SA" /> <add key="Store_Type" value="RC_AC_SA"/>
<add key="Store_CID" value="bjac1" /> <add key="Store_CID" value="bjac1"/>
<!--end one store config--> <!--end one store config-->
<!--摄像机名称列表配置,用#分割--> <!--摄像机名称列表配置,用#分割-->
<add key="CameraName" value="codeCamera" /> <add key="CameraName" value="codeCamera"/>
<!--二维码类型列表配置,用#分割--> <!--二维码类型列表配置,用#分割-->
<add key="CodeType" value="QR Code" /> <add key="CodeType" value="QR Code"/>
<!--<add key="CodeType" value="Data Matrix ECC 200"/>--> <!--<add key="CodeType" value="Data Matrix ECC 200"/>-->
<!--二维码参数文件所在路径,文件名与二维码类型名一样--> <!--二维码参数文件所在路径,文件名与二维码类型名一样-->
<add key="CodeParamPath" value="\StoreConfig\AC\" /> <add key="CodeParamPath" value="\StoreConfig\AC\"/>
<add key ="ACBaudRate" value ="4800"/> <add key="ACBaudRate" value="4800"/>
<add key="UseAIOBOX" value="1"/>
</appSettings> </appSettings>
<log4net> <log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs/BJACStore.log" /> <file value="logs/BJACStore.log"/>
<appendToFile value="true" /> <appendToFile value="true"/>
<rollingStyle value="Date" /> <rollingStyle value="Date"/>
<datePattern value="yyyy-MM-dd" /> <datePattern value="yyyy-MM-dd"/>
<layout type="log4net.Layout.PatternLayout"> <layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%date][%t]%-5p %m%n" /> <conversionPattern value="[%date][%t]%-5p %m%n"/>
</layout> </layout>
</appender> </appender>
<root> <root>
<level value="Info" /> <level value="Info"/>
<appender-ref ref="RollingLogFileAppender" /> <appender-ref ref="RollingLogFileAppender"/>
</root> </root>
</log4net> </log4net>
<startup> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/>
</startup> </startup>
<!-- 部署服务库项目时,必须将配置文件的内容添加到 <!-- 部署服务库项目时,必须将配置文件的内容添加到
主机的 app.config 文件中。System.Configuration 不支持库的配置文件。 --> 主机的 app.config 文件中。System.Configuration 不支持库的配置文件。 -->
...@@ -59,13 +60,13 @@ ...@@ -59,13 +60,13 @@
<service name="AcStoreWCF.CWSMDBox"> <service name="AcStoreWCF.CWSMDBox">
<endpoint address="" binding="basicHttpBinding" contract="AcStoreWCF.ICWSMDBox"> <endpoint address="" binding="basicHttpBinding" contract="AcStoreWCF.ICWSMDBox">
<identity> <identity>
<dns value="localhost" /> <dns value="localhost"/>
</identity> </identity>
</endpoint> </endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<host> <host>
<baseAddresses> <baseAddresses>
<add baseAddress="http://localhost:8733/Design_Time_Addresses/AcStoreWCF/CWSMDBox/" /> <add baseAddress="http://localhost:8733/Design_Time_Addresses/AcStoreWCF/CWSMDBox/"/>
</baseAddresses> </baseAddresses>
</host> </host>
</service> </service>
...@@ -75,11 +76,11 @@ ...@@ -75,11 +76,11 @@
<behavior> <behavior>
<!-- 为避免泄漏元数据信息, <!-- 为避免泄漏元数据信息,
请在部署前将以下值设置为 false --> 请在部署前将以下值设置为 false -->
<serviceMetadata httpGetEnabled="True" httpsGetEnabled="True" /> <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/>
<!-- 要接收故障异常详细信息以进行调试, <!-- 要接收故障异常详细信息以进行调试,
请将以下值设置为 true。在部署前设置为 false 请将以下值设置为 true。在部署前设置为 false
以避免泄漏异常信息 --> 以避免泄漏异常信息 -->
<serviceDebug includeExceptionDetailInFaults="False" /> <serviceDebug includeExceptionDetailInFaults="False"/>
</behavior> </behavior>
</serviceBehaviors> </serviceBehaviors>
</behaviors> </behaviors>
......
...@@ -120,11 +120,11 @@ namespace OnlineStore.ACSingleStore ...@@ -120,11 +120,11 @@ namespace OnlineStore.ACSingleStore
int slaveId = FormUtil.GetIntValue(txtSlaveId); int slaveId = FormUtil.GetIntValue(txtSlaveId);
if (time > 0) if (time > 0)
{ {
KNDManager.WriteSingleDO(deviceName, (byte)slaveId, (ushort)index, (IO_VALUE)value, time); IOManager.instance.WriteSingleDO(deviceName, (byte)slaveId, (ushort)index, (IO_VALUE)value, time);
} }
else else
{ {
KNDManager.WriteSingleDO(deviceName, (byte)slaveId, (ushort)index, (IO_VALUE)value); IOManager.instance.WriteSingleDO(deviceName, (byte)slaveId, (ushort)index, (IO_VALUE)value);
} }
} }
...@@ -199,7 +199,7 @@ namespace OnlineStore.ACSingleStore ...@@ -199,7 +199,7 @@ namespace OnlineStore.ACSingleStore
foreach (string key in DIControlList.Keys) foreach (string key in DIControlList.Keys)
{ {
IOTextControl control = DIControlList[key]; IOTextControl control = DIControlList[key];
int iov = (int)KNDManager.GetIOValue(boxBean.Config.StoreDIList[key]); int iov = (int)IOManager.instance.GetIOValue(boxBean.Config.StoreDIList[key]);
if (iov != control.IOValue) if (iov != control.IOValue)
{ {
control.IOValue = iov; control.IOValue = iov;
...@@ -208,7 +208,7 @@ namespace OnlineStore.ACSingleStore ...@@ -208,7 +208,7 @@ namespace OnlineStore.ACSingleStore
} foreach (string key in this.DOControlList.Keys) } foreach (string key in this.DOControlList.Keys)
{ {
IOTextControl control = DOControlList[key]; IOTextControl control = DOControlList[key];
int iov = (int)KNDManager.GetIOValue(boxBean.Config.StoreDOList[key]); int iov = (int)IOManager.instance.GetIOValue(boxBean.Config.StoreDOList[key]);
if (iov != control.IOValue) if (iov != control.IOValue)
{ {
control.IOValue = iov; control.IOValue = iov;
...@@ -223,7 +223,7 @@ namespace OnlineStore.ACSingleStore ...@@ -223,7 +223,7 @@ namespace OnlineStore.ACSingleStore
IO_VALUE value = (IO_VALUE)cmbWriteValue.SelectedIndex; IO_VALUE value = (IO_VALUE)cmbWriteValue.SelectedIndex;
int time = FormUtil.GetIntValue(txtWriteTime); int time = FormUtil.GetIntValue(txtWriteTime);
int slaveId = FormUtil.GetIntValue(txtSlaveId); int slaveId = FormUtil.GetIntValue(txtSlaveId);
KNDManager.ReadMultipleDI(deviceName, (byte)slaveId, (ushort)KNDManager.DIStartAddress, 16); IOManager.instance.ReadAllDI(deviceName, (byte)slaveId );
} }
private void btnReadAllDo_Click(object sender, EventArgs e) private void btnReadAllDo_Click(object sender, EventArgs e)
{ {
...@@ -232,7 +232,7 @@ namespace OnlineStore.ACSingleStore ...@@ -232,7 +232,7 @@ namespace OnlineStore.ACSingleStore
IO_VALUE value = (IO_VALUE)cmbWriteValue.SelectedIndex; IO_VALUE value = (IO_VALUE)cmbWriteValue.SelectedIndex;
int time = FormUtil.GetIntValue(txtWriteTime); int time = FormUtil.GetIntValue(txtWriteTime);
int slaveId = FormUtil.GetIntValue(txtSlaveId); int slaveId = FormUtil.GetIntValue(txtSlaveId);
KNDManager.ReadMultipleDO(deviceName, (byte)slaveId, (ushort)KNDManager.DoStartAddress, 16); IOManager.instance.ReadAllDO(deviceName, (byte)slaveId);
} }
private void btnOpenDoor_Click(object sender, EventArgs e) private void btnOpenDoor_Click(object sender, EventArgs e)
{ {
......
...@@ -30,6 +30,7 @@ namespace OnlineStore.ACSingleStore ...@@ -30,6 +30,7 @@ namespace OnlineStore.ACSingleStore
Control.CheckForIllegalCrossThreadCalls = false; Control.CheckForIllegalCrossThreadCalls = false;
InitializeComponent(); InitializeComponent();
chbAuto.Checked = ConfigAppSettings.GetIntValue(Setting_Init.App_AutoRun).Equals(1); chbAuto.Checked = ConfigAppSettings.GetIntValue(Setting_Init.App_AutoRun).Equals(1);
IOManager.Init();
} }
#region "初始化界面数据" #region "初始化界面数据"
...@@ -1141,9 +1142,9 @@ namespace OnlineStore.ACSingleStore ...@@ -1141,9 +1142,9 @@ namespace OnlineStore.ACSingleStore
stop_button_Click(null, null); stop_button_Click(null, null);
} }
KNDManager.CloseAllDO(); IOManager.instance.CloseAllDO();
StoreOpenStatus(false); StoreOpenStatus(false);
KNDManager.CloseAllConnection(); IOManager.instance.CloseAllConnection();
//WCFControl.CloseWCF(); //WCFControl.CloseWCF();
ResourceCulture.LogDefaultMap(); ResourceCulture.LogDefaultMap();
System.Environment.Exit(System.Environment.ExitCode); System.Environment.Exit(System.Environment.ExitCode);
......
...@@ -26,3 +26,10 @@ DI11:前门限位 ...@@ -26,3 +26,10 @@ DI11:前门限位
DI13:光栅信号 DI13:光栅信号
DO15:门禁功能屏蔽 DO15:门禁功能屏蔽
20190307新建北京新料仓
修改IO模块,增加AIO模块代码。
在app.config中增加配置:UseAIOBOX,=1表示是新IO模块
...@@ -66,6 +66,10 @@ namespace OnlineStore.Common ...@@ -66,6 +66,10 @@ namespace OnlineStore.Common
/// </summary> /// </summary>
public static string ACBaudRate = "ACBaudRate"; public static string ACBaudRate = "ACBaudRate";
public static string Default_Language = "Default_Language"; public static string Default_Language = "Default_Language";
/// <summary>
/// 是否使用新IO模块 AIOBOX,1=使用新IO
/// </summary>
public static string UseAIOBOX = "UseAIOBOX";
} }
} }
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>OnlineStore.DeviceLibrary</RootNamespace> <RootNamespace>OnlineStore.DeviceLibrary</RootNamespace>
<AssemblyName>DeviceLibrary</AssemblyName> <AssemblyName>DeviceLibrary</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<TargetFrameworkProfile /> <TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
...@@ -36,6 +36,9 @@ ...@@ -36,6 +36,9 @@
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="AIOBOX">
<HintPath>..\..\dll\AIOBOX.dll</HintPath>
</Reference>
<Reference Include="CodeLibrary"> <Reference Include="CodeLibrary">
<HintPath>..\..\dll\CodeLibrary.dll</HintPath> <HintPath>..\..\dll\CodeLibrary.dll</HintPath>
</Reference> </Reference>
...@@ -59,9 +62,11 @@ ...@@ -59,9 +62,11 @@
<Compile Include="acSingleStore\AC_SA_BoxBean.cs" /> <Compile Include="acSingleStore\AC_SA_BoxBean.cs" />
<Compile Include="acSingleStore\AC_SA_BoxBean_Partial.cs" /> <Compile Include="acSingleStore\AC_SA_BoxBean_Partial.cs" />
<Compile Include="acSingleStore\ACStoreManager.cs" /> <Compile Include="acSingleStore\ACStoreManager.cs" />
<Compile Include="IO\AIOBOX\AIOBOXManager.cs" />
<Compile Include="IO\IOManager.cs" />
<Compile Include="halcon\CodeManager.cs" /> <Compile Include="halcon\CodeManager.cs" />
<Compile Include="KangNaiDe\KNDManager.cs" /> <Compile Include="IO\KangNaiDe\KNDManager.cs" />
<Compile Include="KangNaiDe\MasterTcpClient.cs" /> <Compile Include="IO\KangNaiDe\MasterTcpClient.cs" />
<Compile Include="PanasonicServo\ACCMDManager.cs" /> <Compile Include="PanasonicServo\ACCMDManager.cs" />
<Compile Include="PanasonicServo\ACServerManager.cs" /> <Compile Include="PanasonicServo\ACServerManager.cs" />
<Compile Include="PanasonicServo\ACServerManager_Partial.cs" /> <Compile Include="PanasonicServo\ACServerManager_Partial.cs" />
......
using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using Asa.AIOBOX;
using System.Threading;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
namespace OnlineStore.DeviceLibrary
{
public class AIOBOXManager : IOManager
{
public readonly ILog LOGGER = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public Dictionary<string, AIOBOX_32> AIOMap = new Dictionary<string, AIOBOX_32>();
private object DIMapLock = "";
private object DOMapLock = "";
public System.Timers.Timer timer = null;
public void ConnectionIP(string ioIp )
{
if (timer == null)
{
timer = new System.Timers.Timer();
timer.Interval = 300;
timer.AutoReset = true;
timer.Elapsed += timer_Elapsed;
timer.Enabled = true;
}
AIOBOX_32 aioBox = null;
if (AIOMap.ContainsKey(ioIp))
{
aioBox = AIOMap[ioIp];
if (null != aioBox)
{
aioBox.Close();
aioBox = null;
}
AIOMap.Remove(ioIp);
}
try
{
// Create new modbus master and add event functions
aioBox = new AIOBOX_32();
aioBox.IP = ioIp;
bool result = aioBox.Connect();
if (result)
{
AIOMap.Add(ioIp, aioBox);
}
else
{
LogUtil.error("连接IO模块【"+ioIp+"】失败:"+aioBox.ErrInfo);
}
Thread.Sleep(10);
//读取所有的DO
ReadAllDI(ioIp, 0);
}
catch (Exception error)
{
LogUtil.error(LOGGER, "连接IO模块[" + ioIp + "]出错:" + error.ToString());
}
}
/// <summary>
/// 判断Io模块是否连接
/// </summary>
public bool IsConnection(string ip)
{
try
{
if (AIOMap.ContainsKey(ip))
{
if (AIOMap[ip].IsConn)
{
return true;
}
}
}
catch (Exception ex)
{
LogUtil.error(LOGGER, "出错啦:" + ex.ToString());
}
return false;
}
private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
try
{
List<string> list = new List<string>(AIOMap.Keys);
foreach (string io in list)
{
//判断是否连接,如果没有连接自动重连
AIOBOX_32 clinet = AIOMap[io];
if (!clinet.IsConn)
{
LogUtil.error(LOGGER, io + "当前没有连上:" + clinet.ErrInfo);
}
}
}
catch (Exception ex)
{
LogUtil.error(LOGGER, "出错啦:" + ex.ToString());
}
Thread.Sleep(1);
}
public override void ConnectionKND(List<string> DIONameList)
{
foreach (string ip in DIONameList)
{
ConnectionIP(ip );
}
}
//关闭所有的DO
public override void CloseAllDO()
{
foreach (AIOBOX_32 aio in AIOMap.Values)
{
Status[] statuses = new Status[16];
for(int i = 0; i < 16; i++)
{
statuses[i] = Status.Off;
}
aio.WriteDO(Addr.DI_1, statuses);
}
}
public override void CloseAllConnection()
{
foreach (AIOBOX_32 aio in AIOMap.Values)
{
aio.Close();
}
AIOMap.Clear();
}
public override void WriteSingleDO(string ioIp, byte slaveId, ushort StartAddress, IO_VALUE onOff)
{
try
{
AIOBOX_32 aioBox = getAIO(ioIp);
if (aioBox != null)
{
Addr add = GetAddr(StartAddress);
aioBox.WriteDO(GetAddr(StartAddress), GetStatus(onOff));
}
else
{
LogUtil.error(LOGGER, "ReadSingleDO出错没有连接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
{
AIOBOX_32 aioBox = getAIO(ioIp);
Status currStatus = GetStatus(onOff);
if (aioBox != null)
{
Addr add = GetAddr(StartAddress);
aioBox.WriteDO(GetAddr(StartAddress), currStatus);
//写入之后,等待指定间隔后回写
System.Timers.Timer mytimer = new System.Timers.Timer(mSeconds);
mytimer.Elapsed += (o1, e1) =>
{
try
{
aioBox.WriteDO(GetAddr(StartAddress), aioBox.ReverseStatus(currStatus));
LogUtil.debug(LOGGER, "**********定时回写入 IO【" + ioIp + "," + StartAddress + ",值" + aioBox.ReverseStatus(currStatus) + "】:");
}
catch (Exception ex)
{
LogUtil.error(LOGGER, "**********定时回写入 出错:" + ex.StackTrace);
}
};
mytimer.AutoReset = false;//设置是否自动重启,即自动执行多次;
mytimer.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件mytask;
}
else
{
LogUtil.error(LOGGER, "WriteSingleDO出错没有连接IO模块:" + ioIp);
}
}
catch (Exception ex)
{
LogUtil.error("WriteSingleDO出错:" + ioIp);
}
}
public override void ReadAllDI(string ioIp, byte slaveId)
{
}
public override void ReadAllDO(string ioIp, byte slaveId)
{
}
public override IO_VALUE GetDOValue(string ioIP, byte slaveId, ushort StartAddress)
{
IO_VALUE value = IO_VALUE.LOW;
AIOBOX_32 aioBox = getAIO(ioIP);
if (aioBox != null)
{
Status status = Status.Off;
aioBox.ReadDO(GetAddr(StartAddress), out status);
if (status.Equals(Status.On))
{
value = IO_VALUE.HIGH;
}
}
return value;
}
public override IO_VALUE GetDIValue(string ioIP, byte slaveId, ushort StartAddress)
{
IO_VALUE value = IO_VALUE.LOW;
AIOBOX_32 aioBox = getAIO(ioIP);
if (aioBox != null)
{
Status status = Status.Off;
aioBox.ReadDI(GetAddr(StartAddress), out status);
if (status.Equals(Status.On))
{
value = IO_VALUE.HIGH;
}
}
return value;
}
public override IO_VALUE GetIOValue(ConfigIO configIO)
{
IO_VALUE value = IO_VALUE.LOW;
try
{
if (configIO.ProType.Equals(ConfigItemType.DI))
{
return GetDIValue(configIO.DeviceName, configIO.SlaveID, configIO.GetIOAddr());
}
else if (configIO.ProType.Equals(ConfigItemType.DO))
{
return GetDOValue(configIO.DeviceName, configIO.SlaveID, configIO.GetIOAddr());
}
}
catch (Exception ex)
{
LogUtil.error(LOGGER, "获取数据出错:" + ex.ToString());
}
return value;
}
private Addr GetAddr(ushort StartAddress)
{
return (Addr)(StartAddress - 1);
}
private Status GetStatus(IO_VALUE onOff)
{
if (onOff.Equals(IO_VALUE.HIGH))
{
return Status.On;
}
else
{
return Status.Off;
}
}
private AIOBOX_32 getAIO(string ioIp)
{
AIOBOX_32 aioBox = null;
if (AIOMap.ContainsKey(ioIp))
{
aioBox = AIOMap[ioIp];
}
return aioBox;
}
}
}
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OnlineStore.DeviceLibrary
{
public abstract class IOManager
{
public static IOManager instance = null;
public abstract void ConnectionKND(List<string> dIODeviceNameList);
public static void Init()
{
bool isAIOBox = ConfigAppSettings.GetIntValue(Setting_Init.UseAIOBOX).Equals(1);
if (isAIOBox)
{
instance = new AIOBOXManager();
}
else
{
instance = new KNDManager();
}
}
public abstract void ReadAllDI(string deviceName, byte slaveId);
public abstract void ReadAllDO(string deviceName, byte slaveId);
public abstract void WriteSingleDO(string deviceName, byte slaveId, ushort index, IO_VALUE value, int time);
public abstract void WriteSingleDO(string deviceName, byte slaveId, ushort index, IO_VALUE value);
public abstract IO_VALUE GetDIValue(string deviceName, byte slaveID, ushort v);
public abstract IO_VALUE GetDOValue(string deviceName, byte slaveID, ushort v);
public abstract IO_VALUE GetIOValue(ConfigIO configIO);
public abstract void CloseAllDO();
public abstract void CloseAllConnection();
}
}
...@@ -90,7 +90,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -90,7 +90,7 @@ namespace OnlineStore.DeviceLibrary
CodeManager.LoadConfig(nameStr, codeStr); CodeManager.LoadConfig(nameStr, codeStr);
//初始化 //连接设备 //初始化 //连接设备
KNDManager.ConnectionKND(Config.DIODeviceNameList); IOManager.instance.ConnectionKND(Config.DIODeviceNameList);
//scanSocket.OnScanRevice += onCodeReceived; //scanSocket.OnScanRevice += onCodeReceived;
...@@ -806,7 +806,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -806,7 +806,7 @@ namespace OnlineStore.DeviceLibrary
TimeSpan span = DateTime.Now - StartTime; TimeSpan span = DateTime.Now - StartTime;
IsRun = false; IsRun = false;
KNDManager.CloseAllDO(); IOManager.instance.CloseAllDO();
if (IsHasCompress_Axis) if (IsHasCompress_Axis)
{ {
ShuoKeControls.ClosePort(); ShuoKeControls.ClosePort();
...@@ -1813,7 +1813,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -1813,7 +1813,7 @@ namespace OnlineStore.DeviceLibrary
if (Config.StoreDOList.ContainsKey(ioType)) if (Config.StoreDOList.ContainsKey(ioType))
{ {
ConfigIO configIo = Config.StoreDOList[ioType]; ConfigIO configIo = Config.StoreDOList[ioType];
KNDManager.WriteSingleDO(configIo.DeviceName, configIo.SlaveID, configIo.GetIOAddr(), ioValue); IOManager.instance.WriteSingleDO(configIo.DeviceName, configIo.SlaveID, configIo.GetIOAddr(), ioValue);
Thread.Sleep(60); Thread.Sleep(60);
} }
else else
...@@ -1828,13 +1828,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -1828,13 +1828,13 @@ namespace OnlineStore.DeviceLibrary
if (Config.StoreDIList.ContainsKey(ioType)) if (Config.StoreDIList.ContainsKey(ioType))
{ {
ConfigIO configIo = Config.StoreDIList[ioType]; ConfigIO configIo = Config.StoreDIList[ioType];
ioValue = KNDManager.GetDIValue(configIo.DeviceName, configIo.SlaveID, configIo.GetIOAddr()); ioValue = IOManager.instance.GetDIValue(configIo.DeviceName, configIo.SlaveID, configIo.GetIOAddr());
//UpdateDoValue(ioType, ioValue); //UpdateDoValue(ioType, ioValue);
} }
else if (Config.StoreDOList.ContainsKey(ioType)) else if (Config.StoreDOList.ContainsKey(ioType))
{ {
ConfigIO configIo = Config.StoreDOList[ioType]; ConfigIO configIo = Config.StoreDOList[ioType];
ioValue = KNDManager.GetDOValue(configIo.DeviceName, configIo.SlaveID, configIo.GetIOAddr()); ioValue = IOManager.instance.GetDOValue(configIo.DeviceName, configIo.SlaveID, configIo.GetIOAddr());
} }
else else
{ {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!