Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.29;
Скачать: CL | DM;

Вниз

Com Port   Найти похожие ветки 

 
pavel_guzhanov   (2004-07-19 11:38) [0]

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


 
Reindeer Moss Eater ©   (2004-07-19 11:55) [1]

ReadFile - функция


 
pavel_guzhanov   (2004-07-19 12:00) [2]

и что?


 
Reindeer Moss Eater ©   (2004-07-19 12:03) [3]

А то, что она результат возвращает.


 
pavel_guzhanov   (2004-07-19 12:06) [4]

сделал так:
RecivedStr:=ReadFile(h, Buffer, 15, Total, nil);
то же самое, RecivedStr=""


 
Reindeer Moss Eater ©   (2004-07-19 12:12) [5]

сделал так:

И что. ?

Syntax

BOOL ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD NumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)


 
pavel_guzhanov   (2004-07-19 12:17) [6]

хорошо, понятно, функция вернула true, но в вопрсе, как мне прочитать то, что пришло в порт, ясности не добавилось


 
Reindeer Moss Eater ©   (2004-07-19 12:20) [7]

Если она вернула True, то а предпоследнем параметре лежит прочитанное функцией количество байт.


 
pavel_guzhanov   (2004-07-19 12:28) [8]

это я понимаю, только мне нужно не количество байт, а строка, которая пришла в порт


 
Reindeer Moss Eater ©   (2004-07-19 12:33) [9]

А мне нужно что бы был мир во всем мире.
И что?


 
Reindeer Moss Eater ©   (2004-07-19 12:33) [10]

Ты вообще анализируешь результаты чтения или нет?


 
pavel_guzhanov   (2004-07-19 12:34) [11]

Удалено модератором
Примечание: 7 дней RO за мат


 
Reindeer Moss Eater ©   (2004-07-19 12:34) [12]

Ой.
Щас заплачу от обиды.


 
Reindeer Moss Eater ©   (2004-07-19 12:35) [13]

"Наберут детей в армию"


 
Анонимщик ©   (2004-07-19 13:25) [14]

pavel_guzhanov

Не ругайся. Посмотри, какой результат функция возвращает, т.е. сколько байт прочитано. Видимо, 0 (нисколько). Поэтому и нулям в массиве удивляться нечего.


 
AndrewVolkov ©   (2004-07-19 20:12) [15]

Ругаться это ты зря
 pavel_guzhanov
ну лениво ему отвечать - он и не обязан.

Кстати Ком порт не такой и быстрый, плюс ко всему устройство с другой стороны еще и ответить должно, а у тебя прога записала данные в порт и сразу считала, а там скорее всего еще пусто.

На этом сайте в разделе статьи помойму была статейка работы с ком портом. Там чтение запускалось в отдельном потоке - почитай. Из кома лучше в отдельном потоке читать. Лично мне так удобнее...


 
jack128 ©   (2004-07-19 21:12) [16]


> ну лениво ему отвечать - он и не обязан.
Ну не знаю. По моему RME сделал намеки толщиной с ногу слона. Что б не обратить на них внимания - это надо очень постараться


 
AndrewVolkov ©   (2004-07-19 22:51) [17]

to jack128
смотря на код, мне кажется, человек только пытается разобраться что к чему и особо не въезжает в происходящее. Код помойму взят просто из какого-то примера, отсюда и куча непоняток. Основы нет от которой отталкиваться, чтобы понять намеки.


 
Sky Knight ©   (2004-07-20 04:28) [18]

Насчет COM-порта. Я в свое время юзал библиотеку компонентов, она называется СPort. Ну ОООЧЕНЬ удобная, должен сказать. Полностью обеспечивает работу с COM-портами, имеет даже индикаторы (вроде тех, что на модеме), отображающие состояние порта. И - все на высоком уровне, не надо разбираться со всякими файлами, буферами и т.д. Рекомендую.

Sky Knight


 
pavel_guzhanov   (2004-07-20 10:23) [19]

Удалено модератором
Примечание: Модераторы к твоему мнению прислушались, только несовпадение по пункту кто умник и кого нельзя пускать в форум



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

Текущий архив: 2004.08.29;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.046 c
1-1092121273
ALS
2004-08-10 11:01
2004.08.29
TListImage и разрешение экрана


1-1092414954
Eugene1501
2004-08-13 20:35
2004.08.29
Access violation Как отловить?


4-1089989762
Dima_Delphi
2004-07-16 18:56
2004.08.29
Требуется нормальная стаюильная работа с COM портом под NT.


14-1092150432
ИМХО
2004-08-10 19:07
2004.08.29
BrainBench: кому жаловаться?


14-1091985697
AlexG
2004-08-08 21:21
2004.08.29
Не разберусь с ActiveX Control