Конференция "WinAPI" » Хардварный и Виртуальный COM порт.
 
  • POP (21.04.08 21:28) [0]
    Как определить (кроме как по номеру порта) хардварный ли порт или виртуальный (созданный разного рода USB дровами, USB-to-COM переходниками или Мэпперами)??

    Например COM1 и COM2 это обычно хардарные порты на матери, а какой-нибудь COM16 - виртуальный.

    Как еще это можно определить?
  • tesseract © (21.04.08 22:27) [1]

    > Например COM1 и COM2 это обычно хардарные порты на матери,
    >  а какой-нибудь COM16 - виртуальный.


    Ой не факт. Имена портов до 256 доходят, и переназначаються в лёт. В лоб неопределишь, К тому же что считать виртуальным ? 70 % внешних плат автоматом превращаються в "виртульные".
  • Anatoly Podgoretsky © (21.04.08 23:40) [2]
    > POP  (21.04.2008 21:28:00)  [0]

    Считай никак, драйвер можно написать так, что различий не будет. А не проще на плату посмотреть или отдать это на откуп пользователю, ему же все равно делать нечего.
  • Германн © (22.04.08 01:30) [3]
    А смысл какой? Для программы пофигу хардварный или виртуальный.
  • REA (22.04.08 09:41) [4]
    Ну например, если не занят и откроется на высокой скорости, то USB :)
    А вообще наверно можно докопаться где нибудь в реестре или через WMI какой нибудь...
  • Anatoly Podgoretsky © (22.04.08 10:06) [5]
    > REA  (22.04.2008 09:41:04)  [4]

    А если откроется только на 115200, тогда что?
  • POP (22.04.08 10:52) [6]
    Германн
    > А смысл какой? Для программы пофигу хардварный или виртуальный.


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

    Происходит это по причине того, что все фирменные кабеля для этой марки мобил (Kyocera) сделаны на чипе Prolific, он работает на 230400 без проблем (создается виртуальный порт в системе).

    REA

    > Ну например, если не занят и откроется на высокой скорости,
    >  то USB :)


    Если говорить о обычных USB дровах для простых USB кабелей (без всяких чипов внутри), то они вообще не реагируют на установки скорости, а работают сразу на установленной (обычно 230400).

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

    Я уже писал об этом на этом форуме, но ответа не получил, видимо, мало кто с мобилами работает.

    А вот разного рода переходники USB-to-COM основанные на чипах Prolific, FTDI, и тд или USB кабели на этих чипах (создается виртуальный COM порт) работают как обычный хардварный порт, только большие скорости поддерживаются и сами скорости переключаются без проблем, какую установишь, на такой и будет работать.


    > А вообще наверно можно докопаться где нибудь в реестре или
    > через WMI какой нибудь...


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

    Есть такая программа QPST - http://rapidshare.com/files/109446539/qpst_27_b264.rar.html

    Установите ее и запустите "QPST Configuration", далее кнопка "Add new port"

    Так вот она показывает все порты в системе и если порт USB - Виртуальный, то она в поле "Baud rate" сразу пишет "USB", а для обычных хардварных портом пишет скорость 115200.

    Так что она каким-то макаром определяет.
  • Anatoly Podgoretsky © (22.04.08 13:21) [7]
    > POP  (22.04.2008 10:52:06)  [6]

    Обычные компорты не работают, а турбо работают со скоростями 230/460/920
    Некоторые могут еще и обманывать систему, работать на 920 а для системы выклядит как 115
    за счет внутреннего множителя.
  • tesseract © (22.04.08 14:40) [8]

    > Смысл такой, что работая через обычный COM кабель мобильник
    > переводиться на 230400, а обычный хардварный порт такую
    > скорость не поддерживает, соответсвенно ничего не работает.
    >


    До 1,5 Мегабита распаянный на современный плате выдаёт. USB-преобразователь сильно паршивый - половину состояний не держит.


    > кую не установи скорость через SetComState, мобила все равно
    > будет отвечать на команды и все будет работать на заранее
    > заданной скорости.


    Естественно, ты должен тут мобилу уважить.  Кстати ты ошибки возвращаемые функциями принципиально не признаешь ?


    > Так что она каким-то макаром определяет.


    По DeviceID наверно устройства.


    >  сделаны на чипе Prolific


    Ой скока я с этой китайшиной мучался.
  • POP (24.04.08 17:10) [9]
    Anatoly Podgoretsky

    > Некоторые могут еще и обманывать систему, работать на 920
    > а для системы выклядит как 115за счет внутреннего множителя.
    >


    Так оно и есть. На обычных USB дровах невозможно скоростью управлять. К такому выводу я пришел.

    tesseract

    > Кстати ты ошибки возвращаемые функциями принципиально не
    > признаешь ?


    Так и сделал, как REA говорил, считаю, что если открывается на 230400 значит порт виртуальный и наоборот.

    Для моей ситуации покатит, но метод неуниверсальный, так как Лыжные виртуальные порты например, тоже на 230400 не открываются.


    > Ой скока я с этой китайшиной мучался.


    Я купил какой-то галимый китайский переходник, установил последние дрова с сайта.. пока всем устраивает, работает чисто, четко и гладко.
  • Anatoly Podgoretsky © (24.04.08 19:46) [10]
    > POP  (24.04.2008 17:10:09)  [9]

    По скорости определить виртуальность не возможно, виндоус уже давно имеет расширеные скорости.
    А то что я рассказывал про обман, связано с тем, что бы с портом могли работать самые древние программы.
    Там стоят обычные микросхемы, только работающие на повышеных скоростях и аппаратный или программный множитель, в итоге получается
    115200 * N, где N = 1, 2, 4, 8
  • Германн © (24.04.08 19:56) [11]
    Итого.
    > Anatoly Podgoretsky ©   (21.04.08 23:40) [2]

    Отличить можно только мануально. Выдернул кабель, пропала связь, значит это тот порт.
  • POP (24.04.08 21:06) [12]
    Anatoly Podgoretsky
    > По скорости определить виртуальность не возможно, виндоус
    > уже давно имеет расширеные скорости.



    Ты про какие ситуации говоришь?

    У меня WinXP SP2 и что-то я не наблюдаю, чтобы мои материские порты расширились до 230400 или больше.

    Просто SetComState возвращает ошибку, если попытаться установить 230400.
  • tesseract © (25.04.08 15:32) [13]

    > Просто SetComState возвращает ошибку, если попытаться установить
    > 230400.


    Дрова поставь. Стандартные windows-вые не держат больше  128к.
  • POP (25.04.08 17:14) [14]
    tesseract

    То есть ты утверждаешь, что установкой каких-то не-родных дров можно заставить материнские порты работать на 230400?

    Да ссылку на дрова!

    Слабо вериться что-то.. хотя может я что-то недопонимаю.
  • tesseract © (25.04.08 21:05) [15]

    > То есть ты утверждаешь, что установкой каких-то не-родных
    > дров можно заставить материнские порты работать на 230400?
    >


    Да. Такие дрова есть, лично ставил - работали стабильнее (имееться в виду промышленное применение!)

    Вроде этого :

    http://www.diamondelectric.ru/downcat34.html

    Есть и получше - но наврядли ты выставляешь изощерённые параметры порта (старые Масса-К ВП-Ф например).
  • POP (26.04.08 08:47) [16]
    tesseract

    По этой ссылке под WinXP удалось скачать только HiSerial v1.5 (Драйвер ускорения COM порта для Siemens под XP)

    Вообще я эти драйверы "ускорители" видел еще лет "n-цать" назад и никогда они у меня не работали.

    Потому что поддерживают всегда вполне определенное (ограниченное) количество чипсетов.

    Вот и сечас Chipset = Unknown , порт установки на 230400 не принимает, хотя мать вполне современная - Epox на nForce.
  • POP (26.04.08 09:12) [17]
    tesseract

    Вношу поправочку:

    Обнаружил более мощный и современный ускоритель, к тому-же автор - наш соотечественник - http://leo.yuriev.ru/SerialXp

    Вот с этим драйвером мой порт заработал на 230400 и мобильник на этой скорости тоже без проблем работает :)

    Щас потестирую на предмет поддержки 460800.
  • tesseract © (26.04.08 10:46) [18]

    > Обнаружил более мощный и современный ускоритель,


    Этого помню. стабильнее работает, это не "ускоритель" а именно переписаныый драйвер, там много косяков исправлено стандартного драйвера.
 
Конференция "WinAPI" » Хардварный и Виртуальный COM порт.
Есть новые Нет новых   [134433   +21][b:0][p:0]