C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 12 - Работа с COM и LPT портом CreateFile / Win 32 API / Win32 API

Шаг 12 - Работа с COM и LPT портом CreateFile

Привет.
Подскажи пожалуйста ,где можно найти информацию по 
программированию COM порта под win.
В win32 SDK я нашел список функций ,но ни примеров ,ни толкового 
описания нет. И еще : можно ли найти под C++Builder такие компоненты?
Или хотя бы ActiveX управлялки?
Зарание благодарен за помощь.
DemonSerj,Feb,2000
mailto:DemonSerj@usa.net

Работать с 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 коды этого принтера не помню :-)))) я просто начал печатать из блокнота новый документ, а это подразумевает, что старый надо завершить печатать кстати. Вот он и напечатал.

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


Загрузить проект | | |
Автор Каев Артем.
[AD]