Как узнать физический адрес порта USB->RS232
а уж дальше - дело драйвера каким-то образом на аппаратном уровне взаимодействовать с переходником через usb.
Драйвер работает с USB портом, а в самом шнуре микроконтролёр который формат передачи данных USB преобразует
в формат COM, вот и все дела.
драйвер usb-шнура, который, собственно, создает виртуальное устройство, работает, в свою очередь, с драйвером usb-устройств windows. он не напрямую с железом общается. это все происходит на неком уровне абстракции, который позволяет создавать общее api для шин, классов устройств и отдельных устройств.
то что видно на закладке “ресурсы” у устройств - не более чем информация, предоставленная драйвером этого устройства. вы из своей программы не можете просто так использовать эту память, эти прерывания…
шнур не просто “преобразует один формат в другой”. у этого шнура свой собственный протокол общения со своим драйвером поверх стандартной передачи данных по шине usb, кроме того, возможно, у него есть аппаратный fifo-буфер, и вообще, не такое уж это простое устройство.
чтобы рабоать с виртуальным (и не виртуальным, любым, с точки зрения прикладного программиста windows это не имеет значения) ком-портом нужно открыть устройство \\.\COMn, где n - номер порта, через createfile, с помощью readfile/writefile - читать-писать, closehandle - закрывает порт. кроме того, можно управлять портом через функции setcomm*, а получать состояние - через getcomm* (например, getcommstate) и аналогичные функции winapi. ФИЗИЧЕСКИЕ АДРЕСА В ДАННОМ СЛУЧАЕ НЕ НУЖНЫ.
Чтобы обратится к устройству, не факт по адресу, можно и \\.\COMn. (ясно)
Но унас может быть 256 виртуальных порта, как тогда, выделяется память под временные данные.
А она выделяется!
to Toxa: Где про это можно подробно посмотреть. 😵
Чтобы обратится к устройству, не факт по адресу, можно и \\.\COMn. (ясно)
Но унас может быть 256 виртуальных порта, как тогда, выделяется память под временные данные. А она выделяется!
по адресу, из обычной программы в windows обратиться к порту просто нельзя! под внутренние нужды память выделяется драйвером устройства. адреса, объем и формат данных определяется самим драйвером - сколько ему нужно, столько и драйвер выделяет. прямого доступа к этой памяти извне обычно нет.
есть еще такая вещь - vdm - virtual dos machine. для запуска дос-программ. dos-программа, работающая в vdm, может обращаться к портам по “физическому” адресу и использовать “прерывания”. но эти адреса, на самом деле, виртуальные, при обращении к ним управление перехватывается и происходит вызов драйвера windows. точно так же и эти преывания виртуальные - они эмулируются.
to Toxa: Где про это можно подробно посмотреть. 😵
В MSDN, конечно. Про драйверы - в DDK.
…В MSDN, конечно. Про драйверы - в DDK…
я так понимаю мачу3 ничто несветит…
100 еврейских рублёв пропали задаром…
жаль.
я так понимаю мачу3 ничто несветит…
100 еврейских рублёв пропали задаром…
жаль.
Вам сюда… www.homanndesigns.com/ModIO.html
Вам сюда… www.homanndesigns.com/ModIO.html
Та приблуда стоит сто баксов… 😃
За сто баксов я себе куплю другой ноутбук, с рабочим LPT1. 😉