Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.07.07;
Скачать: [xml.tar.bz2];

Вниз

Кто знает, почему при выгрузке ДИНАМИЧЕСКОГО МОССИВА в COM port,   Найти похожие ветки 

 
Лёша   (2003-04-25 16:36) [0]

в порт вместо данных прёт кача мусора?


 
MBo   (2003-04-25 16:39) [1]

код?


 
Digitman   (2003-04-25 16:40) [2]

порт-то здесь причем ? скорей всего, фактические параметры, подставляемые тобой в ф-цию "выгрузки" не соответствуют формальным по типу ... это достаточно распространенная ошибка при передаче в кач-ве факт.параметра дин.массива (та, где требуется адрес буфера)


 
Лёша   (2003-04-25 17:02) [3]

пример №1:
procedure TForm1.Button9Click(Sender: TObject);
var
a:array of byte;
Bytes:dword;
p:pointer;
begin
hComm:=CreateFile( PChar(Format("COM%1d", [1])),
GENERIC_READ or GENERIC_WRITE,
0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

SetLength(a,512);
FillChar(a, SizeOf(a), $00);
WriteFile(hComm, a, 512, Bytes, nil);


CloseHandle(hComm);
end;

пример №2:
procedure TForm1.Button9Click(Sender: TObject);
var
a:array of byte;
Bytes:dword;
p:pointer;
begin
hComm:=CreateFile( PChar(Format("COM%1d", [1])),
GENERIC_READ or GENERIC_WRITE,
0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

SetLength(a,512);
FillChar(a, SizeOf(a), $00);
p:= @a;
WriteFile(hComm, p, 512, Bytes, nil);


CloseHandle(hComm);
end;


в обоих случаях прет мусор, если пишу в порт статический массив то, нет проблем, подскажите пожалуйста в чем ошибка...


 
MBo   (2003-04-25 17:11) [4]

WriteFile(hComm, a[0], 512, Bytes, nil);


 
Fiend   (2003-04-25 17:11) [5]

всё уже сказали (Дигитмэн) надо адрес буфера давать
р^


 
Zz_   (2003-04-25 17:11) [6]

Почуствуй разницу (из windows.pas)

function WriteFile(hFile: THandle; const Buffer; nNumberOfBytesToWrite: DWORD;
var lpNumberOfBytesWritten: DWORD; lpOverlapped: POverlapped): BOOL; stdcall;

function WriteFileEx(hFile: THandle; lpBuffer: Pointer; nNumberOfBytesToWrite: DWORD;
const lpOverlapped: TOverlapped; lpCompletionRoutine: FARPROC): BOOL; stdcall;

Из WinApiHepl

BOOL WriteFile(

HANDLE hFile,
LPCVOID lpBuffer,file
DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberOfBytesWritten,
LPOVERLAPPED lpOverlapped
);

BOOL WriteFileEx(

HANDLE hFile,
LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite,
LPOVERLAPPED lpOverlapped,
LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);

уроды


 
MBo   (2003-04-25 17:12) [7]

и FillChar(a[0], Length(a)*SizeOf(byte), $00);


 
Лёша   (2003-04-25 18:06) [8]

ВСЕМ С П А С И Б О!
Особенная благодарность MBo.
Вроде сдвинулось с места!



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2003.07.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
7-20326
Лёша
2003-04-25 16:36
2003.07.07
Кто знает, почему при выгрузке ДИНАМИЧЕСКОГО МОССИВА в COM port,


3-19977
Леха
2003-06-12 22:50
2003.07.07
Ребята! Извините за глупый вопрос! Как в гриде в числовом поле за


14-20205
Barlok
2003-06-21 11:03
2003.07.07
Перевод в градусы синуса?


14-20305
Suntechnic
2003-06-18 17:31
2003.07.07
Оптимальный алгоритм преобразования в натуральное цело число...


3-19988
nv-vetal
2003-06-13 14:28
2003.07.07
dbExpress->MySQL.Как подключиться, и что для этого...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский