Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > С/С++
Перезагрузить страницу Как запитать несколько выходов сразу
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию Как запитать несколько выходов сразу - 26.03.2003, 19:18

Я где-то прочитал следующее:

Как я уже говорил, у lpt порта есть 8 основных выходов - выводы 2-9. Управлять ими не сложно, нужно просто посылать в порт определенное число:
1 выход - 1
2 выход - 2
3 выход - 4
4 выход - 8
5 выход - 16
6 выход - 32
7 выход - 64
8 выход - 128
Чтобы запитать первый выход, нужно послать в порт единицу. Чтобы запитать пятый посылаем 16 и тп.. Ноль посланный в порт "погасит" все выходы, а число 256 запитает все сразу.

Сразу напрашивается вопрос - как запитать несколько выходов сразу. Ответ - просто сложить коды выходов: Например, нам нужно запитать выходы 3, 6 и 8, берем и складываем коды этих выводов: 4+32+128=164, посылаем в порт число 164. Так, а теперь погасим один из выходов... например, 6. Сейчас на порт у нас послано 164, отнимем от этого код шестерки(32). Считаем 164-32=132, посылаем в порт число 132 и 6й выход гаснет.


Теперь небольшой примерчик для C

Код:
#include <stdio.h>
#include <conio.h>
#include <dos.h>
main() {
 int i;
 unsigned char r=1;
 outp(0x378,0);
 
   for ( i=0;i<=128;i++) {
     
     outp(0x378,i);
     delay(100);
   }
 
outp(0x378,0);
}
Так вот функция outp - 16 битная и работает только под DOS, а мне
надо под Windows.Я знаю API функцию WriteFile, но в ней можно послать только символьную строку типа "hello", но как запитать выходы я не знаю. Может быть кто нибудь мне поможет.Очень надо.
Ответить с цитированием
  (#2 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 27.03.2003, 11:56

Начни с изучения следующих вопросов:
1. Что такое защищенный режим процессора и чем он отличается от реального.
2. Внимательно прочти в MSDN описание функции WriteFile.
3. Сходи на http://www.internals.com/ и скачай библиотеку WinIO.
Ответить с цитированием
  (#3 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 06.05.2003, 15:05

Вот интересно: как послать hello ты знаешь, а как послать произвольный символ не знаешь. Ну например "Hello" ето массив, каждая буква ето то самое число, которое ты посылаешь через out(port,chislo).
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Монитор включается не сразу osDiver Мониторы 10 22.01.2012 19:45
Как открыть сразу две формы mymedia C++ Builder 1 10.12.2011 05:43
Окна и.т.д закрываются не сразу Slimka Любые вопросы от новичков 3 04.11.2011 15:27
Существуют ли переходники, чтобы запитать оборудование с вилкой Azartov Блоки питания 1 04.06.2011 12:23
Подключение аудио выходов передней панели By_Shadow Звук и акустические системы 5 03.05.2011 11:33
ComboBox как задать сразу несколько компонентов RAPIST C++ Builder 23 01.09.2007 00:44
Как скопировать всю запись сразу DNK Delphi 1 03.11.2005 07:57
Как сделать, чтобы в shelllistview можно было сразу удалять несколько файлов DenXXL Delphi 8 11.05.2005 15:15
Все и сразу различаи слоганов Garik Юмор 0 20.07.2004 14:50
Отправка письма на несколько адресов сразу Anonymous Perl 4 19.09.2003 15:00



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов