Здравствуйте, Vladimir! А что такое сипиттер? Ответ отправлен: 22.05.2003, 13:44 Отправитель: Avl2k
Вопрос № 790
Ув. эксперты, вот кусочек кода - работа с СОМ-портом.. Помогите разобраться плз :) ctl = inp(0x3fb - 0x100 * port); outp(0x3fb - 0x100 * port, ctl | 0x80); Переменная ctl описана как char, port как int. Мне непонятна такая форма записи : (0x3fb - 0x100 * port).. Объясните пожалуйста..
Добрый день, Wart! если предположить что автор нумерует порты(port) с 0, т.е. 0 - COM1, 1 - COM2, то это будет обращение к управляющему регистру соотвествующего порта.
Ответ отправлен: 22.05.2003, 23:44 Отправитель: Knignick Отвечает Ramzes
Добрый день, Wart! Очевидно программу писал не ты функции inp/outp читают/записывают в порт, который передается им как параметр. В данном случае параметр передается в виде 16-ричного числа, что мне тоже непонятно. Если перевести все это в 10-тичную форму, получим ctl = inp(1019 - 256*port) outp(1019 - 256*port, ctl | 128) очевидно номер порта вычисляется во время работы программы. Ответ отправлен: 23.05.2003, 11:17 Отправитель: Ramzes Отвечает BOLT
Приветствую Вас, Wart! Я так понимаю: 0x100 - адресное смещение для каждого порта. 0x3fb - это база, т.е. начало отсчета для портов(хм...может (0x3fb + 0x100 * port)). Вроде бы так. Счастливо! Ответ отправлен: 24.05.2003, 12:02 Отправитель: BOLT Отвечает Vdr
Здравствуйте, Wart! (0x3fb - 0x100 * port)- все очень просто: 0x - префикс говорящий о том, что число после него в 16-ричной системе счисления 3fb = 1005 (в десятичной) 100 = 256 (в десятичной) то есть данное выражение принимает вид: (1005 - 256*port) Ответ отправлен: 23.05.2003, 10:34 Отправитель: Vdr
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.