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

GPIB一問??

尚未結案
ohsula
一般會員


發表:12
回覆:17
積分:5
註冊:2004-03-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-20 19:21:34 IP:218.169.xxx.xxx 未訂閱
請問各位大大,我有一儀器含GPIB介面,且有其include檔,如儀器名稱為pps1024(power supply),其標頭檔為"pps1024.h",在turbo C中我只要在程式link此標頭檔,便可控制此儀器,不知在BCB中是否可將其include檔"pps1024.h"複製至BCB之include中使用?? /* filename : pps1204.h */ /* date : 09/06/96 */ void hp6632a_init(int address); void hp6632a_set_overcur(int protect); void hp6632a_set_current(double current); void hp6632a_set_overvolt(double over_volt); void hp6632a_config(int out,double voltage); void hp6632a_out_current(double *out_current); void hp6632a_out_voltage(double *out_voltage); void hp6633a_init(int address); void hp6633a_set_overcur(int protect); void hp6633a_set_current(double current); void hp6633a_set_overvolt(double over_volt); void hp6633a_config(int out,double voltage); void hp6633a_out_current(double *out_current); void hp6633a_out_voltage(double *out_voltage); int hp6632a,hp6633a; /*----- hp6632a(hp6633a)_init -----*/ void hp6632a_init (int address) { hp6632a=address; hp6633a=address; ibren (hp6632a); delay1(0.2); ibwrt (hp6632a,"OUT1 1",6); } void hp6633a_init (int address) { hp6632a=address; hp6633a=address; ibren (hp6633a); delay1(0.2); ibwrt (hp6633a,"OUT2 1",6); } /*----- hp6632a(hp6633a)_set_overcur -----*/ void hp6632a_set_overcur (int protect) { if (protect == 1) { ibwrt (hp6632a,"OCP 1",5); /* RST;OCP 1 */ delay1(0.1); } else { ibwrt (hp6632a,"OCP 0",5); /* RST;OCP 0 */ delay1(0.1); } } void hp6633a_set_overcur (int protect) { if (protect == 1) { ibwrt (hp6633a,"OCP 1",5); /* RST;OCP 1 */ delay1(0.1); } else { ibwrt (hp6633a,"OCP 0",5); /* RST;OCP 0 */ delay1(0.1); } } /*----- hp6632a(hp6633a)_set_current -----*/ void hp6632a_set_current (double current) { char value[10],buf[50],*result; int i; result=&buf[0]; strcpy(result,"ISET1 "); gcvt(current,4,value); result=strcat(result,value); ibwrt (hp6632a,result,strlen(result)); } void hp6633a_set_current (double current) { char value[10],buf[50],*result; int i; result=&buf[0]; strcpy(result,"ISET2 "); gcvt(current,4,value); result=strcat(result,value); ibwrt (hp6633a,result,strlen(result)); } /*----- hp6632a(hp6633a)_set_overvolt -----*/ void hp6632a_set_overvolt (double over_volt) { char value[10],buf[50],*result; int i; result=&buf[0]; strcpy(result,"OVSET1 "); gcvt(over_volt,4,value); result=strcat(result,value); ibwrt (hp6632a,result,strlen(result)); } void hp6633a_set_overvolt (double over_volt) { char value[10],buf[50],*result; int i; result=&buf[0]; strcpy(result,"OVSET2 "); gcvt(over_volt,4,value); result=strcat(result,value); ibwrt (hp6633a,result,strlen(result)); } /*----- hp6632a(hp6633a)_config -----*/ void hp6632a_config (int out,double voltage) { char value[10],buf[50],*result; int i; if (out == 1) { ibwrt (hp6632a,"OUT1 1",6); delay1 (0.06); result=&buf[0]; strcpy(result,"VSET1 "); gcvt(voltage,4,value); result=strcat(result,value); ibwrt (hp6632a,result,strlen(result)); } else { ibwrt (hp6632a,"OUT1 0",6); delay1 (0.06); result=&buf[0]; strcpy(result,"VSET1 "); gcvt(voltage,4,value); result=strcat(result,value); ibwrt (hp6632a,result,strlen(result)); } } void hp6633a_config (int out,double voltage) { char value[10],buf[50],*result; int i; if (out == 1) { ibwrt (hp6633a,"OUT2 1",6); delay1 (0.06); result=&buf[0]; strcpy(result,"VSET2 "); gcvt(voltage,4,value); result=strcat(result,value); ibwrt (hp6633a,result,strlen(result)); } else { ibwrt (hp6633a,"OUT2 0",6); delay1 (0.06); result=&buf[0]; strcpy(result,"VSET2 "); gcvt(voltage,4,value); result=strcat(result,value); ibwrt (hp6633a,result,strlen(result)); } } /*----- hp6632a(hp6633a)_out_current -----*/ void hp6632a_out_current (double *out_current) { char *in_str; *out_current=0.0; ibwrt (hp6632a,"IOUT1?",6); in_str=" "; ibrd (hp6632a,in_str,8); *out_current=atof(in_str); } void hp6633a_out_current (double *out_current) { char *in_str; *out_current=0.0; ibwrt (hp6633a,"IOUT2?",6); in_str=" "; ibrd (hp6633a,in_str,8); *out_current=atof(in_str); } /*----- hp6632a(hp6633a)_out_voltage -----*/ void hp6632a_out_voltage (double *out_voltage) { char *in_str; *out_voltage=0.0; ibwrt (hp6632a,"VOUT1?",6); in_str=" "; ibrd (hp6632a,in_str,8); *out_voltage=atof(in_str); } void hp6633a_out_voltage (double *out_voltage) { char *in_str; *out_voltage=0.0; ibwrt (hp6633a,"VOUT2?",6); in_str=" "; ibrd (hp6633a,in_str,8); *out_voltage=atof(in_str); } Auston Huang
------
Auston Huang
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-22 13:11:55 IP:61.218.xxx.xxx 未訂閱
ohsula您好:
(1)先確認您的GPIB API Library是否能在Win32s下Run,因為您沒說清楚您是用
   HP-IB GPIB library還是NI Gpib Library,兩者都有for win32s的版本
   
   1-1.NI-488.2 (Win32) Version 2.1 for Windows 2000/98/ME/XP,
       這是最新的版本
       下載:ftp://ftp.ni.com/support/gpib/ni488221/ni488221.exe
       NI-488.2 API User Manual:
       http://www.ni.com/pdf/manuals/370428a.pdf       1-2. HPIB....我就不太清楚了    (2)看到您用ibwrt的Commmand(IEEE488.1)在控制Electornic Load,在Winodows
  下您用的pps1024.h 自訂函式可以正常在C   Builder中運作,但還是要先確
  認一下您的Gpib Library 是否可以For win32s(這點很重要)    (3)看了一下您的程式都是在做Electornic Load的電流抽載跟Power Suppler
   的保護電路測試,我倒是有個建議您可把這些 Function 物件化,這樣不管您
   的Power Supply有幾組輸出,我愛怎麼測就怎麼測喔...    (4)我是從事Power Supply產品設計工作,寫測試程式算是我的副業...有問題
   可以來討論討論    
