Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с железом с помощью WinAPI, порт LPT1 и COM1 
:(
    Опции темы
out51d3r
Дата 8.4.2007, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 19.8.2006

Репутация: нет
Всего: 2



Как я понял (точнее, как мне уже объяснили), Windows XP не дает напрямую работать с железом.
Мне надо через ЛПТ или через COM порт передавать какие-нибудь данные, в "наглую" это не происходит, приложение вылетает.

Ну что-то типа такого:

Код

#include <stdio.h>

void main(void)
{
__asm
{
out 3f8h,0h;  // Заслать в порт значение 0
}
}


Говорят, что якобы нужно юзать АПИ драйверов устройств и т. п.

Подскажите пожалуйста (желательно с исходником), как программно на Си++ реализовать такую затею: передовать данные в порт?
PM MAIL   Вверх
W4FhLF
Дата 8.4.2007, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



А внизу страницы и в поиске смотрели?


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Tectoder
Дата 8.4.2007, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 202
Регистрация: 13.3.2007

Репутация: 7
Всего: 8



Вкратце, открыть порт функцией CreateFile и вперед
PM   Вверх
out51d3r
Дата 10.4.2007, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 19.8.2006

Репутация: нет
Всего: 2



Что-то не получается...

Вы бы не могли пример привести, или хотя-бы ссылку дать, где можно узнать более подробно... (Дело в том, что у нас интернет очень медленный и его очень мало, поймите меня пожалуйста правильно).

С Уважением out51d3r.

А внизу - это где?

_________________________
Ты имеешь ввиду, раздел "А здесь смотрели?"?, если да, то там я смотрел...

Это сообщение отредактировал(а) out51d3r - 10.4.2007, 17:50
PM MAIL   Вверх
dizzy1984
Дата 13.4.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 15.2.2007

Репутация: нет
Всего: 25



Цитата

Работать с LPT и COM портом для Windows можно использовав функцию CreateFile. В Windows, как и в DOS остались имена файлов, которые давать нельзя типа 

 COM 
 LPT
 CON
 AUX
 ....
Попытка создать файл с таким именем приводит к перенаправлению информации на соответствующий порт или устройство. Вот на этом не всегда удобном свойcтве и основанна работа с устройствами. Надо создать файл с таким именем и выводить в него информацию. Смотрите пример ниже. 

// CreateFile.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "windows.h"
#include "iostream.h"


void main()
{
HANDLE  hLPT=CreateFile("LPT1",GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if (hLPT!=INVALID_HANDLE_VALUE)
{
cout << " Ok Open LPT1" << endl;
char buffer[25];
memset(buffer,0,sizeof(buffer));
                strcpy(buffer,"Hello LPT ");
 DWORD dw;
OVERLAPPED ov;
for (int x=0;x < 3;x++) WriteFile(hLPT,buffer,sizeof(buffer),&dw,&ov);
CloseHandle(hLPT);
}
else cout << "Error Open" << endl;
}
Как видите, я создаю файл с именем LPT1 и вывожу туда информацию. Что я получу ?? Зависит от принтера. Я проверял на Epson Stylus 1000. Запускал программу, а потом печатал пустой лист из блокнота. В результате на принтер выводилась строка Hello LPT. Почему я печатал из блокнота пустой лист ?? Дело в том, что у принтера есть буфер и он не напечатает ничего пока этот буфер не переполнится или не поступит команда конец страницы !! Так как я ESC коды этого принтера не помню smile))) я просто начал печатать из блокнота новый документ, а это подразумевает, что старый надо завершить печатать кстати. Вот он и напечатал. 

Таким образом зная протокол обмена между портами и устройствами можно создавать программы, которые будут работать без драйверов или сами драйвера создавать smile)).


Информации - море, ищи...

Это сообщение отредактировал(а) dizzy1984 - 13.4.2007, 17:03
PM MAIL   Вверх
out51d3r
Дата 14.4.2007, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 19.8.2006

Репутация: нет
Всего: 2



Ааа... Так что-ли))))
Спасибо! Очень помог.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0820 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.