![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Чтение из сом порта [D7, XP]
F@T@L_Err0r © (2007-11-01 10:28:00)Добрый день.У меня такой вопрос: Пытаюсь читать из сом порта
ReadFile(hPort,Buf,SizeOf(Buf),s,nil);
и прога виснет намертво.Может я чего не учел?Порт открываю нормально CreateFile(..). Заполняю TDCB.
Германн (2007-11-02 00:48:00) [1]
> F@T@L_Err0r © (01.11.07 10:55) [9]
>
> > В третьих с таким подходом как у тебя правильнее и проще
> взять какой-нибудь готовый компонент компорта.
>
> А например какие компоненты можно использовать???
>
Более полумесяца Сергей М. тебе уже предлагал очень хороший вариант в посте [15] вот в этой твоей же ветке:
http://delphimaster.ru/cgi-bin/forum.pl?id=1192513567&n=18
Anatoly Podgoretsky (2007-11-01 12:36:00) [2]
> С таким подходом правильнее и проще взять метлу.
Предложение правильное, но запождалое.
Anatoly Podgoretsky (2007-11-01 12:35:00) [3]
> ss.ReadIntervalTimeout := 5000;
> ss.ReadTotalTimeoutMultiplier := 100000;
> SetCommTimeouts(hPort,ss);
может ты не дождался, поскольку у тебя таймут равен 5000*10000*6 миллисекунд, ты ждал 3 000 000 секунд?
vegarulez (2007-11-01 11:09:00) [4]http://sourceforge.net/projects/comport/
http://valery-us4leh.narod.ru/main.html
F@T@L_Err0r (2007-11-01 10:55:00) [5]> В третьих с таким подходом как у тебя правильнее и проще взять какой-нибудь готовый компонент компорта.
А например какие компоненты можно использовать???
Reindeer Moss Eater (2007-11-01 10:55:00) [6]например любые
Маша Шрайбер (2007-11-01 10:52:00) [7]С таким подходом правильнее и проще взять метлу.
Reindeer Moss Eater (2007-11-01 10:50:00) [8]Во первых там полей гораздо больше.
Во вторых правильно установленные таймауты это еще далеко не все.
В третьих с таким подходом как у тебя правильнее и проще взять какой-нибудь готовый компонент компорта.
F@T@L_Err0r (2007-11-01 10:47:00) [9]var ss:TCommTimeouts;
begin
ss.ReadIntervalTimeout := 5000;
ss.ReadTotalTimeoutMultiplier := 100000;
SetCommTimeouts(hPort,ss);
Все равно ждет бесконечно...
Reindeer Moss Eater (2007-11-01 10:37:00) [10]Как ни странно SetCommTimeouts
Reindeer Moss Eater (2007-11-01 10:35:00) [11]Прога не виснет, она выполнила синхронный вызов и ждет данных
F@T@L_Err0r (2007-11-01 10:35:00) [12]А как установить таймаут для ожидания?
F@T@L_Err0r (2007-11-01 10:32:00) [13]var hPort:Thandle;
Buf:array[0..5] of integer;
s:cardinal;
Darvin (2007-11-01 10:31:00) [14]код в студию.
>ReadFile(hPort,Buf,SizeOf(Buf),s,nil);
что такое Buf, s, hPort?