![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
WriteFile to Hid(USB) [D6, WinXP]
que © (2006-04-11 19:06:00)Нужен глаз специалиста.
У меня почемуто функция WriteFile бездействует.
Подскажите почему.
У меня такое ощущение что я напутал указателями, т.е не корректно спроектировал буфер обмена.
В хелпе похожих примеров не нашел.
Var adrmas:Pbytearray; OutputReport : Array [0..255] of Byte; k:byte;
{receive HidHandle of output report}
adrmas := (@OutputReport[0]) ;
GetMem(adrmas, Capabilities.OutputReportByteLength) ;
for k:=0 to 12 do begin
if (StringGrid1.Cells[k+1,0]<>'') then
begin
OutputReport[k] := strtoint(StringGrid1.Cells[k+1,0]) ;
end else begin
label10.Caption:='cells is clear';
end;
end;
WriteFile(HidHandle, adrmas^ , Capabilities.OutputReportByteLength , Byteswrite, nil);
if WriteFile(HidHandle, adrmas^ Capabilities.OutputReportByteLength, Byteswrite, nil)
then label10.Caption:='success!'
else
label10.caption:='fail';
FreeMem(adrmas);
HidD_FreePreparsedData(PreparsedData);
CloseHandle(HidHandle);
End;
que (2006-04-12 17:39:00) [1]Попробовал также без массива, на основе вышеизложенного примера, к сожалению ситуация таже.
var adrmas,dopvar:Pbyte;
adrmas := allocmem(Capabilities.OutputReportByteLength);
dopvar := adrmas ;
for k:=0 to 12 do begin
dopvar^:= k;
inc(dopvar) ;
end;
WriteFile(HidHandle, adrmas^ , Capabilities.OutputReportByteLength , Byteswrite, nil);
В итоге Byteswrite 0, т.е ничего не передано.
Чета застрял..
n0name (2006-04-12 12:03:00) [2]Когда ты пишешь GetMem(addr, size), то выделяется кусок памяти размера size, а в addr заносится указатель на этот кусок.
В коде ты нигде adrmas не используешь, зачит в файл ты ничего не записываешь.
que (2006-04-12 06:58:00) [3]Т.е, текст похож на правду, тока можно без памяти?
n0name (2006-04-12 03:08:00) [4]
> А как же тогда allocated memory?
А зачем?
У тебя же adrmas указывает на массив.
que (2006-04-11 22:12:00) [5]А как же тогда allocated memory?
n0name (2006-04-11 20:12:00) [6]
> GetMem(adrmas, Capabilities.OutputReportByteLength) ;
Зря.