Ejemplo n.º 1
0
        public int IPrimInit()
        {
            if (_isInitialed)
            {
                return(0);
            }
            var iRet          = 0;
            var boardIdInBits = _config.DevIndex;

            int ret = DASK.Register_Card(DASK.PCI_7432, (ushort)boardIdInBits);


            for (var i = 0; i < groupDIVal.Length; i++)
            {
                groupDIVal[i] = -1;
            }

            for (var i = 0; i < groupDOVal.Length; i++)
            {
                groupDOVal[i] = -1;
            }

            PrimRunStat  = PrimRunState.Stop;
            PrimConnStat = PrimConnState.UnConnected;

            ((PrimConfigControl)PrimConfigUI).SetPrimConnState(PrimConnStat);
            ((PrimConfigControl)PrimConfigUI).SetPrimRunState(PrimRunStat);
            _isInitialed = true;
            return(iRet);
        }
Ejemplo n.º 2
0
        private void DataProcess()
        {
            while (queue.IsAlive)
            {
                while (myqueue.Count > 0)
                {
                    err = DASK.AI_ContVScale(cardRegNumber, DASK.AD_B_5_V, myqueue.Dequeue(), VBuffer[0], (int)AI_TotalReadCount);
                    if (err < 0)
                    {
                        MessageBox.Show("AI_ContVScale");
                    }
                    this.Invoke((MethodInvoker) delegate
                    {
                        Displayaidata(VBuffer[0]);
                        writefftdataCsv(0, ch0);
                        //writefftdataCsv(1, ch1);
                        //writefftdataCsv(2, ch2);
                        //writefftdataCsv(3, ch3);
                        //writefftdataCsv(4, ch4);
                        textBoxQueueCount.Text = myqueue.Count.ToString();
                    });


                    Thread.Sleep(1);
                }
                Thread.Sleep(1);
            }
        }
Ejemplo n.º 3
0
        public void Write(IoPoint ioPoint, bool value)
        {
            var device = _devices[ioPoint.BoardNo];
            var ret    = DASK.DO_WriteLine((ushort)device, 0, (ushort)ioPoint.PortNo, (ushort)(value ? 1 : 0));

            if (ret != DASK.NoError)
            {
                switch (ret)
                {
                case DASK.ErrorInvalidCardNumber:
                    throw new DaskException(string.Format("The CardNumber argument {0} is out of range (larger than 31).", device));

                case DASK.ErrorCardNotRegistered:
                    throw new DaskException(string.Format("No card registered as {0} CardNumber.", device));

                case DASK.ErrorFuncNotSupport:
                    throw new DaskException(string.Format("The {0} function called is not supported by this type of card.", "DO_WriteLine"));

                case DASK.ErrorInvalidIoChannel:
                    throw new DaskException(string.Format("The specified Channel or Port argument {0} is out of range.", ioPoint.PortNo));

                default:
                    throw new DaskException("Unknown error.");
                }
            }
        }
Ejemplo n.º 4
0
 private bool PCI9222Close()
 {
     try
     {
         _Flag_start = false;
         listArray[0].Clear();
         listArray[1].Clear();
         listArray[2].Clear();
         listArray[3].Clear();
         listArray[4].Clear();
         err = DASK.AI_AsyncClear(cardRegNumber, out accesscnt);
         if (err < 0)
         {
             Globals.addList("9222卡AI_AsyncClear失败!", Mycolor.ErrorRed);
             return(false);
         }
         err = DASK.Release_Card(cardRegNumber);
         if (err < 0)
         {
             Globals.addList("9222卡Release_Card失败!", Mycolor.ErrorRed);
             return(false);
         }
         return(true);
     }
     catch { return(false); }
 }
