![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Com Port [D7, Win2k, WinXP]
pavel_guzhanov © (2004-07-19 11:38:00)Народ, подскажите, никак не могу понять, как надо правильно сделать... Программа посылает запрос в компорт, к которому подключено устройство. По запросу устройство должно выдавать, что у него находится на определенном входе (номер входа завистит от запроса). Делаю так:
varЗапрос в порт вроде уходит нормально, по крайней мере размер возвращает нормально, а вот с ответом из порта проблема: Массив Buffer пустой, т.е. 16 значений #0. Подскажите, что я делаю не так.
buf:array[0..3] of Char; //запрос к ком порту
Buffer:array[0..15] of Char; //ответ кромпорта
Command:String;// строка запроса
Total:Dword;
RecivedStr:String;
begin
Total:=0;
// Отправка запроса в порт
Counter:=Counter+1;
if Counter=(StrToInt(LinesTotal.Text)+1) then Counter:=1;
Command:='#02'+IntToStr(Counter-1);
StrPCopy(Buf, Command);
WriteFile(h, Buf, StrLen(Buf), Total, nil);
ReadFile(h, Buffer, 15, Total, nil);
// То, что пришло в компорт
RecivedStr:=String(Buffer);
.....
end;
pavel_guzhanov (2004-07-20 10:23:00) [1]Удалено модератором
Примечание: Модераторы к твоему мнению прислушались, только несовпадение по пункту кто умник и кого нельзя пускать в форум
Sky Knight (2004-07-20 04:28:00) [2]Насчет COM-порта. Я в свое время юзал библиотеку компонентов, она называется СPort. Ну ОООЧЕНЬ удобная, должен сказать. Полностью обеспечивает работу с COM-портами, имеет даже индикаторы (вроде тех, что на модеме), отображающие состояние порта. И - все на высоком уровне, не надо разбираться со всякими файлами, буферами и т.д. Рекомендую.
Sky Knight
AndrewVolkov (2004-07-19 22:51:00) [3]to jack128
смотря на код, мне кажется, человек только пытается разобраться что к чему и особо не въезжает в происходящее. Код помойму взят просто из какого-то примера, отсюда и куча непоняток. Основы нет от которой отталкиваться, чтобы понять намеки.
jack128 (2004-07-19 21:12:00) [4]
> ну лениво ему отвечать - он и не обязан.
Ну не знаю. По моему RME сделал намеки толщиной с ногу слона. Что б не обратить на них внимания - это надо очень постараться
AndrewVolkov (2004-07-19 20:12:00) [5]Ругаться это ты зря
pavel_guzhanov
ну лениво ему отвечать - он и не обязан.
Кстати Ком порт не такой и быстрый, плюс ко всему устройство с другой стороны еще и ответить должно, а у тебя прога записала данные в порт и сразу считала, а там скорее всего еще пусто.
На этом сайте в разделе статьи помойму была статейка работы с ком портом. Там чтение запускалось в отдельном потоке - почитай. Из кома лучше в отдельном потоке читать. Лично мне так удобнее...
Анонимщик (2004-07-19 13:25:00) [6]pavel_guzhanov
Не ругайся. Посмотри, какой результат функция возвращает, т.е. сколько байт прочитано. Видимо, 0 (нисколько). Поэтому и нулям в массиве удивляться нечего.
Reindeer Moss Eater (2004-07-19 12:35:00) [7]"Наберут детей в армию"
Reindeer Moss Eater (2004-07-19 12:34:00) [8]Ой.
Щас заплачу от обиды.
pavel_guzhanov (2004-07-19 12:34:00) [9]Удалено модератором
Примечание: 7 дней RO за мат
Reindeer Moss Eater (2004-07-19 12:33:00) [10]Ты вообще анализируешь результаты чтения или нет?
Reindeer Moss Eater (2004-07-19 12:33:00) [11]А мне нужно что бы был мир во всем мире.
И что?
pavel_guzhanov (2004-07-19 12:28:00) [12]это я понимаю, только мне нужно не количество байт, а строка, которая пришла в порт
Reindeer Moss Eater (2004-07-19 12:20:00) [13]Если она вернула True, то а предпоследнем параметре лежит прочитанное функцией количество байт.
pavel_guzhanov (2004-07-19 12:17:00) [14]хорошо, понятно, функция вернула true, но в вопрсе, как мне прочитать то, что пришло в порт, ясности не добавилось
Reindeer Moss Eater (2004-07-19 12:12:00) [15]сделал так:
И что. ?
Syntax
BOOLReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD NumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
pavel_guzhanov (2004-07-19 12:06:00) [16]сделал так:
RecivedStr:=ReadFile(h, Buffer, 15, Total, nil);
то же самое, RecivedStr=''
Reindeer Moss Eater (2004-07-19 12:03:00) [17]А то, что она результат возвращает.
pavel_guzhanov (2004-07-19 12:00:00) [18]и что?
Reindeer Moss Eater (2004-07-19 11:55:00) [19]ReadFile - функция