• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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