Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2011, 11:52   #1
Ghennadiy
Форумчанин
 
Регистрация: 21.08.2009
Сообщений: 153
Сообщение Вызвать функцию в таймере

Код:
Function ReadTEXT(BytesRead : dWord; timeout: cardinal = 500) : string;
как ее привильно выполнить?
Ghennadiy вне форума Ответить с цитированием
Старый 04.06.2011, 12:43   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Просто в OnTimer допиши:
Код:
var
  s:string;
begin
s:=readTEXT(aMySomeDATA);

//Что-то делаем
end;
все зависит от того что делает оная функция.


Если это Строковой поток, то:
Код:
var
  SS:TStringStream;
  Buff:array[0..255] of Char; //Буффер для чтения
  sReturn:string;
begin
  ss:TStringStream.Create('');
//вносим кол-во прочитанных байт
  sReturn:=ReadTEXT(ss.Read(Buff,Length(buff)),500);
  //что-то делаем
  ss.free;
end;

Последний раз редактировалось Человек_Борща; 04.06.2011 в 12:47.
Человек_Борща вне форума Ответить с цитированием
Старый 05.06.2011, 13:07   #3
Ghennadiy
Форумчанин
 
Регистрация: 21.08.2009
Сообщений: 153
Сообщение

вот сама функция. нужно вывести в label.caption прочитанные данные, если это сделать потоком будет совсем круто
Спасибо за help!
Код:
Function USBReadTEXT(BytesRead : dWord; timeout: cardinal = 500) : string;
var
d: array[0..10000] of byte; {Readed Data}
s, buffer: string;
i, Tmp: Integer;
Ovr : TOverlapped;
count :cardinal; {Count = How mutch Readed Bytes}
begin
Result := '';
count:=0;
Fillchar( d, sizeof(d), 0 );
FillChar(Ovr, SizeOf(TOverlapped), 0);
Ovr.hEvent := CreateEvent(nil, true, FALSE, nil);
if not ReadFile(USBPORT, d, BytesRead, count, @ovr) then
if GetLastError=Error_IO_Pending then
if WaitForSingleObject(ovr.hEvent, timeout) = WAIT_OBJECT_0 then
GetOverlappedResult(USBPORT, ovr, count, false)
else CancelIo(USBPORT);
CloseHandle(Ovr.hEvent);
s := '';
for i := 0 to count-1 do
begin
Tmp:=ord(d[i]);
s := s + Char(Tmp);
end;
{Convert to String Text}
s := strtohex(s);
buffer:='';
for i:=1 to length(s) do
begin
if Odd(i) then
begin
buffer := '';
buffer := hextostr(s[i] + s[i+1]);
buffer := NurBestimmteZeichen(buffer,['0'..'9','a'..'z','A'..'Z','.'..':',' '..'?']);
result := result+buffer;
end;
end;
end;
Ghennadiy вне форума Ответить с цитированием
Старый 06.06.2011, 18:40   #4
Ghennadiy
Форумчанин
 
Регистрация: 21.08.2009
Сообщений: 153
По умолчанию

up
не понимаю как ее врубить эту функцию, чесно
Ghennadiy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается вызвать функцию! Ce4kok Общие вопросы Delphi 5 25.05.2011 22:27
Как вызвать функцию из функции ? PheonixS JavaScript, Ajax 3 16.12.2010 05:35
Не могу вызвать функцию (( NewKoder Общие вопросы C/C++ 4 11.12.2009 17:26
Вызвать функцию ассемблера из С++ Dima88 Помощь студентам 3 11.12.2009 00:54
Как вызвать функцию? blackstersl Общие вопросы Delphi 10 07.06.2009 19:22