線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3091
推到 Plurk!
推到 Facebook!

第一次用AD卡~不知如何下手~

尚未結案
黑輪
中階會員


發表:135
回覆:188
積分:64
註冊:2004-01-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-13 20:30:00 IP:61.228.xxx.xxx 未訂閱
各位好~第一次用AD卡(PCI-1711),老闆丟給我一片驅動光碟、一條連接線、和一塊版子(可跟連接相接,上面有OUT、IN的接頭),我看了光碟的手冊,還是不太了解,想請大家,要如何下手?要如透過電腦和AD卡,來截取我的電路信號呢? PS:請大家給個概念~
poaivy
中階會員


發表:40
回覆:78
積分:53
註冊:2004-08-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-15 01:19:40 IP:140.117.xxx.xxx 未訂閱
i/o 的寫法你如果會的話就很簡單 去找ㄧ下了關於IO.h的東東,該東西網站上相信應該蠻多的 再去參照妳那塊卡所附的光碟,裡面應該會有說對記憶體哪個地方下訊號 ,相對應會有啥結果吧,仔細看使用手冊裡面應該可以發現你想要的東西 。 ^^
daniel__lee
高階會員


發表:18
回覆:124
積分:113
註冊:2002-11-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-19 17:53:47 IP:61.218.xxx.xxx 未訂閱
我以前回覆過類似的問題 看看吧 http://delphi.ktop.com.tw/topic.php?topic_id=34241 ~ 勿在浮沙上面築高塔 ~
------
~ 勿在浮沙上面築高塔 ~
黑輪
中階會員


發表:135
回覆:188
積分:64
註冊:2004-01-29

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-21 22:49:48 IP:61.228.xxx.xxx 未訂閱
手冊看過了~仍然是一知半解~再加油~ daniel__lee您好~對於程式仍是生手~看了您的說明,仍是不曉得如何下手,請問 ”加入它提供的adsapi32bcb.lib及DRIVER.H”要如何做? 可以請您幫我說明一下嗎~非常感謝您哦 PS:是否有相關介紹的資料或書可以介紹一下~ 發表人 - 黑輪 於 2005/04/21 22:51:43
daniel__lee
高階會員


發表:18
回覆:124
積分:113
註冊:2002-11-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-04-22 15:40:51 IP:61.218.xxx.xxx 未訂閱
一開始你要先對你的板子作初始化 最下面是我以前用1710的程式片段 在.h中你可以找出他已經幫你寫好的函式庫(.lib)的原型 然後挑出你所要用的部分出來就可以了 對初學者來說ㄧ次測試幾個就好,不然太多了很容易出錯..... 由於它的function的命名很不人性化 所以我在另外包裝了一下比較方便自己撰寫 如下是我挑出來的functon 再包裝    你参考看看 祝你成功    
//---------------------------------------------------------------------------
AnsiString adc_config(unsigned char chan,unsigned char gain)
{
  AnsiString st;
  unsigned char buffer;
  ptAIConfig.DasChan=ptAIVoltageIn.chan=chan;
  switch(gain)
   {
     case 0:    buffer=0;       st=" /-5V";       break;  //-5V     TO  5V
     case 1:    buffer=1;       st=" /-2.5V";     break;  //-2.5V   TO  2.5V
     case 2:    buffer=2;       st=" /-1.25V";    break;  //-1.25V  TO  1.25V
     case 3:    buffer=3;       st=" /-0.625V";   break;  //-0.625V TO  0.625V
     case 4:    buffer=4;       st=" /-10V";      break;  //-10V    TO  10V
     case 5:    buffer=16;      st="0-10V";       break;  //0V      TO 10V
     case 6:    buffer=17;      st="0-5V";        break;  //0V      TO 5V
     case 7:    buffer=18;      st="0-2.5V";      break;  //0V      TO 2.5V
     case 8:    buffer=19;      st="0-1.25V";     break;  //0V      TO 1.25V
     default:   buffer=16;      st="0-10V";       break;  //0V      TO 10V
   }
  ptAIConfig.DasGain=ptAIVoltageIn.gain=buffer;
  ptAIVoltageIn.TrigMode =0;
  DRV_AIConfig(DriverHandle,(LPT_AIConfig)&ptAIConfig);
  return st;
}
//---------------------------------------------------------------------------
float adc_input(USHORT chan)
{
  DRV_AIVoltageIn(DriverHandle,(LPT_AIVoltageIn)&ptAIVoltageIn);
  return fVoltage;
}
//---------------------------------------------------------------------------
void dac_config(bool ch,bool MaxValue)
{
  ptAOVoltageOut.chan=ptAOConfig.chan=ch;
  if(MaxValue==0)       ptAOConfig.MaxValue=5;
  else                  ptAOConfig.MaxValue=10;
  DRV_AOConfig(DriverHandle,(LPT_AOConfig)&ptAOConfig);
  ptAOVoltageOut.OutputValue=0.0;
  DRV_AOVoltageOut(DriverHandle,(LPT_AOVoltageOut)&ptAOVoltageOut);
}
//---------------------------------------------------------------------------
void dac_output(bool ch,float Value)
{
  ptAOVoltageOut.chan=ch;
  ptAOVoltageOut.OutputValue=Value;
  DRV_AOVoltageOut(DriverHandle,(LPT_AOVoltageOut)&ptAOVoltageOut);
}
//---------------------------------------------------------------------------        //---------------------------------------------------------------------------
void initial_pci1710()
{
  int         nOutEntries;
  LRESULT     ErrCde;                             // Return error code
  SHORT       gnNumOfDevices;//, gnNumOfSubdevices;  // number of installed devices
  char        szErrMsg[80];                       // Use for MESSAGEBOX function
  if ((ErrCde = DRV_DeviceGetNumOfList((SHORT far *)&gnNumOfDevices)) !=
            SUCCESS)
        {
            DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
            Application->MessageBox((char *)szErrMsg, "Driver Message", MB_OK);
            exit(0);
        }
    if (gnNumOfDevices > MAX_DEVICES)
        gnNumOfDevices = MAX_DEVICES;        // Add type of PC Laboratory Card
    if ((ErrCde = DRV_DeviceGetList((DEVLIST far *) &DeviceList[0],
        (SHORT)gnNumOfDevices, (SHORT far *)&nOutEntries)) != (LONG)SUCCESS)
    {
        DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
        Application->MessageBox((char *)szErrMsg, "Driver Message", MB_OK);
        exit(0);
    }      DRV_DeviceOpen(DeviceList[gwDevice].dwDeviceNum,(LONG far *)&DriverHandle);      ptDioReadPortByte.value = (USHORT far *)&gwValue;
  ptDioReadBit.state=(USHORT far *)&gwState;
  ptDioGetCurrentDOByte.value =(USHORT far *)&gwDoState;
  ptDioGetCurrentDOBit.state=(USHORT far *)&gwDoState_bit;
  ptAIVoltageIn.voltage = (FLOAT far *)&fVoltage;
  outport_byte(0,0xff,0x00);outport_byte(1,0xff,0x00);
  dac_config(0,1);      dac_config(1,1);      adc_config(0,5);      adc_config(1,5);        adc_config(2,5);
  adc_config(3,5);      adc_config(4,5);        adc_config(5,5);
  adc_config(6,5);      adc_config(7,5);        adc_config(8,5);
  adc_config(9,5);      adc_config(10,5);       adc_config(11,5);
  adc_config(12,5);     adc_config(13,5);       adc_config(14,5);
  adc_config(15,5);
  dac_output(0,0);        dac_output(1,0);
}
//---------------------------------------------------------------------------    
~ 勿在浮沙上面築高塔 ~
------
~ 勿在浮沙上面築高塔 ~
daniel__lee
高階會員


