//研华输出卡PCI1752输出状态回读,在实例化后调用此函数的函数前面要加 unsafe
        /// <summary>
        /// 研华输出卡PCI1752输出状态回读,在实例化后调用此函数的函数前面要加 unsafe
        /// </summary>
        /// <returns>返回输出位状态的数据结构</returns>
        public unsafe Bits GetOutputStatus()
            {
            Bits TempBits=new Bits();

            try
                {
                //Initial the return value;
                for (int a = 0; a < 64; a++)
                    {
                    TempBits.OutBits[a] = false;
                    }

                if (PasswordIsCorrect == false || SuccessBuiltNew == false)
                    {
                    return TempBits;
                    }

                //Read the output status first for each port, total 8 ports
                byte ReadPortData = 0;
                for (int Port = 0; Port <= 7; Port++)
                    {
                    if (NeedFormControlFlag == true)
                        {
                        TargetPCI1752Card.Read(Port, out ReadPortData);
                        }
                    else
                        {
                        TargetDOCard.DoRead(Port, out ReadPortData);
                        }

                    //Judge the status and change the return value for each bit of port
                    for (int Bit = 0; Bit <= 7; Bit++) 
                        {
                        //Once the bit is 1, then set the return value bit as true
                        if ((ReadPortData >> Bit & 0x1) == 1)
                            {
                            TempBits.OutBits[Port * 8 + Bit] = true;
                            }
                        else 
                            {
                            TempBits.OutBits[Port * 8 + Bit] = false;
                            }
                        }
                    }
                return TempBits;
                }
            catch (Exception ex)
                {
                ErrorMessage = ex.Message;
                return TempBits;
                }
            }
Example #2
0
        public virtual byte Read_do()
        {
            byte data;

            DoInstance.Read(0, out data);
            return(data);
        }
Example #3
0
 public override void Write(Int32 PORTx, Int32 Pin, Boolean isHigh)
 {
     lock (syscWriteObject)
     {
         if (!isDoInitialized)
         {
             return;
         }
         m_do.WriteBit(PORTx, Pin, Convert.ToByte(isHigh));
         byte data = 0;
         m_do.Read(0, out data);
     }
 }
Example #4
0
        public override int ReadOut()
        {
            if (disposed)
            {
                return(0);
            }
            ErrorCode ret = ctrl_out.Read(portStart, portCount_out, buf_in);

            if (ret != ErrorCode.Success)
            {
                throw new Exception("Board1730.ReadOut: Ошибка: " + ret.ToString());
            }
            values_out = BitConverter.ToInt32(buf_in, 0);
            return(values_out);
        }
Example #5
0
        public bool GetDoMode(out byte[] arrByteData)
        {
            arrByteData = new byte[8];
            ErrorCode err = instantDoCtrlUsb4704.Read(0, out byte portData);

            if (err != ErrorCode.Success)
            {
                ActiveEventError("获取数字输出失败:" + err.ToString());
                return(false);
            }
            for (int i = 0; i < arrByteData.Length; i++)
            {
                arrByteData[i] = Convert.ToByte((portData >> i) & 0x01);
            }
            return(true);
        }
 public bool Write(int port, int pin, bool value)
 {
     lock (_writeLock)
     {
         if (_do.Read(port, out var portValue) != ErrorCode.Success)
         {
             return(false);
         }
         if (value)
         {
             portValue = (byte)(portValue | 0x1 << pin);
         }
         else
         {
             portValue = (byte)(portValue & ~(0x1 << pin));
         }
         return(_do.Write(portValue, portValue) == ErrorCode.Success);
     }
 }
Example #7
0
        //Skeniranje i konverzija stanja I/O modula
        public void ScanStates()
        {
            forceRefresh();

            try
            {
                #region Inputs
                byte portData = 0;

                ErrorCode err = ErrorCode.Success;
                err = instantDiCtrl1.Read(0, out portData);
                if (err != ErrorCode.Success)
                {
                    HandleError(err);
                    return;
                }
                ChStates_port0 = convertToArr(portData);
                InputStateCh0  = convertToString(portData);

                err = ErrorCode.Success;
                err = instantDiCtrl1.Read(1, out portData);
                if (err != ErrorCode.Success)
                {
                    HandleError(err);
                    return;
                }

                ChStates_port1 = convertToArr(portData);
                InputStateCh1  = convertToString(portData);

                #endregion Inputs

                #region Outputs

                portData = 0;
                byte portDir = 0xFF;
                err = ErrorCode.Success;
                byte[] mask = instantDoCtrl1.Features.DoDataMask;

                err = instantDoCtrl1.Read(ConstVal.StartPort, out portData);
                if (err != ErrorCode.Success)
                {
                    HandleError(err);
                    return;
                }

                if (instantDoCtrl1.Ports != null)
                {
                    portDir = (byte)instantDoCtrl1.Ports[ConstVal.StartPort].DirectionMask;
                }
                ChOutputStates_port0 = convertToArr(portData);
                Array.Reverse(ChOutputStates_port0);
                string outStats = new string(ChOutputStates_port0);

                OutputStateCh0 = convertToString(portData);
                #endregion
            }
            catch
            {
                //Console.WriteLine("Error scanning states");
                Globals.pCol.writeLog(1, "Error scanning states", "");
            }
        }
Example #8
0
        public byte ReadDoState(int port)
        {
            DoController.Read(port, out stateDoFromRead);

            return(stateDoFromRead);
        }
Example #9
0
 public static ErrorCode DoRead(int port, out byte data)
 {
     return(instantDoCtrl.Read(port, out data));
 }