封装研华PCI1760U报警卡协议## 标题
using System;
using System.Collections.Generic;
using System.Text;
using Automation.BDaq;
using System.Threading;
using System.Diagnostics;
namespace ODSensor
{
public class PCIalarm
{
public PCIalarm()
{
}
private int alarm_delay = 0;//报警延时
private int switch_delay = 1000;//开关延时
private int portNum = 0;//控制的port号
private byte state = 0;//port的需要控制的状态位
private Automation.BDaq.InstantDoCtrl instandoctrl = null;
private Automation.BDaq.InstantDiCtrl instandictrl = null;
public Thread threadInput = null;
public Thread threadOutput = null;
private Stopwatch watch = new Stopwatch();
private bool longTimeAlarmMark = false;
private ErrorCode err = ErrorCode.Success;
private bool input_mark = false;
private bool output_mark = false;
private bool isAlram = false;
private bool readyAlarm = false;
private int SLEEPOUTPUT_TIME = 10;
private int SLEEPINPUT_TIME = 10;
private int point_num = 3;
public MultiBuffer_NET_DISP bufferAlarm = null;
public void PCI_init(int port,Automation.BDaq.InstantDoCtrl control1, Automation.BDaq.InstantDiCtrl control2)
{
portNum = port;
instandoctrl = control1;
instandictrl = control2;
instandoctrl.SelectedDevice = new DeviceInformation(0);
instandictrl.SelectedDevice = new DeviceInformation(0);
if (!instandoctrl.Initialized)
{
FormMain.pCurrentApp.showMsg("报警卡输出初始化失败!");
return;
}else
{
initAlarm();
}
if (!instandictrl.Initialized)
{
FormMain.pCurrentApp.showMsg("报警卡输入初始化失败!");
return;
}
//isAlram = false;
//readyAlarm = false;
//input_mark = true;
//output_mark = true;
//threadInput = new Thread(inputFunc);
//threadOutput = new Thread(outputFunc);
//threadInput.Start();
//threadOutput.Start();
}
public void inputFunc()
{
byte output = 0;
int cont = 0;
while (input_mark)
{
err = instandictrl.Read(portNum,out output);
if (output == 1 && cont == 0)
{
cont = 1;
FormMain.pCurrentApp.inputShow();
//Thread.Sleep(switch_delay);
FormMain.log.Error("IT"+FormMain.pCurrentApp.curtph + "