發表:18
回覆:124
積分:113
註冊:2002-11-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-04-22 15:54:00 IP:61.218.xxx.xxx 未訂閱
Re::: PS:是否有相關介紹的資料或書可以介紹一下~ 既然你已經使用了這張板子 其實最好的書籍就是它的手冊及光碟中的範例... 或者就乾脆捨棄它提供的 function ,用 WinDriver自己寫I/O 或者用其他人家寫好的I/O程式(但不保證穩定),最後還是要你自己考慮用哪個啦... ~ 勿在浮沙上面築高塔 ~
------
~ 勿在浮沙上面築高塔 ~
黑輪
中階會員


發表:135
回覆:188
積分:64
註冊:2004-01-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-04-22 23:14:21 IP:218.167.xxx.xxx 未訂閱
再請問一些問題~ 1.此AD卡的cable線是68pin的,我看手冊,其中有一些pin是類比輸入用的,是不是將要捉取信號的電線給接在這些類比輸入的pin上呢? 2.還有接地的pin,是不是連接我電路上的接地? 另外還有二個pin標著 5v、 12v,是不是要接 5v、 12v的電壓上去呢? daniel__lee感謝您提供的範例~我會好好的研究一下~
daniel__lee
高階會員


發表:18
回覆:124
積分:113
註冊:2002-11-10

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-04-23 22:55:36 IP:218.166.xxx.xxx 未訂閱
1.此AD卡的cable線是68pin的,我看手冊,其中有一些pin是類比輸入用的,是不是將要捉取信號的電線給接在這些類比輸入的pin上呢? 2.還有接地的pin,是不是連接我電路上的接地? 另外還有二個pin標著 5v、 12v,是不是要接 5v、 12v的電壓上去呢? Sorry這個問題我沒辦法肯定的回答你.... 我使用過好幾款研華的版子不過那都是幾年前的事了....現在我手邊也沒有手冊可以幫你看 不過你說的analog input pins 是讓你捉取信號的沒錯,而 5v和 12v應該是他版子上輸出的電壓,你可以用電表量一下 不要貿然送電 不然..... 建議 類比輸出測試比較容易 只要將輸出pin接上電表觀察即可 而類比輸入你可以先將輸入腳和gnd接在一起 看量測值是否為0 接著在將類比輸出 接到類比輸入 觀察送出的電壓是否和讀到的電壓一樣 (須注意輸入與輸出之間的輸出與輸入範圍) ~ 勿在浮沙上面築高塔 ~
------
~ 勿在浮沙上面築高塔 ~
系統時間:2024-04-20 10:51:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!