现在的位置: 首页 > 综合 > 正文

GPIB_Code

2018年02月01日 ⁄ 综合 ⁄ 共 3443字 ⁄ 字号 评论关闭

Avoid unnecessary use of *RST.
Putting Multiple Commands on the Same Line ;
*OPC (operation complete) sets bit 0 in the standard event status register when
all operations are complete.
/*Set the analyzer to single sweep mode*/
viPrintf(viESA,"INIT:CONT 0\n"); //once  no need too much *wai...
/*Trigger a sweep, wait for completion*/
viPrintf(viESA,"INIT:IMM;*WAI\n");
viPrintf(viESA,"CALC:MARK:MAX\n");

/*Trigger a sweep, wait for completion*/
viPrintf(viESA,"INIT:IMM;*WAI\n");
/*Query and read the marker amplitude*/
viQueryf(viESA,"CALC:MARK:Y?\n","%lf",&dMarkerAmplitude);

/*Query for operation complete*/
viQueryf(viESA, "*OPC?\n", "%d", &lOpc);
printf ("\n\n\t First Self Alignment is Done \n\n");
if (!lOpc)
{
printf("Program Abort! error ocurred: last command was not completed!\n");
exit(0);
}

///////////////////////
/*Set the analyzer to single sweep mode */
viPrintf(viESA,"INIT:CONT 0 \n");
/*Trigger a sweep and wait for sweep to complete */
viPrintf(viESA,"INIT:IMM;*WAI\n");
/* Specify units in dBm*/
viPrintf(viESA,"UNIT:POW DBM \n");
/*Set analyzer trace data format to ASCII Format*/
viPrintf(viESA,"FORM:DATA ASC \n");
/*Trigger a sweep and wait for sweep to complete */
viPrintf(viESA,"INIT:IMM;*WAI\n");
/*Query the Trace Data using ASCII Format */
viQueryf(viESA,"%s\n", "%#t","TRAC:DATA? TRACE1" , &iNum , cResult);
/*Remove the "," from the ASCII trace data for analyzing data*/
cToken = strtok(cResult,",");
/*Save trace data to an ASCII to a file, by removing the "," token*/
fTraceFile=fopen("C:\\temp\\ReadAscGpib.txt","w");
fprintf(fTraceFile,"ReadAscGpib.exe Output\nAgilent Technologies 2000\n\n");
fprintf(fTraceFile,"\tAmplitude of point[%d] = %s dBm\n",lCount+1,cToken);
while (cToken != NULL)
{
lCount++;
cToken =strtok(NULL,",");
if (lCount != iSwpPnts)
fprintf(fTraceFile,"\tAmplitude of point[%d] = %s
dBm\n",lCount+1,cToken);
}
fprintf(fTraceFile,"\nThe Total trace data points of the spectrum are :[%d]
\n\n",lCount);
fclose(fTraceFile);
/*Close the session*/
viClose(viESA);
viClose(defaultRM);
///////////////////////

/*Set analyzer trace data format to 32-bit Real */
viPrintf(viESA,"FORM:DATA REAL,32 \n"
/*Calculate size of trace record. This will be sum of HeaderBytes, NumberBytes*/
/*(the actual data bytes) and the "/n" terminator*
正则表达式 采样匹配
GPIB?*INSTR 匹配GPIB0::2::INSTR、GPIB1::1::1::INSTR和GPIB-VXI1::8::INSTR。
GPIB[0-9]*::?*INSTR 匹配GPIB0::2::INSTR、GPIB1::1::1::INSTR,不匹配GPIB-VXI1::8::INSTR。
GPIB[^0]::?*INSTR 匹配GPIB1::1::1::INSTR,但不匹配GPIB0::2::INSTR或 GPIB12::8::INSTR。
VXI?*INSTR 匹配VXI0::1::INSTR,但不匹配GPIB-VXI0::1::INSTR。
GPIB-VXI?*INSTR 匹配GPIB-VXI0::1::INSTR,但不匹配VXI0::1::INSTR。
?*VXI[0-9]*::?*INSTR 匹配VXI0::1::INSTR以及GPIB-VXI0::1::INSTR。
ASRL[0-9]*::?*INSTR 匹配ASRL1::INSTR,但不匹配VXI0::5::INSTR。
ASRL1+::INSTR 匹配ASRL1::INSTR和ASRL11::INSTR,但不匹配ASRL2::INSTR。
(GPIB|VXI)?*INSTR 匹配GPIB1::5::INSTR和VXI0::3::INSTR,但不匹配ASRL2::INSTR。
(GPIB0|VXI0)::1::INSTR 匹配GPIB0::1::INSTR和VXI0::1::INSTR。
?*INSTR 匹配所有INSTR(设备)资源。
?*VXI[0-9]*::?*MEMACC 匹配VXI0::MEMACC和GPIB-VXI1::MEMACC。
VXI0::?* 匹配VXI0::1::INSTR、VXI0::2::INSTR和VXI0::MEMACC。
?* (默认)匹配所有资源。
visa://主机名/?* 在远程系统上的资源。主机名可以是IP地址(点表示法)或网络机器名。远程系统无需为已配置的远程系统。
/?* 匹配本地机器上的所有资源。不查询已配置的远程系统。
visa:/ASRL?*INSTR 匹配本地机器上的所有ASRL资源并以URL格式返回(例如,visa:/ASRL1::INSTR)。

使用VISA查找资源来获得设备句柄,并发送IDN命令,得到仪器名

、 总线电缆 包括16根信号线和9根地线。16根信号线中,8根为数据线,5根
为接口管理线,3根为握手线。(即数据字节传送控制线)。
2、 采用位并行、字节串行,三线连锁握手技术,双向异步传送方式。数据格式
采用7位ASCII码,经8根数据总线传送。三线连锁握手技术是为确保系统内速率不同的各个装置之间可靠地进行双向异步传送数据的一种专门技术。
3、数据传送速率为:当总线电缆总长在20m以内时,若采用集电极开路式发送器,则最高工作速率为250kbytes/s,若采用三态门发送器,则一般速率为500 kbytes/s,最高可达1M bytes/s。
4、总线电缆传送途径总长度不超过20m。若采用特殊的发送器和接收器,则距离可扩展至500m,系统中互连的装置台数不超过15台。
5、地址容量为:在一般情况下,讲地址和听地址用一个字节表示,称为单字节地址,这时总共可有31个讲地址和31个听地址。若不够用时也可用双字节表示地址,则可有961个讲地址和961个听地址。
GPIB主要是为台式测量仪器(或装置)组成自动测量系统而设计的,是一种小巧而价廉的接口系统。

P128

【上篇】
【下篇】

抱歉!评论已关闭.