драйвер 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 еврейских рублёв пропали задаром…
жаль.
Та приблуда стоит сто баксов… 😃
За сто баксов я себе куплю другой ноутбук, с рабочим LPT1. 😉
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"3d4a30483df95500777977e0":{"_id":"3d4a30483df95500777977e0","hid":624,"name":"toxa","nick":"toxa","avatar_id":null,"css":""},"4364d90f3df955007778e980":{"_id":"4364d90f3df955007778e980","hid":9865,"name":"Andrey12","nick":"Andrey12","avatar_id":null,"css":""},"45fa2ae03df9550077785987":{"_id":"45fa2ae03df9550077785987","hid":21428,"name":"appolinari","nick":"appolinari","avatar_id":null,"css":"user__m-banned"},"466038e23df9550077783f5c":{"_id":"466038e23df9550077783f5c","hid":23522,"name":"moon","nick":"moon","avatar_id":null,"css":""}},"settings":{"can_see_ip":false,"can_report_abuse":false,"can_see_hellbanned":false,"forum_can_view":true,"forum_can_reply":false,"forum_edit_max_time":30,"forum_can_close_topic":false,"forum_show_ignored":false,"forum_mod_can_delete_topics":false,"forum_mod_can_hard_delete_topics":false,"forum_mod_can_see_hard_deleted_topics":false,"forum_mod_can_edit_posts":false,"forum_mod_can_pin_topic":false,"forum_mod_can_edit_titles":false,"forum_mod_can_close_topic":false,"can_vote":false,"forum_mod_can_add_infractions":false,"forum_topic_title_min_length":10,"forum_reply_old_post_threshold":30,"votes_add_max_time":168,"forum_show_post_interval":7,"can_see_deleted_users":false},"section":{"_id":"61c9a54c3df9550077bb5117","hid":41,"title":"Общие вопросы","parent":"61c9a54c3df9550077bb51b9","description":"Обсуждение общих вопросов по станкам CNC, Hobby CNC и инструменту.","is_category":false,"is_votable":true,"is_writable":true,"cache":{"topic_count":2372,"post_count":31412,"last_post":null,"last_topic":null,"last_topic_hid":null,"last_topic_title":null,"last_ts":null,"last_user":null}},"topic":{"_id":"4788791f3df9550077b4d9b2","hid":88468,"title":"Как узнать физический адрес порта USB->RS232","views_count":15809,"last_post_counter":15,"cache":{"post_count":15,"first_post":"4788791f3df9550077b4e5d4","first_ts":"2008-01-12T08:23:59.000Z","first_user":"45fa2ae03df9550077785987","last_post":"478b9a8d3df9550077b4e5f0","last_post_hid":15,"last_ts":"2008-01-14T17:23:25.000Z","last_user":"45fa2ae03df9550077785987"},"st":1,"section":"61c9a54c3df9550077bb5117"},"subscription":null,"pagination":{"total":15,"per_page":25,"chunk_offset":9},"posts_list_before_post":["paginator","datediff"]},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}