0 / 0 / 0
Регистрация: 05.09.2007
Сообщений: 7
|
||||||
1 | ||||||
Ошибка при работе с портами06.01.2008, 17:15. Просмотров 1010. Ответов 6
Метки нет Все метки)
(
Следующ.кусок кода определяет нажата клавиша Esc или F8. После компиляции при запуске проги и при нажатии F8 вызывается функция printf произвольное кол-во раз (по идее должно всего один), но
под дебагером printf вызывается один раз. И в Borlande и в Watcome одинаковый результат
0
|
|
06.01.2008, 17:15 | |
Не является внутренней или внешней командой - ошибка не при компиляции а при работе программы Ошибка при работе с памятью
|
|
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
|
|
06.01.2008, 17:20 | 2 |
А ты не думаешь, что у ткебя цикл while крутиться до тех пор пока ты не отпустишь клавишу, а так как нажатие оно всгеда имеет некоторую продолжительность, вот ты и получаешь этот эффект?
Или, по идее, это должно обрабатываться драйвером клавиатуры? Но ты используешь прямое чтение с портов... С уважением, Владимир
0
|
0 / 0 / 0
Регистрация: 05.09.2007
Сообщений: 7
|
|
06.01.2008, 17:39 [ТС] | 3 |
нет, ты неправ. Даже если перед оператором switch вставить getch()
функц. printf вызывается 2-3 раза
0
|
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
|
|
06.01.2008, 18:08 | 4 |
Может дребезг?
![]() Извини, ничем не могу помочь, я с такой проблемой не сталкивался. Удачи, Владимир
0
|
ovalroom
|
|
16.01.2008, 17:46 | 5 |
Ты читаешь прямо из порта, а потом зачем-то очищаешь буфер клавиатуры. Но значение порта-то при этом не изменится! Можешь хоть сто раз писать нули в ячейку памяти 0:41А, но при этом из порта по адресу 0х60 упорно будешь считывать код последней нажатой клавиши. Под дебагером программа будет проходить один раз - и это тоже естественно. Если ты ее будешь проходить по шагам - из порта 0х60 при этом будут считываться значения кода клавиши, которой шагаешь. Обычно дебагеры стараются восстановить все изменения в системе перед тем как передать управление обратно в отлаживаемую программу. Но в данном случае это невозможно - в порт физически нельзя записать что-то софтверно.
|
0 / 0 / 6
Регистрация: 06.01.2008
Сообщений: 62
|
|
17.01.2008, 11:42 | 6 |
господа время ДОС прошло - пользуйте апишные функции что бы узнать кто где у вас что нажал.
GetAsyncKeyState, GetKeyboardState, etc Igor Soukhov, www.rsdn.ru
0
|
Тематические курсы и обучение профессиям онлайн Профессия Разработчик на C++ (Skillbox) Архитектор ПО (Skillbox) Профессия Тестировщик (Skillbox) |
0 / 0 / 0
Регистрация: 05.09.2007
Сообщений: 7
|
|
17.01.2008, 17:06 [ТС] | 7 |
апи функции это конечно понятно, и спасибо, что они есть. Но ведь интересно же с портами работать? вопрос:'как это работает, интересует меня с детства'. да и спросить нет греха.
С уважением Артур С.
0
|
17.01.2008, 17:06 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.
Ошибка при работе с файлами Ошибка при работе с памятью Ошибка при работе со структурами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |