//研华输出卡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; } }
public virtual byte Read_do() { byte data; DoInstance.Read(0, out data); return(data); }
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); } }
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); }
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); } }
//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", ""); } }
public byte ReadDoState(int port) { DoController.Read(port, out stateDoFromRead); return(stateDoFromRead); }
public static ErrorCode DoRead(int port, out byte data) { return(instantDoCtrl.Read(port, out data)); }