• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Usb-gpib 2.0 в Rad Studio 2009 (кто сталкивался хелп плз)

  • Автор темы SOKAR
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

SOKAR

вообщем ситуация следующая:
работал в delphi 6-7, там все было в порядке, щас перехожу на рад студию, тот же код не работает

связываюсь через контроллер USB-GPIB с приборами посредством функций последнего уровня writegEz и readgЕz

Функция writegEz
int writegEz(char* buffer,long buffsize, char* flag,int delay,int address);

Функция readgEz
int readgEz(int format, char* buff, long buffsize, long* number_read_bytes, char* flag, int* end_of_message,int delay,int address);

сам код:

Код:
if (writegEz('*IDN?',100,@flag,0,1)=1) then
begin
if flag=#0 then
begin
readgEz(0,@buff,200,@number_read_by tes,@flag,@end_of_message,0,1);
end
else
begin
showmessage('ошибка таймаута, проверьте ...');
exit;
end;
end
else
begin
showmessage('нет связи с USB-GPIB-2.0');
exit;
end;
причем под седьмими дельфи всё работает отлично, а в рад студиу на прибор ток первый символ приходит
 
T

Titan

SOKAR
Нужно учитывать , что в новых дельфях там уже много повязано с поддержкой Юникода. С этим могут быть проблемы.
То есть например, если раньше просто писали PChar, то теперь, чтобы старые функции работали надо в ряде случаев использовать PAnsiChar.
Поройте в этом направлении, возможно в этом дело.
 
S

SOKAR

спсб , помогло

немного еще переписал, заработало

Код:
 flag:char;
buff: array[1..100] of ansiChar;
number_read_bytes:longint;
end_of_message:integer;
command:pAnsichar;


command:=pANSIchar('*IDN?');
flag:=#1;
while flag<>#0 do
tre:=writegEz(command,100,@flag,0,1);
if (tre=1)then
begin
if flag=#0 then
begin
readgEz(0,@buff,200,@number_read_bytes,@flag,@end_of_message,0,1);
form1.RichEdit1.Lines.Add(copy(buff,1,number_read_bytes));
end
else
begin
showmessage('ошибка таймаута, проверьте генератор');
exit;
end;
end
else
begin
showmessage('нет связи с USB-GPIB-2.0');
exit;
end;

мб кому нить еще пригодится :D
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!