![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
КТо нибудь знает как мне попроще вытащить один бит из ком порта [D7, WinXP]
Рафик © (2006-03-30 15:07:00)Я уже запарился искать варианты ничего не получается!!!
Рафик (2006-03-30 16:18:00) [1]Удалено модератором
Примечание: Ваша личная переписка уже надоела
Kolan (2006-03-30 15:56:00) [2]Удалено модератором
Сергей М. (2006-03-30 15:50:00) [3]
> В справке этого нет
Есть.
Рафик (2006-03-30 15:41:00) [4]Вот ща прислали мне по почте
function TAnisochronousComm.ReadByte(var B: Byte; TimeOut: Cardinal): Boolean;
var
IsTimeOut: Boolean;
ReadBytes: Cardinal;
Arr: array[1..1] of Byte;
begin
IsTimeOut := False;
ReadBytes := Read(Arr, 1, TimeOut, IsTimeOut);
if (IsTimeOut) or (ReadBytes = 0) then
begin
B := 0;
Result := False;
end
else
begin
B := Arr[1];
Result := True;
end;
end;
Как мне вызвать эту функцию?
Kolan (2006-03-30 15:40:00) [5]Не в той справке ищешь. Ищи в Widows SDK. Или на сайте MSDN
Рафик (2006-03-30 15:32:00) [6]В справке этого нет, отладчик не помогает что я там вижу что она циклиться!
Сергей М. (2006-03-30 15:23:00) [7]
> скажу точно в чем загвоздка
Загвоздка у тебя в одном - в неумении (или нежелании) пользоваться встроенным в Делфи отладчиком и в неумении (или нежелании) читать справку.
Рафик (2006-03-30 15:20:00) [8]Да не получается у меня с ним тоже но ща попробую скажу точно в чем загвоздка
Kolan (2006-03-30 15:17:00) [9]Почту глянь. Там модуль написаный мной.... Можешь прям его и юзать :).
Те как-то так:
function TAnisochronousComm.Read(var Buffer: array of Byte;
NumberOfBytesToRead: Cardinal; TimeOut: Cardinal;
var IsTimeOutExpire: Boolean): Cardinal;
begin
Result := 0;
IsTimeOutExpire := False;
if FPortHandle <> INVALID_HANDLE_VALUE then
begin
TimeOut := TimeOut * NumberOfBytesToRead;
ReadFile(FPortHandle, Buffer, NumberOfBytesToRead, Cardinal(Result),
@FOverlappedRead);
if WaitForSingleObject(FOverlappedRead.hEvent, TimeOut) = WAIT_OBJECT_0 then
GetOverlappedResult(FPortHandle, FOverlappedRead, Cardinal(Result), False)
else
IsTimeOutExpire := True;
end;
end;
Сергей М. (2006-03-30 15:11:00) [10]
> насчет ReadFile, поподробнее можно узнать?
см. стандартную справку и MSDN.
Рафик (2006-03-30 15:11:00) [11]И что во втором, пробовал я все равно не читается!!!
Рафик (2006-03-30 15:10:00) [12]А насчет ReadFile, поподробнее можно узнать?
Сергей М. (2006-03-30 15:10:00) [13]
> извините перепутал байт
см. [2]
Рафик (2006-03-30 15:09:00) [14]извините перепутал байт
Kolan (2006-03-30 15:08:00) [15]ReadFile . Но вот бит.... Это врядли
Сергей М. (2006-03-30 15:07:00) [16]Никак.