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."); } } }
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); } }
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); }
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!"); } }
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); } }
public void Register() { m_dev = DASK.Register_Card(PCI_name, 0); if (m_dev < 0) { MessageBox.Show("Register_Card error!"); System.Environment.Exit(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); } }
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卡初始化失败!"); } }
public static void Init(IO[] inputMotors, IO[] outputMotors) { try { DASK.Register_Card(CARD_TYPE, m_Number); _IsRegistered = true; } catch (Exception) { Logger.Fatal("ADLINK card error."); _IsRegistered = false; } InitInputMotor(inputMotors); InitOutputMotor(outputMotors); Start(); }
/// <summary> /// Registers the card. /// </summary> /// <param name="card_num">The card number.</param> /// <returns>System.Int16.</returns> public short RegisterCard(ushort card_num) { if (card_handle < 0 || this.card_num != card_num) { short handle = DASK.Register_Card(DASK.PCI_9524, card_num); if (handle < 0) { return(handle);//return error coed if error happened. } else { ReleaseCard(); this.card_num = card_num; this.card_handle = handle; } } return(DASK.NoError); }
public override bool Init(HardWareInfoBase infoHardWare) { // Global.logger.Info("初始化凌华IO卡"); ADLINKInputOutputInfo tempInfo = (ADLINKInputOutputInfo)infoHardWare; usCardNo = (ushort)tempInfo.iCardNo; bool ret; try { ret = DASK.Register_Card(tempInfo.hardwareModel, usCardNo) == 0 ? true : false; } catch (Exception) { // Global.logger.Info("初始化凌华IO卡失败!"); return(false); } /// Global.logger.Info("初始化凌华IO卡成功!"); return(ret); }
public static void Initial(ushort cardNbr, out short code, out string message) { try { m_device = DASK.Register_Card(DASK.PCI_7432, 0); /* เปิดระบบ I/O */ } catch { m_device = -3; } if (m_device < 0) { code = -1; message = "Register_Card error!"; logText = "DIO Initialization: " + message; log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); } else { code = 0; message = ""; logText = "DIO Initialization: OK"; log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); } }
short _devHandle = -1; //SDK打开卡时返回的句柄 public int OpenDevice() { if (!IsInitOK) { return((int)ErrorDef.NotInitialed); } if (IsDeviceOpen) { return(0); } _devHandle = DASK.Register_Card((ushort)_cardType, (ushort)_cardIndex); if (_devHandle < 0) { return((int)ErrorDef.InvokeFailed); } _dioMD = new JFAdlinkPciDio(_cardType, _devHandle); _dioMD.Open(); IsDeviceOpen = true; return((int)ErrorDef.Success); }
public static void IOCard7432Initial() //初始化IO扩展卡 { //ushort _cardType = 0; //for (ushort i = 0; i < 16; i++) //{ // //在下拉框中添加 systemID // if (DASK.Register_Card(DASK.PCI_7432, i) >= 0) // { // //cmbCardSystemId.Items.Add(i); // _cardType = DASK.PCI_7432; // } // else // { // MessageBox.Show("7432卡初始化失败!"); // } //} //_cardRegId = DASK.Register_Card(_cardType, Convert.ToUInt16(cmbCardSystemId.SelectedItem)); //实列化卡片 //short _cardRegId = DASK.Register_Card(16, 0); //实列化卡片 //if (_cardRegId < 0) //{ // MessageBox.Show("7432卡初始化失败!"); //} ushort _cardType = 0; //short cardRegId; //全局引用 for (ushort i = 0; i < 16; i++) { //在下拉框中添加 systemID if (DASK.Register_Card(DASK.PCI_7432, i) >= 0) { //cmbCardSystemId.Items.Add(i); _cardType = DASK.PCI_7432; } } CAMiClsVariable.cardRegId = DASK.Register_Card(_cardType, 0); //实列化卡片 }
static void Main(string[] args) { short err; ushort card_num = 0; short card; uint ReadCount = 60; ushort Group = 0; // Load Cell Channel Group ushort XMode = DASK.P9524_AI_XFER_DMA; ushort ADC_Range = 0; ushort ADC_SampRate = DASK.P9524_ADC_60_SPS; ushort ConfigCtrl = DASK.P9524_VEX_Range_10V | DASK.P9524_AI_BufAutoReset; ushort TrigCtrl = 0; uint dwTrigValue = 0; ushort GCtr0 = DASK.P9524_CTR_QD0; ushort Mode = DASK.P9524_x4_AB_Phase_Decoder; ushort Channel = DASK.P9524_AI_LC_CH0; byte Stopped = 0; byte HalfReady = 0; uint AccessCnt; int viewidx = 0; ushort overrunFlag = 0; double ActualRate; IntPtr BufPtr1; ushort BufID1; IntPtr BufPtr2; ushort BufID2; double[] voltageArray = new double[ReadCount]; ushort DFStage = 2; uint SPKRejThreshold = 16; StreamWriter sw = new StreamWriter("acq.csv"); BufPtr1 = Marshal.AllocHGlobal((int)(sizeof(uint) * (ReadCount))); BufPtr2 = Marshal.AllocHGlobal((int)(sizeof(uint) * (ReadCount))); card = DASK.Register_Card(DASK.PCI_9524, card_num); if (card < 0) { throw new InvalidOperationException("DSA_Register_Card Fail, error: " + card); } //Enable Decoder0 err = DASK.GPTC_Clear((ushort)card, GCtr0); if (err < 0) { throw new InvalidOperationException("GPTC_Clear Fail, error: " + err); } err = DASK.GPTC_Setup((ushort)card, GCtr0, Mode, 0, 0, 0, 0); if (err < 0) { throw new InvalidOperationException("GPTC_Setup Fail, error: " + err); } //apply parameter 4 to "2" to combine data to AI err = DASK.GPTC_Control((ushort)card, GCtr0, DASK.P9524_CTR_Enable, 2); if (err < 0) { throw new InvalidOperationException("GPTC_Control Fail, error: " + err); } err = DASK.AI_AsyncDblBufferMode((ushort)card, true); if (err < 0) { throw new InvalidOperationException("AI_AsyncDblBufferMode Fail, error: " + err); } /*In Double Buffer Mode, you should setup two buffers*/ err = DASK.AI_ContBufferSetup((ushort)card, BufPtr1, ReadCount, out BufID1); if (err < 0) { throw new InvalidOperationException("AI_ContBufferSetup Fail, error: " + err); } err = DASK.AI_ContBufferSetup((ushort)card, BufPtr2, ReadCount, out BufID2); if (err < 0) { throw new InvalidOperationException("AI_ContBufferSetup Fail, error: " + err); } /*Load Cell Group*/ /*Set DSP - it is necessary fot Load Cell Group*/ err = DASK.AI_9524_SetDSP((ushort)card, Channel, DASK.P9524_SPIKE_REJ_ENABLE, DFStage, (ushort)SPKRejThreshold); if (err < 0) { throw new InvalidOperationException("AI_9524_SetDSP Fail, error: " + err); } err = DASK.AI_9524_Config((ushort)card, Group, XMode, ConfigCtrl, TrigCtrl, (ushort)dwTrigValue); if (err < 0) { throw new InvalidOperationException("AI_9524_Config Fail, error: " + err); } Console.WriteLine("\nPress any key to start AI Infinite Acquisition\n"); Console.ReadKey(true); Console.WriteLine("\nYou can press any key to stop...\n\n"); err = DASK.AI_ContReadChannel((ushort)card, Channel, ADC_Range, new ushort[] { BufID1 }, ReadCount, ADC_SampRate, DASK.ASYNCH_OP); if (err < 0) { throw new InvalidOperationException("AI_ContReadChannel Fail, error: " + err); } do { err = DASK.AI_AsyncDblBufferHalfReady((ushort)card, out HalfReady, out Stopped); if (err < 0) { throw new InvalidOperationException("AI_AsyncDblBufferHalfReady Fail, error: " + err); } System.Threading.Thread.Sleep(1); if (HalfReady == 1) { if (viewidx == 0) { Console.WriteLine("Buffer 1 HalfReady, Process the data of Buffer 1\n"); /*Process buffer 1 data*/ DASK.AI_ContVScale((ushort)card, ADC_Range, BufPtr1, voltageArray, (int)ReadCount); for (int j = 0; j < ReadCount; j = j + 2) { //fprintf(fin, "AI0:,%13.9f,2's Complement Decoder Valuse:, %d\n", voltageArray[i], (int)(Buffer1[i + 1] * 256) / 256); sw.WriteLine(voltageArray[j] + "," + (int)(((uint *)(void *)BufPtr1)[j + 1] * 256) / 256); } viewidx = 1; /*Tell the driver you complete the buffer 1 process*/ err = DASK.AI_AsyncDblBufferHandled((ushort)card); if (err < 0) { throw new InvalidOperationException("AI_AsyncDblBufferHandled Fail, error: " + err); } } else { Console.WriteLine("Buffer 2 HalfReady, Process the data of Buffer 2\n"); /*Process buffer 2 data*/ DASK.AI_ContVScale((ushort)card, ADC_Range, BufPtr2, voltageArray, (int)ReadCount); for (int j = 0; j < ReadCount; j = j + 2) { //fprintf(fin, "AI0:,%13.9f,2's Complement Decoder Valuse:, %d\n", voltageArray[i], (int)(Buffer1[i + 1] * 256) / 256); sw.WriteLine(voltageArray[j] + "," + (int)(((uint *)(void *)BufPtr2)[j + 1] * 256) / 256); } viewidx = 0; /*Tell the driver you complete the buffer 2 process*/ err = DASK.AI_AsyncDblBufferHandled((ushort)card); if (err < 0) { throw new InvalidOperationException("AI_AsyncDblBufferHandled Fail, error: " + err); } } // This function can check if the overrun occurs. If the // function is called, AI_AsyncDblBufferHandled() should // be called to let driver to know user buffer is processed // completely err = DASK.AI_AsyncDblBufferOverrun((ushort)card, 0, out overrunFlag); if (err < 0) { throw new InvalidOperationException("AI_AsyncDblBufferOverrun Fail, error: " + err); } if (overrunFlag != 0) { Console.WriteLine("OVERRUN:\n" + overrunFlag); DASK.AI_AsyncDblBufferOverrun((ushort)card, 1, out overrunFlag); } } } while ((Stopped == 0) && (Console.KeyAvailable == false)); DASK.GetActualRate_9524((ushort)card, Group, ADC_SampRate, out ActualRate); Console.WriteLine("\n\nGeneral Purpose Channel 0 Acquisition Done in " + ActualRate + "Hz"); Console.WriteLine("The acquired data stored in acq.dat\n"); /*Clear AI setting while existing*/ err = DASK.AI_AsyncClear((ushort)card, out AccessCnt); if (err < 0) { Console.WriteLine("AI_AsyncClear Error:" + err + "\n"); DASK.AI_ContBufferReset((ushort)card); DASK.Release_Card((ushort)card); } if ((ConfigCtrl & DASK.P9524_AI_BufAutoReset) == 0) { err = DASK.AI_ContBufferReset((ushort)card); if (err < 0) { throw new InvalidOperationException("AI_ContBufferReset Fail, error: " + err); } } DASK.GPTC_Clear((ushort)card, GCtr0); DASK.Release_Card((ushort)card); Console.Write("Press any key to save data . . ."); sw.Close(); Console.ReadKey(true); }
private void PCI9222_Load(object sender, EventArgs e) { short ret = DASK.Register_Card(DASK.PCI_9222, 0); if (ret >= 0) { cardRegNumber = (ushort)ret;//Register_Card的时候,把卡号给cardRegNumber } else { MessageBox.Show("9222卡初始化失败!"); } //ushort ConfigCtrl = DASK.P922x_AI_SingEnded | DASK.P922x_AI_CONVSRC_INT;//?差分在哪区分 //ushort TrigCtrl = DASK.P922x_AI_TRGMOD_POST | DASK.P922x_AI_TRGSRC_SOFT;//? ushort ConfigCtrl = DASK.P922x_AI_Differential | DASK.P922x_AI_CONVSRC_INT;; //?差分在哪区分 ushort TrigCtrl = DASK.P922x_AI_TRGMOD_POST | DASK.P922x_AI_TRGSRC_SOFT;; //? uint ReTriggerCount = 0; /*Ignore in Non-Retrigger*/ bufindex = 0;//是用来两个交替读吗? //Channel = 4; /*AI Channel Number to be read*/ //uint SampIntrv = 8000; /*Sampling Rate: P922X_TIMEBASE/320 = 250K Hz*/ //这个设置,如果要快一点,怎么设置,变小? //P922X_TIMEBASE 时钟,80000000, intrv=80000000/5000=16000;5000为每秒5000个数据,每个通道1000个数据/s uint SampIntrv = 16000; /*Sampling Rate: P922X_TIMEBASE/320 = 250K Hz*/ //采样率=80 000000/500=160000,每个通道100个数据,有5个通道 //AI_ReadCount设置为500, //建议每秒钟采集10次-50次,这样不会丢数据。如果采集20次,怎么设置了? //目标:1S1000个数据,1ms一个 intrv=80000000/5000=16000;5000为每秒5000个数据,每个通道1000个数据/s SampIntrv = 16000, //AI_ReadCount=5000,则1S采集一次,如果设置成500,则0.1S采集一次,一次100个数据每通道、如果设置成250,则0.05采集一次,1次50个数据 uint ScanIntrv = (uint)(SampIntrv * (Channel + 1)); /*Scan Rate: P922X_TIMEBASE/320 = 250K Hz*/ ushort AdRange = DASK.AD_B_10_V; /*AI range*/ ai_buf_ready_cbdel = new CallbackDelegate(ai_buf_ready_cbfunc); _ptr[0] = Marshal.AllocHGlobal((sizeof(ushort) * ((Int32)AI_ReadCount)));//5000 _ptr[1] = Marshal.AllocHGlobal((sizeof(ushort) * ((Int32)AI_ReadCount))); VBuffer[0] = Marshal.AllocHGlobal((sizeof(double) * ((Int32)AI_ReadCount))); /*Configure AI*/ err = DASK.AI_9222_Config(cardRegNumber, ConfigCtrl, TrigCtrl, ReTriggerCount, true); if (err < 0) { MessageBox.Show("config"); } /*Set Scan and Sampling Rate*/ err = DASK.AI_9222_CounterInterval(cardRegNumber, ScanIntrv, SampIntrv); if (err < 0) { MessageBox.Show("AI_9222_CounterInterval"); } /*Enable Double Buffer Mode*/ err = DASK.AI_AsyncDblBufferMode(cardRegNumber, true); if (err < 0) { MessageBox.Show("AI_AsyncDblBufferMode"); } /*Setup Buffer for AI DMA Transfer*/ err = DASK.AI_ContBufferSetup(cardRegNumber, _ptr[0], AI_ReadCount, out _bufferId[0]); if (err < 0) { MessageBox.Show("AI_ContBufferSetup"); } err = DASK.AI_ContBufferSetup(cardRegNumber, _ptr[1], AI_ReadCount, out _bufferId[1]); if (err < 0) { MessageBox.Show("AI_ContBufferSetup"); } err = DASK.AI_EventCallBack(cardRegNumber, 1 /*add*/, DASK.DBEvent /*EventType*/, ai_buf_ready_cbdel);//???????????????????? if (err < 0) { MessageBox.Show("AI_EventCallBack"); } err = DASK.AI_ContScanChannels(cardRegNumber, Channel, AdRange, _bufferId, AI_ReadCount, 0 /*Ignore*/, DASK.ASYNCH_OP);////?????????? if (err < 0) { MessageBox.Show("AI_ContScanChannels"); } this.timer1.Enabled = true; }
public void PCI922Init() { short ret = DASK.Register_Card(DASK.PCI_9222, 0); if (ret >= 0) { cardRegNumber = (ushort)ret;//Register_Card的时候,把卡号给cardRegNumber Globals.addList("9222卡初始化成功!", Mycolor.None); #region PCI9222设置 //ushort ConfigCtrl = DASK.P922x_AI_SingEnded | DASK.P922x_AI_CONVSRC_INT;//?差分在哪区分 //ushort TrigCtrl = DASK.P922x_AI_TRGMOD_POST | DASK.P922x_AI_TRGSRC_SOFT;//? ushort ConfigCtrl = DASK.P922x_AI_Differential; //?差分在哪区分 ushort TrigCtrl = DASK.P922x_AI_TRGMOD_POST; //? uint ReTriggerCount = 0; /*Ignore in Non-Retrigger*/ bufindex = 0;//是用来两个交替读吗? //Channel = 4; /*AI Channel Number to be read*/ //uint SampIntrv = 8000; /*Sampling Rate: P922X_TIMEBASE/320 = 250K Hz*/ //这个设置,如果要快一点,怎么设置,变小? //AI_ReadCount设置为500, //建议每秒钟采集10次-50次,这样不会丢数据。如果采集20次,怎么设置了? //目标:1S1000个数据,1ms一个 intrv=80000000/5000=16000;5000为每秒5000个数据,每个通道1000个数据/s SampIntrv = 16000, //AI_ReadCount=5000,则1S采集一次,如果设置成500,则0.1S采集一次,一次100个数据每通道、如果设置成250,则0.05采集一次,1次50个数据 uint SampIntrv = 16000; /*Sampling Rate: P922X_TIMEBASE/320 = 250K Hz*/ uint ScanIntrv = (uint)(SampIntrv * (Channel + 1)); /*Scan Rate: P922X_TIMEBASE/320 = 250K Hz*/ ushort AdRange = DASK.AD_B_10_V; /*AI range*/ ai_buf_ready_cbdel = new CallbackDelegate(ai_buf_ready_cbfunc); _ptr[0] = Marshal.AllocHGlobal((sizeof(ushort) * ((Int32)AI_ReadCount)));//5000 _ptr[1] = Marshal.AllocHGlobal((sizeof(ushort) * ((Int32)AI_ReadCount))); VBuffer[0] = Marshal.AllocHGlobal((sizeof(double) * ((Int32)AI_ReadCount))); /*Configure AI*/ err = DASK.AI_9222_Config(cardRegNumber, ConfigCtrl, TrigCtrl, ReTriggerCount, true); if (err < 0) { Globals.addList("9222卡config失败!", Mycolor.ErrorRed); } /*Set Scan and Sampling Rate*/ err = DASK.AI_9222_CounterInterval(cardRegNumber, ScanIntrv, SampIntrv); if (err < 0) { Globals.addList("9222卡AI_9222_CounterInterval设置失败!", Mycolor.ErrorRed); } /*Enable Double Buffer Mode*/ err = DASK.AI_AsyncDblBufferMode(cardRegNumber, true); if (err < 0) { Globals.addList("9222卡AI_AsyncDblBufferMode设置失败!", Mycolor.ErrorRed); } /*Setup Buffer for AI DMA Transfer*/ err = DASK.AI_ContBufferSetup(cardRegNumber, _ptr[0], AI_ReadCount, out _bufferId[0]); if (err < 0) { Globals.addList("9222卡AI_ContBufferSetup设置失败!", Mycolor.ErrorRed); } err = DASK.AI_ContBufferSetup(cardRegNumber, _ptr[1], AI_ReadCount, out _bufferId[1]); if (err < 0) { Globals.addList("9222卡AI_ContBufferSetup设置失败!", Mycolor.ErrorRed); } err = DASK.AI_EventCallBack(cardRegNumber, 1 /*add*/, DASK.DBEvent /*EventType*/, ai_buf_ready_cbdel);//???????????????????? if (err < 0) { Globals.addList("9222卡AI_EventCallBack设置失败!", Mycolor.ErrorRed); } err = DASK.AI_ContScanChannels(cardRegNumber, Channel, AdRange, _bufferId, AI_ReadCount, 0 /*Ignore*/, DASK.ASYNCH_OP);////?????????? if (err < 0) { Globals.addList("9222卡AI_ContScanChannels设置失败!", Mycolor.ErrorRed); } #endregion } else { Globals.PostAlarmMachine(XAlarmLevel.STOP, (int)AlarmCode.凌华PCI9222板卡异常, AlarmCategory.SYSTEM.ToString(), "凌华PCI9222板卡异常"); if (ShowList != null) { ShowList("9222卡初始化失败!"); } } }