Ejemplo n.º 5
0
        private void CycleReadIO()
        {
            // 阻塞等触发
            while (_cycleCycleReadIOFlag)
            {
                uint dInput = 0;
                int  ret    = DASK.DI_ReadPort((ushort)_config.DevIndex, 0, out dInput);
                if (dInput != 0)
                {
                    if (groupDIVal[0] != -1 && CycleTrigList.Count > 0)
                    {
                        CycleCmpDI(0, (int)dInput);
                    }
                    groupDIVal[0] = (int)dInput;
                }

                uint dOut = 0;
                ret = DASK.DO_ReadPort((ushort)_config.DevIndex, 0, out dOut);
                if (dOut != 0)
                {
                    groupDOVal[0] = (int)dOut;
                }

                Thread.Sleep(5);
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        ///     读端口数据
        /// </summary>
        /// <param name="boardNo"></param>
        /// <param name="portNo"></param>
        /// <returns></returns>
        public uint ReadPort(int boardNo, int portNo = 0)
        {
            var device = _devices[boardNo];

            uint value;
            var  ret = DASK.DI_ReadPort((ushort)device, (ushort)portNo, out value);

            if (ret != DASK.NoError)
            {
                switch (ret)
                {
                case DASK.ErrorInvalidCardNumber:
                    throw new DaskException(string.Format("The CardNumber argument {0} is out of range (larger than 31).", boardNo));

                case DASK.ErrorCardNotRegistered:
                    throw new DaskException(string.Format("No card registered as {0} CardNumber.", boardNo));

                case DASK.ErrorFuncNotSupport:
                    throw new DaskException(string.Format("The {0} function called is not supported by this type of card.", "DI_ReadPort"));

                default:
                    throw new DaskException("Unknown error.");
                }
            }
            return(value);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Sets the DSP settings.
        /// </summary>
        /// <returns>System.Int16.</returns>
        /// <exception cref="InvalidOperationException">
        /// AI_9524_SetDSP Fail, error:  " + err
        /// or
        /// AI_9524_Config Fail, error:  " + err
        /// </exception>
        private short SetDSP()
        {
            short  err             = DASK.NoError;
            ushort DFStage         = 0;
            uint   SPKRejThreshold = 100;
            uint   dwTrigValue     = 0;


            for (ushort i = 0; i < config_para.ai_chnl_cnt; i++)
            {
                err = DASK.AI_9524_SetDSP(GetHandle(), i, DASK.P9524_SPIKE_REJ_DISABLE, DFStage, SPKRejThreshold);
            }

            if (err < 0)
            {
                throw new InvalidOperationException("AI_9524_SetDSP Fail, error:  " + err);
            }


            err = DASK.AI_9524_Config(GetHandle(), DASK.P9524_AI_LC_Group, DASK.P9524_AI_XFER_DMA, config_para.ai_chnl_config, config_para.trig_control, (ushort)dwTrigValue);
            if (err < 0)
            {
                throw new InvalidOperationException("AI_9524_Config Fail, error:  " + err);
            }

            return(err);
        }
Ejemplo n.º 8
0
        /// <summary>
        ///     Dispose
        /// </summary>
        /// <param name="disposing"></param>
        protected virtual void Dispose(bool disposing)
        {
            if (_disposed)
            {
                return;
            }
            //if (disposing)
            //{
            //    //清理托管资源
            //    if (managedResource != null)
            //    {
            //        managedResource.Dispose();
            //        managedResource = null;
            //    }
            //}

            // 清理非托管资源
            foreach (var device in _devices.Values)
            {
                var ret = DASK.Release_Card((ushort)device);
                if (ret != DASK.NoError)
                {
                    throw new DaskException("Unknown error.");
                }
            }
            _disposed = true;
        }
Ejemplo n.º 9
0
        public void Initialize()
        {
            foreach (var cardNo in _cardNos)
            {
                var device = DASK.Register_Card(DASK.PCI_7432, cardNo);
                if (device < 0)
                {
                    switch (device)
                    {
                    case DASK.ErrorTooManyCardRegistered:
                        throw new DaskException("32 cards have been registered.");

                    case DASK.ErrorOpenDriverFailed:
                        throw new DaskException("Failed to open the device driver.");

                    case DASK.ErrorOpenEventFailed:
                        throw new DaskException("Open event failed in device driver.");

                    default:
                        throw new DaskException("Unknown error.");
                    }
                }
                _devices.Add(cardNo, device);
            }
        }
Ejemplo n.º 10
0
        /* Write Node */
        public static void WritePin(ushort port, ushort pin, bool state, out short code, out string message)
        {
            if (Testing)
            {
                code = 0; message = "Testing"; return;
            }

            ushort logic = (state) ? (ushort)1 : (ushort)0;

            code = DASK.DO_WriteLine((ushort)m_device, port, pin, logic);
            if (code < 0)
            {
                message = "เขียนเอาท์พุทพิน DIO7432 ผิดพลาด";
                logText = "Write PIN [" + port.ToString() + "." + pin.ToString() + " = " + state.ToString() + "]: " + message;
                log.AppendText(logText);
                System.Diagnostics.Debug.WriteLine(logText);
            }
            else
            {
                message = "";
                logText = "Write PIN [" + port.ToString() + "." + pin.ToString() + " = " + state.ToString() + "]: OK";
                log.AppendText(logText);
                System.Diagnostics.Debug.WriteLine(logText);
            }
        }
Ejemplo n.º 11
0
        /* Read Node */
        public static void ReadPin(ushort port, ushort pin, out bool state, out short code, out string message)
        {
            if (Testing)
            {
                state = true; code = 0; message = "Testing"; return;
            }

            ushort logic;

            code  = DASK.DI_ReadLine((ushort)m_device, port, pin, out logic);
            state = (logic == 1) ? true : false;
            if (code < 0)
            {
                message = "อ่านพอร์ต DIO7432 ผิดพลาด";
                logText = "Read PIN [" + port.ToString() + "." + pin.ToString() + " = " + state.ToString() + "]: " + message;
                log.AppendText(logText);
                //System.Diagnostics.Debug.WriteLine(logText);
            }
            else
            {
                message = "";
                logText = "Read PIN [" + port.ToString() + "." + pin.ToString() + " = " + state.ToString() + "]: OK";
                log.AppendText(logText);
                //System.Diagnostics.Debug.WriteLine(logText);
            }
        }
Ejemplo n.º 12
0
        public int GetDO(int index, out bool isON)
        {
            if (index < 0 || index >= DOCount)
            {
                throw new Exception(string.Format("GetDO(index = {0}, isON) index is out of range:0~{1}", index, DOCount - 1));
            }
            isON = false;
            if (!IsOpen)
            {
                return((int)ErrorDef.NotOpen);
            }


            //lock (asynLocker)
            {
                ushort doVal = 0;
                if (0 != DASK.DO_ReadLine(_devHandle, (ushort)(index / 32), (ushort)(index % 32), out doVal))
                {
                    return((int)ErrorDef.InvokeFailed);
                }

                isON = doVal != 0;
            }

            return((int)ErrorDef.Success);
        }
Ejemplo n.º 13
0
        public int GetAllDOs(out bool[] isONs)
        {
            isONs = new bool[DOCount];

            //lock (asynLocker)
            {
                if (!IsOpen)
                {
                    return((int)ErrorDef.NotOpen);
                }
                uint   doVals = 0;
                ushort ports  = (ushort)((DOCount + 31) / 32);
                for (ushort i = 0; i < ports; i++)
                {
                    if (0 != DASK.DO_ReadPort(_devHandle, i, out doVals))
                    {
                        return((int)ErrorDef.InvokeFailed);
                    }
                    for (int j = 0; j < 32; j++)
                    {
                        if (i * 32 + j == DOCount)
                        {
                            break;
                        }
                        isONs[i * 32 + j] = (doVals & (1 << j)) != 0;
                    }
                }
            }
            return((int)ErrorDef.Success);
        }
Ejemplo n.º 14
0
        private void ai_buf_ready_cbfunc()
        {
            if (bufindex == 0)
            {
                myqueue.Enqueue(_ptr[0]);
                bufindex = 1;
            }
            else
            {
                myqueue.Enqueue(_ptr[1]);
                bufindex = 0;
            }
            ushort OverrunFlag;

            DASK.AI_AsyncDblBufferHandled(0);
            DASK.AI_AsyncDblBufferOverrun(0, 0, out OverrunFlag);

            if (OverrunFlag == 1)
            {
                m_dwOverrunCnt = m_dwOverrunCnt + 1;
                DASK.AI_AsyncDblBufferOverrun(0, 1, out OverrunFlag);
                this.Invoke((MethodInvoker) delegate
                {
                    textBoxOverrun.Text = m_dwOverrunCnt.ToString();
                });
            }
        }
Ejemplo n.º 15
0
        public override void Initialize()
        {
            var device = DASK.Register_Card(Type, 0);

            if (device < 0)
            {
                switch (device)
                {
                case DASK.ErrorTooManyCardRegistered:
                    throw new DaskException("32 cards have been registered.");

                case DASK.ErrorUnknownCardType:
                    throw new DaskException(string.Format("The CardType argument {0} is not valid.", DASK.PCI_7432));

                case DASK.ErrorOpenDriverFailed:
                    throw new DaskException("Failed to open the device driver.");

                case DASK.ErrorOpenEventFailed:
                    throw new DaskException("Open event failed in device driver.");

                default:
                    throw new DaskException("Unknown error.");
                }
            }
        }
Ejemplo n.º 16
0
        //RW Single DOI
        public int WriteSingleDOutput(int boardId, int group, int idx, int iVal)
        {
            var ret = 0;

            ret = DASK.DO_WriteLine((ushort)_config.DevIndex, (ushort)group, (ushort)idx, (ushort)iVal);
            return(ret);
        }
Ejemplo n.º 17
0
 private void Form1_Load(object sender, EventArgs e)
 {
     m_dev = DASK.Register_Card(DASK.PCI_7432, 0);/* à»Ô´Ãкº I/O */
     if (m_dev < 0)
     {
         MessageBox.Show("Register_Card error!");
     }
 }
Ejemplo n.º 18
0
        public void Release()
        {
            short ret;

            if (m_dev >= 0)
            {
                ret = DASK.Release_Card((ushort)m_dev);
            }
        }
Ejemplo n.º 19
0
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            short ret;

            if (m_dev >= 0)
            {
                ret = DASK.Release_Card((ushort)m_dev); /* »Ô´Ãкº I/O */
            }
        }
Ejemplo n.º 20
0
        public static void IOCard7432Close()//释放IO卡
        {
            short ret;
            short m_dev = DASK.Register_Card(DASK.PCI_7432, 0);

            if (m_dev >= 0)
            {
                ret = DASK.Release_Card((ushort)m_dev);
            }
        }
Ejemplo n.º 21
0
        static uint Send(bool b, int index, uint value)
        {
            BitArray baWrite = Int32ToBitArray(value);

            baWrite[index] = b;
            value          = BitArrayToInt32(baWrite);
            DASK.DO_WritePort(m_Number, 0, value);

            return(value);
        }
Ejemplo n.º 22
0
        public void Register()
        {
            m_dev = DASK.Register_Card(PCI_name, 0);

            if (m_dev < 0)
            {
                MessageBox.Show("Register_Card error!");

                System.Environment.Exit(0);
            }
        }
Ejemplo n.º 23
0
 private void button1_Click(object sender, EventArgs e)
 {
     queue.Abort();
     err = DASK.AI_AsyncClear(cardRegNumber, out accesscnt);
     if (err < 0)
     {
         MessageBox.Show("AI_AsyncClear");
     }
     button1.Enabled  = false;
     btnStart.Enabled = true;
 }
Ejemplo n.º 24
0
        /// <summary>
        /// Polling an encorder data.
        /// </summary>
        /// <returns>System.Double.</returns>
        /// <exception cref="InvalidOperationException">GPTC_Read Fail, error:  " + err</exception>
        public double EncoderPolling()
        {
            uint  value;
            short err = DASK.GPTC_Read(GetHandle(), gptcCtrl.GCtr[0], out value);

            if (err < 0)
            {
                throw new InvalidOperationException("GPTC_Read Fail, error:  " + err);
            }
            return(Math.Abs((value * 256) / 256));;
        }
Ejemplo n.º 25
0
        /// <summary>
        /// Gets the actual rate per channel.
        /// </summary>
        /// <returns>System.Double.</returns>
        /// <exception cref="InvalidOperationException">GetActualRate_9524 Fail, error:  " + err</exception>
        public double GetActualRatePerChannel()
        {
            double ActualRate;
            short  err = DASK.GetActualRate_9524(GetHandle(), DASK.P9524_AI_LC_Group, config_para.ai_sample_rate, out ActualRate);

            if (err < 0)
            {
                throw new InvalidOperationException("GetActualRate_9524 Fail, error:  " + err);
            }
            return(ActualRate / config_para.ai_chnl_cnt);
        }
Ejemplo n.º 26
0
        public int ReadSingleDInput(int boardId, int group, int idx, out int iVal)
        {
            uint diValue0 = 0;
            var  ret      = 0;

            iVal = -1;

            ret  = DASK.DI_ReadPort((ushort)_config.DevIndex, 0, out diValue0);
            iVal = (int)(diValue0 >> idx) & 1;
            return(ret);
        }
Ejemplo n.º 27
0
        public static void Write(uint data)
        {
            short ret;


            ret = DASK.DO_WritePort((ushort)m_dev, 0, data);
            if (ret < 0)
            {
                // MessageBox.Show("DO_WritePort error!");
                return;
            }
        }
Ejemplo n.º 28
0
 public void Register()
 {
     m_dev = DASK.Register_Card(PCI_name, 0);
     // DASK.DIO_SetDualInterrupt
     //  DASK.DIO_INT1_EventMessage
     if (m_dev < 0)
     {
         MessageBox.Show("Register_Card error!");
         //  Application.Exit();
         System.Environment.Exit(0);
     }
 }
Ejemplo n.º 29
0
        private void Form1_Load(object sender, EventArgs e)
        {
            short ret = DASK.Register_Card(DASK.PCI_9221, 0);

            if (ret >= 0)
            {
                cardRegNumber = (ushort)ret;
            }
            else
            {
                MessageBox.Show("9222卡初始化失败!");
            }
        }
Ejemplo n.º 30
0
        /// <summary>
        /// Stops the acquisition.
        /// </summary>
        /// <returns>System.Int16.</returns>
        /// <exception cref="InvalidOperationException">AI_9524_Config Fail, error:  " + err</exception>
        public short StopAcq()
        {
            short err = DASK.NoError;
            uint  ai_access_cnt;

            err = DASK.AI_AsyncClear(GetHandle(), out ai_access_cnt);
            if (err < 0)
            {
                throw new InvalidOperationException("AI_9524_Config Fail, error:  " + err);
            }

            return(err);
        }