Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Com Port [D7, Win2k, WinXP]


pavel_guzhanov ©   (2004-07-19 11:38:00) 

Народ, подскажите, никак не могу понять, как надо правильно сделать... Программа посылает запрос в компорт, к которому подключено устройство. По запросу устройство должно выдавать, что у него находится на определенном входе (номер входа завистит от запроса). Делаю так:
var
   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;
Запрос в порт вроде уходит нормально, по крайней мере размер возвращает нормально, а вот с ответом из порта проблема: Массив Buffer пустой, т.е. 16 значений #0. Подскажите, что я делаю не так.


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 - функция


Наверх

Титульная страница Поиск, карта сайта Написать письмо