bvn123 0 25 января, 2008 Опубликовано 25 января, 2008 · Жалоба Здравствуйте, при изготовлении устройств с использованием USB-UART мостов под каждое устройство с уникальным VID и PID WinXP создает виртуальный COM-порт с уникальным номером. По какой причине порты выше COM9 не открываются? Как преодолеть? Проверку выполнял как с использованием функций Windows API, так и компонента VarianAsync32, у которого, согласно документации, есть собственное ограничение (до COM16) . В реестре при подключении очередных устр-в прописываются, например, COM10 или COM11, в диспетчере устройств порты COM10 и COM11 также автоматически появляются Моя программа в Дельфи обнаруживает и распознает COM10, 11, но открытие порта с номером >9 вызывает ошибку: PortNumber:=10; hCOM:=CreateFile( PChar('COM'+inttostr(PortNumber)), GENERIC_READ + GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0); // если PortNumber меньше 10-ти - работает, если >=10, hCOM=INVALID_HANDLE_VALUE Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 25 января, 2008 Опубликовано 25 января, 2008 · Жалоба sprintf(comPortName, "\\\\.\\COM%d", comPortNumber); или в вашем случае PChar('\\\\.\\COM'+inttostr(PortNumber)), Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vvs157 0 25 января, 2008 Опубликовано 25 января, 2008 · Жалоба Здравствуйте, при изготовлении устройств с использованием USB-UART мостов под каждое устройство с уникальным VID и PID WinXP создает виртуальный COM-порт с уникальным номером. По какой причине порты выше COM9 не открываются? Как преодолеть? У Вас какой-то глюк в системе. В ХР нет никаких проблем с СОМпортами болне 9-го. Любой номер до 255 открывается без проблем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 25 января, 2008 Опубликовано 25 января, 2008 · Жалоба У Вас какой-то глюк в системе.Глюка в системе нет. Просто имя порта для CreateFile надо указывать правильно. Вот: http://support.microsoft.com/kb/115831 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bvn123 0 25 января, 2008 Опубликовано 25 января, 2008 · Жалоба Глюка в системе нет. Просто имя порта для CreateFile надо указывать правильно. Вот: http://support.microsoft.com/kb/115831 Спасибо, Сергей, ссылка помогла, заработало в таком виде: hCOM:=CreateFile( PChar('\\.\COM'+inttostr(PortNumber)), GENERIC_READ + GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0); При 'большем кол-ве слэшей (если копировать из статьи по ссылке \\\\.\\COM10) не работало Очевидно и в компоненте VarianAsync, на котором я также тестировал эту неприятность, также не внесена соотв.поправка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 25 января, 2008 Опубликовано 25 января, 2008 · Жалоба При 'большем кол-ве слэшей (если копировать из статьи по ссылке \\\\.\\COM10) не работалоВидимо, дельфи и С по-разному толкуют символ '\' в текстовых строках. В С он используется для задания спецсимволов, поэтому чтобы он попал в скомпилированный код его надо в исходнике написать дважды. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jorikdima 0 25 января, 2008 Опубликовано 25 января, 2008 · Жалоба "nen тему надо в фак какой нибудь. Периодически всплывает. Я тоже знаю про эту особенность, но постоянно забываю медод исправления, а по-быстрому найти не получается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ESL 0 25 января, 2008 Опубликовано 25 января, 2008 · Жалоба Я не мудрствуя решал эту проблему проще, в диспетчере устройств присваивал номер СОМ-порта оставшийся от уже отключённого устройства, при присвоении ругается однократно, после - корректно работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bvn123 0 28 января, 2008 Опубликовано 28 января, 2008 · Жалоба Я не мудрствуя решал эту проблему проще, в диспетчере устройств присваивал номер СОМ-порта оставшийся от уже отключённого устройства, при присвоении ругается однократно, после - корректно работает. не выход: проблема возникла у двух заказчиков, решил доработать ПО Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
paskal 1 30 августа, 2009 Опубликовано 30 августа, 2009 · Жалоба Пишу обмен по СОМ порту через CreateFile. Правда порт виртуальный, на самом деле это драйвер FT232, но поначалу это проблем не составляло. Службы винды работают с ним точно также, как с настоящим. Передаю в качестве параметра "COM3", например и все ОК. Проблема появилась, когда стал пробовать программу на компе где мое устройство определяется как СОМ12. Вот тут CreateFile его категорически не видит. Как открывать порт с таким большим номером, подскажите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 30 августа, 2009 Опубликовано 30 августа, 2009 · Жалоба "\\\\.\\COM12" Ну, или если паскаль, то '\\.\COM12' ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
paskal 1 30 августа, 2009 Опубликовано 30 августа, 2009 · Жалоба Пишу обмен по СОМ порту через CreateFile. Правда порт виртуальный, на самом деле это драйвер FT232, но поначалу это проблем не составляло. Службы винды работают с ним точно также, как с настоящим. Передаю в качестве параметра "COM3", например и все ОК. Проблема появилась, когда стал пробовать программу на компе где мое устройство определяется как СОМ12. Вот тут CreateFile его категорически не видит. Как же открывать порт с таким большим номером? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 43 31 августа, 2009 Опубликовано 31 августа, 2009 · Жалоба Пишу обмен по СОМ порту через CreateFile. Правда порт виртуальный, на самом деле это драйвер FT232, но поначалу это проблем не составляло. Службы винды работают с ним точно также, как с настоящим. Передаю в качестве параметра "COM3", например и все ОК. Проблема появилась, когда стал пробовать программу на компе где мое устройство определяется как СОМ12. Вот тут CreateFile его категорически не видит. Как же открывать порт с таким большим номером? Открываете файл с именем "\\\\.\\COM12" (это запись на языке С, где обратные слеши в записи приходится удваивать). Если у вас другой язык програмирования, то истинное имя файла выглядит так \\.\COM12 Это способ универсальный - годится и для COM1-COM9. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
paskal 1 31 августа, 2009 Опубликовано 31 августа, 2009 · Жалоба Помогите решить проблему. Работаю с КОМом через стандартные службы винды CreateFile. Порт виртуальный, его делает драйвер FT-232, поэтому номер порта получится может какой угодно. На одном компъютере устройсво распозналось как COM7, работает ОК. Открывается, пишется, читается. Но на другом он распознался как COM12. И тут он не может даже открыться через CreateFile. Подозреваю, что дело в большом номере - 12. Потому что остальные порты на этом компе через туже функцию открываются. Посоветуйте как же открывать порт с таким большим номером? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 1 сентября, 2009 Опубликовано 1 сентября, 2009 · Жалоба Сдаётся мне, что когда тему подклеивают к предыдущей, то в исходном форуме ничего не остаётся... Вот и вопрошает бедняга уже третий раз... Кстати, если я правильно запомнил, спрашивал он в форуме "Помощь начинающему", в подфоруме "Программирование". Имхо, этому топику там более подходящее место. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться