-
Собственно такая проблема:
есть ноут без ком-портов. Использую переходник USB-COM - все отлично работает. Подцепил между ноутом и переходником USB-COM USB-хаб, чтоб несколько устройств можно было одновременно подключить. Программа виснет на открытии ком-порта
hPort := CreateFile(PChar(Port), GENERIC_READ + GENERIC_WRITE,
0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
Поробовал другую программу - работает. В чем может быть причина?
-
В каком потоке происходят эти чудеса ?
-
В основном.
Причем пытался Дельфей отловить при пошаговом исполнении - все нормально проходит, ничего не виснет.
-
hPort := CreateFile(..);
Win32Check(hPort <> INVALID_HANDLE_VALUE);
Сообщение видишь ?
-
Блин! Нифига не понимаю! Никакого сообщения нет. Иногда это проходит, а иногда виснет. Закономерности не понял. Убираю USB-хаб - все нормально. Однако пробую родную программу упарвления - работает. Выходит у меня где-то есть какой то не тот параметр...
-
> Однако пробую родную программу упарвления - работает. Выходит
> у меня где-то есть какой то не тот параметр...
В HyperTerminal'е порт открывается? Без проблем?
-
> Alex_C (09.12.08 22:49) [4]
>
> Блин! Нифига не понимаю! Никакого сообщения нет. Иногда
> это проходит, а иногда виснет. Закономерности не понял.
> Убираю USB-хаб - все нормально. Однако пробую родную программу
> упарвления - работает. Выходит у меня где-то есть какой
> то не тот параметр...
>
Задержки, имхо. Родная программа их учитывает, твоя - нет.
-
> Никакого сообщения нет
Значит эта строчка ни причем.
А на основании чего ты вообще сделал умозаключение, что вис происходит именно на этой строчке ?
Какие-то отладочные рантайм-сообщения выводил до и после вызова CreateFile или что ?
-
Сегодня разбирался далее. Разобрался, но легче от этого не стало :)
1. Виснет точно на CreateFile - до и после этого оператора ставил MessageBox - тот, что после не появлялся. Плюс окружал CreateFile try...except - на except тоже MessageBox не появлялось.
2. Виснет не постояннно, то пару раз нормально, то пару раз зависает.
3. Замечено следущее: если в программе ОТКРЫВАЕШЬ ком- порт, виснет не намертво, а секунд на 30-50, затем идет дальше и нормально работает. А если в программе пытаешься ПЕРЕОТКРЫТЬ порт (CloseHandle - CreateFile) - вот тогда виснат уже насовсем. Пробовал ставить Sleep(2000) перед CreateFile - не помогает.
Итог такой: USB-hub по ходу неккоректно работает с переходниками USB-COM. Как исправить - даже не представляю.
-
> Итог такой: USB-hub по ходу неккоректно работает с переходниками
> USB-COM. Как исправить - даже не представляю.
С переходниками USB-COM вечный гемморой, ETHERNET-RS232 работает в разы стабильнее. Такое ощущение, что там драйверы выпускники наших ПТУ пишут.
-
> tesseract © (10.12.08 14:14) [9]
С микросхемой FT232BM у нас никогда ещё проблем не было.
-
> С микросхемой FT232BM у нас никогда ещё проблем не было.
Не знаю точную микросхему. Есть те которые реально работают, китайские чудеса как правило только модемы и принтеры держат, на разное спецоборудование уже плохо вешаються.
-
У тебя просто номер порта каждый раз меняется (в диспетчере устройств посмотри)