Instrument Control (GPIB, Serial, VISA, IVI)

cancel
Showing results for 
Search instead for 
Did you mean: 

viwrite与delphi调用问题

环境:visa4.0库,delphi7。

 

问题:初始化,单步调用viwrite操作设备都正常。运用定时器或循环调用viwrite时,会丢失程序form的handle而导致报错。

 

代码如下:

buff_size:= 1024;

 

procedure TForm1.Button2Click(Sender: TObject);
var
  istr: string;
  retcount: integer;
  vistate: integer;
begin
  retcount := 0;
  istr := ‘*IDN?’;

  vistate := viwrite(vi, istr, length(istr), retcount);
  if 0 <> vistate then begin
    showmessage('viwrite wrong!');
    exit;
  end;

  buffer := '';
  setlength(buffer, buff_size);
  vistate := viread(vi, buffer, buff_size, retcount);
  if 0 <> vistate then begin
    showmessage('viread wrong!');
    exit;
  end;

  memo3.Lines.Add(buffer);
end;

 

 

场景复现:

1在编译器不勾选optimization时,界面点击button2按钮,以上函数正常执行。

2在编译器选项中勾选optimization,则button2click函数调用viwrite失败,并报错。

3编译器不勾选optimization时,创建定时器timer函数或button3click函数调用button2.click()函数后,同样报错,与步骤2报错相同。

 

 

同样程序流程,运用libview8.2写没有任何问题。是否visa32.dll与delphi7编译器存在不兼容情况?请问NI工程师怎么回事?

截图见下:

 

0 Kudos
Message 1 of 1
(3,126 Views)