public int basicconfig()//基本配置函数体 { ret = 0; ret = WD_DASK.WD_AI_CH_Config((ushort)m_dev, -1, WD_DASK.AD_B_1_V); //-1代表所有信道,0-7信道 //+-5V if (ret < 0) { // MessageBox.Show("WD_AI_CH_Config error!\r\n"+ret.ToString()); return(-1); } ret = WD_DASK.WD_AI_Config((ushort)m_dev, WD_DASK.WD_IntTimeBase, true, WD_DASK.WD_AI_ADCONVSRC_TimePacer, false, true); //参数2 选择时钟源,此处为内部时钟源 //参数3 是否激活 ad duty循环恢复 //参数4 ad转换源的选择 //参数5 是否开启ad ping pong模式 //参数6 模拟输入完成后,是否重置模拟ai的缓存 if (ret < 0) { // MessageBox.Show("WD_AI_Config error!\r\n"+ret.ToString()); return(-1); } ret = WD_DASK.WD_AI_Trig_Config((ushort)m_dev, 0, 2, 1, 0, 1.0, 0, 0, 0, 1); //设置触发源 模式 性能,必须在任何ai之前调用该函数 //2触发模式只能选择delay 或者post 触发0x00是post 0x03是delay //3 触发源 可选soft触发 外部触发 ssi触发(两种) 参数对应0 2 3 4 //4 上升或下降沿触发 1上升沿 0下降沿 //5 信道选择 //6 触发阈值选择 数字信号输入阈值选择是0-3.3.默认1.67 //7 仅用于中间触发。表明了触发时间传递来的数据量 //8 没看懂 //9 事件触发后,延迟x个tick后执行? //10 if (ret < 0) { // MessageBox.Show("Trigger error\r\n"+ret.ToString()); return(-1); } ret = WD_DASK.WD_AI_ContBufferSetup((ushort)m_dev, data_buffer, buffernum, out buf_id);//对接模拟数据的buffer //每调用一次该函数,产生一个ai缓存,用来保存连续不断的ai。最多两个 //2.存储数据的缓存首地址,该地址需要16字节对齐。 //3.缓存的大小(in sample) //4 当前建立的缓存索引 if (ret < 0) { WD_DASK.WD_Buffer_Free((ushort)m_dev, data_buffer); //这里设置失败尝试把buffer大小设置大一点 WD_DASK.WD_AI_ContBufferReset((ushort)m_dev); WD_DASK.WD_Release_Card((ushort)m_dev); // MessageBox.Show("WD_AI_ContBufferSetup error!\r\n"+ret.ToString()); return(-1); } return(0); }
private void ServerForm_FormClosing(object sender, FormClosingEventArgs e)//窗口关闭事件 { if (m_dev >= 0) { //功能:停止异步模拟输入 //如果是pre或者middle触发模式,startpos返回ad buffer第一个数据的位置 //如果是pre或者middle触发模式,access_cnt返回ad buffer的数据个数。如果是双buffer,返回第二个buffer的数据首位置 // WD_DASK.WD_Buffer_Free((ushort)m_dev, data_buffer); // WD_DASK.WD_AI_AsyncClear((ushort)m_dev, out StartPos, out access_cnt); WD_DASK.WD_Release_Card((ushort)m_dev);//释放卡 } }