/*生活是一種藝術,用心生活才能享受生活*/
發表人 - axsoft 於 2004/03/22 13:17:10
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-22 17:51:47 IP:61.218.xxx.xxx 未訂閱
ohsula:    下面是簡易的IEEE488.1讀寫CHRAMA公司的DC Electornic Load範例,參考看看! < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=14674079&CC=328181">
    Main Unit---SimpleUnit.cpp
//---------------------------------------------------------------------------
#include 
#include     #pragma hdrstop    #include "SimpleUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TSimple *Simple;    int loada,loadb;    //---------------------------------------------------------------------------    __fastcall TSimple::TSimple(TComponent* Owner)
    : TForm(Owner)
{
}    //---------------------------------------------------------------------------
void __fastcall TSimple::FormCreate(TObject *Sender)
{
 loada=initial(11);
 loadb=initial(12);
 CommandBox->Text = "*IDN?";
}    //---------------------------------------------------------------------------    void __fastcall TSimple::RunCmdClick(TObject *Sender)
{
  Send(loada,"CHAN 1;LOAD ON;CHAN 2;LOAD ON;CHAN 3;LOAD ON;CHAN 4;LOAD ON");
  ReadingsList->Items->Add( "LOAD A ON(CH1~CH4)");
  Send(loadb,"CHAN 1;LOAD ON;CHAN 2;LOAD ON;CHAN 3;LOAD ON;CHAN 4;LOAD ON");
  ReadingsList->Items->Add( "LOAD B ON(CH5~CH8)");
  
  Send(loada,CommandBox->Text);
  ReadingsList->Items->Add( Read(loada));
  ReadingsList->Refresh();
}
//---------------------------------------------------------------------------
void __fastcall TSimple::QuitCmdClick(TObject *Sender)
{
/*
 * ========================================================================
 *
 * CLEANUP SECTION
 *
 * ========================================================================
 */
    Send(loada,"CHAN 1;LOAD Off;CHAN 2;LOAD Off;CHAN 3;LOAD Off;CHAN 4;LOAD Off");        Send(loadb,"CHAN 1;LOAD Off;CHAN 2;LOAD Off;CHAN 3;LOAD Off;CHAN 4;LOAD Off");        /* The device is taken offline.                                    */
    ibonl(loada, 0);
    ibonl(loadb,0);
    Close();
}
//---------------------------------------------------------------------------        SimpleUnit.H    //---------------------------------------------------------------------------
#ifndef SimpleUnitH
#define SimpleUnitH
//---------------------------------------------------------------------------
#include 
#include 
#include 
#include <Forms.hpp>
#include "Dev488.h"
//---------------------------------------------------------------------------
class TSimple : public TForm
{
__published:        // IDE-managed Components
    TGroupBox *GroupBox1;
    TLabel *Label1;
    TLabel *Label2;
    TButton *RunCmd;
    TButton *QuitCmd;
    TEdit *CommandBox;
    TListBox *ReadingsList;
    void __fastcall FormCreate(TObject *Sender);
    void __fastcall RunCmdClick(TObject *Sender);
    void __fastcall QuitCmdClick(TObject *Sender);
private:        // User declarations
public:                // User declarations
    __fastcall TSimple(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TSimple *Simple;
//---------------------------------------------------------------------------
#endif        Dev488.H
//---------------------------------------------------------------------------
// FUNCTION設計: axsoft
// 時間:2004/03/22 PM:03:00    #ifndef Dev488H
#define Dev488H    #define SIZEOFARRAY              1024              // Size of read buffer
#define BDINDEX                        0                // Board Index
#define NO_SECONDARY_ADDR        0                // Secondary address of device
#define TIMEOUT                        T3s             // Timeout value = 10 seconds
#define EOTMODE                        1                // Enable the END message
#define EOSMODE                        0                // Disable the EOS mode    #include 
#include "ni488.h"
#pragma link "..\\borlandc_gpib-32"    int __fastcall initial(int Dev);
void __fastcall Send(int Dev, String cmd);
String __fastcall Read(int Dev);
void __fastcall ReadToFile(int addr,AnsiString FileName);
//---------------------------------------------------------------------------
#endif    Dev488.cpp
/---------------------------------------------------------------------------    #pragma hdrstop    #include "Dev488.h"    //---------------------------------------------------------------------------    #pragma package(smart_init)    //---------------------------------------------------------------------------
int __fastcall initial(int Device)
{
 /*
 * ========================================================================
 *
 * INITIALIZATION SECTION
 *
 * ========================================================================
 */
  int Dev;
 /*
  * The application brings the power supply online using ibdev. A
  * device handle, Dev, is returned and is used in all subsequent
  * calls to the device.
  */
 try{
     Dev = ibdev(BDINDEX, Device, NO_SECONDARY_ADDR,
                 TIMEOUT, EOTMODE, EOSMODE);
  }catch(...)  { ShowMessage("ibdev Open error"); }
 return Dev;
}
//---------------------------------------------------------------------------
void __fastcall Send(int addr, String cmd)
{
  try{
  ibwrt(addr, cmd.c_str(), cmd.Length()+1);
  }catch(...){ShowMessage("ibwrt error");}    }
//---------------------------------------------------------------------------
String __fastcall Read(int addr)
{
  char ValueStr[SIZEOFARRAY + 1];
  try{
    try{
         ibrd(addr, ValueStr,SIZEOFARRAY);
    }catch(...){ShowMessage("ibrd error");}
  }__finally{
   ValueStr[ibcntl - 1]='\0';
  }      return  AnsiString(ValueStr);
 }
//---------------------------------------------------------------------------
void __fastcall ReadToFile(int addr,AnsiString FileName)
{
 try{
     ibrdf(addr,FileName.c_str());
  }catch(...)  { ShowMessage("ibrdf error!!");}    }
//---------------------------------------------------------------------------
/*生活是一種藝術,用心生活才能享受生活*/
發表人 - axsoft 於 2004/03/22 17:59:42
ohsula
一般會員


發表:12
回覆:17
積分:5
註冊:2004-03-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-23 00:49:55 IP:61.229.xxx.xxx 未訂閱
axsoft大大你好,在下從事DCDC產品測試的工作,因想把公司老舊的Turbo C ATE站測試程式改良成視窗的UI介面,而開始鑽研BCB程式。 目前ATE測試站的設備約有:   chroma electric load 6300,chroma DC power supply 6206,6210系列,fluke45等,非常感謝大大提供的資訊,我將沿此方向著手,你所附的程式碼我將仔細研讀,可能需要一段時間。   祝我成功吧!!! Good Luck to you tooc!!
------
Auston Huang
ohsula
一般會員


發表:12
回覆:17
積分:5
註冊:2004-03-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-24 22:41:29 IP:61.229.xxx.xxx 未訂閱
你好,我查過公司的GPIB Card是ISA介面,雜牌不用驅動程式,所以應該不用查看是否for windows32 API Liberary吧? Auston Huang
------
Auston Huang
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-25 10:00:34 IP:61.218.xxx.xxx 未訂閱
引言: 你好,我查過公司的GPIB Card是ISA介面,雜牌不用驅動程式,所以應該不用查看是否for windows32 API Liberary吧? Auston Huang
1.您所謂的雜牌,還是有個品牌呀(我知道國內有個廠家也在做這類的介面).. 應該也會有for win32s的Library...除非您想自己用I/O慢慢搞... 2.為甚麼要for win32s的原因是Win2k/xp/2003控制I/O的方法跟DOS不同... Windows 9x也需要用C Builer inline ASM自己寫個I/O函式才能控制I/O 3.因此我建議,如果能找到該Gpib for winodws的Library會比較輕鬆一點
/*生活是一種藝術,用心生活才能享受生活*/
hornacek
一般會員


發表:29
回覆:76
積分:21
註冊:2004-02-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-03 11:38:03 IP:210.243.xxx.xxx 未訂閱
引言: (1)先確認您的GPIB API Library是否能在Win32s下Run,因為您沒說清楚您是用 HP-IB GPIB library還是NI Gpib Library,兩者都有for win32s的版本 1-1.NI-488.2 (Win32) Version 2.1 for Windows 2000/98/ME/XP, 這是最新的版本 下載:ftp://ftp.ni.com/support/gpib/ni488221/ni488221.exe NI-488.2 API User Manual: http://www.ni.com/pdf/manuals/370428a.pdf 1-2. HPIB....我就不太清楚了
想請教一下,GPIB不是通用的規格嗎?怎麼會有分成 HPIB及NI兩種GPIB Library,不知道這兩個Library有什麼分別嗎? 兩者可以通用嗎?感激!
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-08-03 16:55:46 IP:61.218.xxx.xxx 未訂閱
引言: 想請教一下,GPIB不是通用的規格嗎?怎麼會有分成 HPIB及NI兩種GPIB Library,不知道這兩個Library有什麼分別嗎? 兩者可以通用嗎?感激!
hornacek您好: 沒錯GPIB(IEEE488.x)是通用的規章與協定,但經由不同公司寫出來的Library當然有所不同 目前市面上有HP-IB. NI-GPIB(IEEE488.x NI-Visa)以及TekVisa三種...另外還有一堆不知名的 但底層對GPIB硬體控制的方法卻是相同的...:D
/*生活是一種藝術,用心生活享受生活*/
Andy97
一般會員


發表:9
回覆:18
積分:10
註冊:2002-08-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-08-05 19:41:26 IP:218.161.xxx.xxx 未訂閱
各位大大好, 可否推薦一款GPIB Card? GPIB Card是否有反應時間及Buffer等的要求? 請大大們指點,謝謝!
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-08-06 15:42:26 IP:61.218.xxx.xxx 未訂閱
引言: 各位大大好, 可否推薦一款GPIB Card? GPIB Card是否有反應時間及Buffer等的要求? 請大大們指點,謝謝!
Andy97您好: 1.關於GPIB的原理及使用相關問題請參考 http://140.121.200.23/VB%20CLASS/CLASS%2012%20GPIB%E4%BB%8B%E9%9D%A2.htm 2.建議您購買美商慧碁儀器股份有限公司的 http://digital.ni.com/worldwide/taiwan.nsf/webproduct/232CD77A2CADCECA86256C95002A17F4 PCI-GPIB http://sine.ni.com/apps/we/nioc.vp?cid=1233&lang=US 或 GPIB-USB-B http://sine.ni.com/apps/we/nioc.vp?cid=11397&lang=US 價格在台幣24000元左右(依匯率而波動).. 在台灣可向美商慧碁儀器股份有限公司台灣分公司購買 電話:02-2528-7227 傳真:(02) 2746-9784 Email: info.taiwan@ni.com
/*生活是一種藝術,用心生活享受生活*/
發表人 - axsoft 於 2004/08/06 15:49:57
Andy97
一般會員


發表:9
回覆:18
積分:10
註冊:2002-08-15

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-08-08 23:00:06 IP:61.231.xxx.xxx 未訂閱
axsoft 版主大大您好: 謝謝您的指點,我了解了。 有USB to GPIB還真是方更,不用拆電腦還可以跟Notebook共用。
pwchiang
一般會員


發表:0
回覆:1
積分:0
註冊:2005-11-02

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-11-02 19:22:05 IP:61.231.xxx.xxx 未訂閱
請問各位前輩, 我想要利用PCMCIA-GPIB來控制儀器,driver已經裝好 我只會寫C ,對GPIB語法完全不熟,我該如何開始? 在網路上找到一些pdf file,但不知哪一個才是自己該仔細看的 可否推薦一些連結? 謝謝
系統時間:2024-04-28 5:39:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!