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

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

Проблемма при открытии СОМ порта посредством функции CreateFile


Страницы:   1 2

Rule ©   (2005-09-29 14:59:00) 

Вот такая вот аномали у меня происходит, все прекрастно работает, когда открывают СОМ-порт но прихожу утром на работу и картина зачастую бывает интересная ... теперь по порядку ...

во кусок кода, которым я открываю СОМ-порт, вернее инициализирую хэндл к нему:

procedure TCustomComPort.CreateHandle;
begin
 if FHandle = INVALID_HANDLE_VALUE then CloseHandle(FHandle);
 FHandle := CreateFile(
   PChar('\\.\' + FPort),
   GENERIC_READ or GENERIC_WRITE,
   0,
   nil,
   OPEN_EXISTING,
   FILE_FLAG_OVERLAPPED,
   0);

 if FHandle = INVALID_HANDLE_VALUE then
   raise EComPort.Create(CError_OpenFailed, GetLastError);
end;

дык вот под утро начинает кричать что "не могу открыть компорт, ошибка виндовз 5", причем перезагрузка не помогает, а когда беру вытыкаю свое терминальное устройство с компорта, вставляю туда штрихкод ридер, просто читаю любой штрихкод ридером, причем на компьютере не запуская ни одной программы, тоесть читать данные некому ...
вот после этого включаю опять свое терминальное устройство в компорт и хэндл без проблем создается и все работате ....

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


simpson   (2005-09-29 15:54:00) [21]

Конечно, есть. Сначала нужно определить, какое приложение занимает этот порт. Вполне возможно, что и твое собственное.

Во-вторых, ты бы задачу описал, что ли. Ну и способ ее решения, реализуемый в данный момент тобой.

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

ЗЫ: Кстати, тут есть чудесный тэг для его (кода) оформления.


Rule   (2005-09-29 15:48:00) [22]

simpson ©   (29.09.05 15:43) [5]
а что делать, если другого выхода нет, а если есть, то подскажи ...


simpson   (2005-09-29 15:43:00) [23]

> ка получить хэндл открытого СОМ порта, чтоб его зарубать

Очередная проктологическая операция на гландах?


Rule   (2005-09-29 15:28:00) [24]

тогда возникает логический вопрос, как освободить СОМ - порт ... нашел такое вот

передать Handle открытого порта дочернему процессу, для чего нужно его сдублировать (
DuplicateHandle
) и в
CreateProcess
указать нужные флаги - о наследовании хэндлов. Способ передачи произвольный - хоть через Shared Memory, хоть через командную строку.

но это ж не то чуть чуть ... ка получить хэндл открытого СОМ порта, чтоб его зарубать ???


Rule   (2005-09-29 15:11:00) [25]

Reindeer Moss Eater ©   (29.09.05 15:04) [1]

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


Rule   (2005-09-29 15:09:00) [26]

Reindeer Moss Eater ©   (29.09.05 15:04) [1]
да я понимаю, но если я беру допустим штрихкодридер и хипертерминал, то он работает ... чего для него не занят а для меня занят ...

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


Reindeer Moss Eater   (2005-09-29 15:04:00) [27]

5L        ERROR_ACCESS_DENIED

Твой порт утром кем-то занят.


Страницы:   1 2

Наверх

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