Commit e8bad718 LN

IOdll更新为佳世达四楼用的版本。

1 个父辈 ba23a99d
...@@ -11,99 +11,40 @@ namespace OnlineStore.DeviceLibrary ...@@ -11,99 +11,40 @@ namespace OnlineStore.DeviceLibrary
{ {
public class AIOAIManager:AIManager public class AIOAIManager:AIManager
{ {
private object AILock = ""; private object AILock = "";
private List<int> AIValList = null;
private int AILength = 4; private int AILength = 4;
private Asa.IOModule.AIOBOX AIBox = null; private Asa.IOModule.AIOBOX AiBox = null;
private System.Timers.Timer conTimer = null;
private List<string> needConIp = new List<string>();
public override void StartConnect(params string[] ipList) public override void StartConnect(params string[] ipList)
{ {
if (conTimer == null)
{
conTimer = new System.Timers.Timer();
conTimer.AutoReset = true;
conTimer.Interval = 60000;
conTimer.Elapsed += ConTimer_Elapsed;
}
conTimer.Enabled = false;
needConIp = new List<string>(ipList);
foreach (string ip in ipList) foreach (string ip in ipList)
{ {
bool result = ConnectionIP(ip); bool result = ConnectionIP(ip);
} }
if (needConIp.Count > 0)
{
//启动定时器,1一分钟重连一次
conTimer.Start();
}
} }
private bool ConnectionIP(string ioIp) private bool ConnectionIP(string ioIp)
{ {
int autoMS = 150; int autoMS = 150;
try try
{ {
AIValList = new List<int>(); AiBox = new Asa.IOModule.AIOBOX();
AIBox = new Asa.IOModule.AIOBOX(); AiBox.IP = ioIp;
AIBox.IP = ioIp; AiBox.SetType(Asa.IOModule.Box_Type.AI, AILength, Box_Type.AO, 0);
// bool rtn = AIBox.AutoIP(ioIp);
AIBox.SetInput(Asa.IOModule.Box_Type.AI, AILength);
AIBox.SetOutput(Asa.IOModule.Box_Type.DO, 0);
AIBox.AutoReadInput(true, autoMS);
AIBox.AI_Changed_Event += Box_AI_Changed_Event;
LogUtil.debug("开始连接AI模块[" + ioIp + "][" + autoMS + "],尝试重连三次"); LogUtil.debug("开始连接AI模块[" + ioIp + "][" + autoMS + "],尝试重连三次");
for (int i = 1; i <= 3; i++) bool result = AiBox.Connect();
{
bool result = AIBox.Connect();
if (result)
{
if (needConIp.Contains(ioIp))
{
needConIp.Remove(ioIp);
}
LogUtil.info("第【" + i + "】次连接IO模块[" + ioIp + "][" + autoMS + "]成功:" + AIBox.ErrInfo);
return true;
}
else
{
LogUtil.error("第【" + i + "】次连接IO模块[" + ioIp + "][" + autoMS + "]失败:" + AIBox.ErrInfo + "");
}
Thread.Sleep(10);
}
} }
catch (Exception error) catch (Exception error)
{ {
LogUtil.error("连接IO模块[" + ioIp + "][" + autoMS + "]出错:" + error.ToString()); LogUtil.error("连接IO模块[" + ioIp + "][" + autoMS + "]出错:" + error.ToString());
} }
return false; return false;
} }
private void ConTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
try
{
List<string> list = new List<string>(needConIp);
if (list.Count > 0)
{
foreach (string ip in list)
{
LogUtil.info("重连AOI AI 模块 :" + ip);
ConnectionIP(ip);
}
}
}
catch (Exception ex)
{
LogUtil.error("AOI AI ConTimer_Elapsed 出错: " + ex.ToString());
}
}
public override void CloseConnect() public override void CloseConnect()
{ {
try try
{ {
if (AIBox != null) if (AiBox != null)
{ {
AIBox.Close(); AiBox.Close();
} }
} }
catch (Exception ex) catch (Exception ex)
...@@ -112,49 +53,15 @@ namespace OnlineStore.DeviceLibrary ...@@ -112,49 +53,15 @@ namespace OnlineStore.DeviceLibrary
} }
} }
private void Box_AI_Changed_Event(AIOBOX box, int[] val)
{
try
{
if (val != null && val.Length >= AILength)
{
lock (AILock)
{
AIValList = new List<int>();
AIValList.AddRange(val);
}
}
}
catch (Exception ex)
{
LogUtil.error("Box_AI_Changed_Event出错:" + ex.ToString());
}
}
public override double GetAIValue(string ioiP, int index) public override double GetAIValue(string ioiP, int index)
{ {
for (int i = 1; i <= 3; i++) if (AiBox != null)
{ {
try return AiBox.ReadAI(index);
{
if (AIValList != null && index >= 0 && AIValList.Count > index)
{
return AIValList[index];
}
}
catch (Exception ex)
{
if (i > 1)
{
LogUtil.error("GetAIValue第【" + i + "】次获取 " + ioiP + "_" + index + "出错:" + ex.ToString());
}
}
Thread.Sleep(1);
} }
return 0; return -1;
} }
} }
} }
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!