drukarka atramentowa

Data wykonania ćwiczenia: 04.11.2014 r.

Data oddania sprawozdania: 14.11.2014 r.

Prowadzący: dr inż. Jan Nikodem Wydział Elektroniki, Informatyka

Grupa:

Termin: Wt TN 13:15

Sprawozdanie z laboratorium

Urządzenia Peryferyjne

Ćwiczenie 2

Drukarki atramentowe. Język PCL. Drukowanie w kolorach


Cel ćwiczenia:

Celem ćwiczenia było wykonanie wydruków przy użyciu drukarki atramentowej HP DeskJet 870 podłączonej do komputera za pomocą portu LPT. Do sterowania drukarką używaliśmy języka komend PCL. Do zrealizowania były dwa zadania – wydruk tekstu o konfigurowalnym rozmiarze, kolorze i stylu oraz wydruk kolorowej, rastrowej grafiki.

Język PCL

Do komunikacji z drukarką używaliśmy języka PCL (Printer Command Language). Język ten został opracowany w latach 80. przez firmę HP i służy do opisu stron. PCL jest językiem, w którym wszelkie komendy sterujące przeznaczone dla drukarki zaszyte są w tekście (z wyjątkiem grafiki rastrowej, gdzie kolejne bity stanowią argumenty komend). W języku tym określony jest zestaw komend do formatowania drukowanego tekstu i obrazu. Komendy te mają reprezentację tekstową, t.j. są łańuchem znaków. Mogą przyjmować argumenty. Każda komenda rozpoczyna się znakiem escape (kod ASCII 27). Po tym znaku następują następne określające rodzaj komendy. Na końcu znajduje się znak kończący (różniący się w zależności od komendy), który informuje drukarkę o zakończeniu komendy.

Program

Nasz program umożliwia przesłanie do drukarki celem wydrukowania danych tekstowych oraz grafiki rastrowej. W oknie programu użytkownik może wprowadzić tekst, jaki ma zostać wydrukowany, a także dokonać jego podstawowego formatowania. Do wyboru są:

Wydruk następuje po naciśnięciu przycisku „Drukuj tekst”.

Program umożliwia wydrukowanie wcześniej zaprogramowanej grafiki rastrowej, takiej, jak poniżej:

Grafika zapisana jest w poszczególnych bajtów, które wysyłane są wraz z komendami. Wydruk grafiki następuje po naciśnięciu przycisku „Drukuj grafikę”.

Druk tekstu czarno-białego i częściowo kolorowego przetestowaliśmy na drukarce w laboratorium, natomiast resztę funkcjonalności sprawdzaliśmy programami OpenPCL Viewer i WinPCLtoPDF.

Kody źródłowe:

Kod.cpp

#include "stdafx.h"

#include <fstream>

#include <iostream>

using namespace std;

char esc = 27;

void wydruk(CString Tekst, bool Podkreslenie, bool Pogrubienie, bool Kursywa, int czcionka,

int rozmiar,int kolor)

{

char c[50];

for (int i = 0; i < Tekst.GetLength(); i++)

c[i] = Tekst[i];

c[Tekst.GetLength()] = 0;

fstream lpt;

lpt.open("LPT3", ios::out);

lpt << esc << "E" << endl; //reset drukarki

lpt << esc << "&s0C" << endl; //zawijanie wierszy

lpt << esc << "&l0O" << endl; //orientacja pionowa

lpt << esc << "*o0M" << endl; //jakosc normalna

lpt << esc << "&l26A" << endl; //format A4

lpt << esc << "&a5C" << endl; //margines

lpt << esc << "&a4R" << endl; //

lpt << esc << "(s1p" << endl;

lpt << esc << "(16v" << endl;

lpt << esc << "(0s" << endl;

lpt << esc << "(0b" << endl;

if (czcionka == 1)

lpt << esc << "(4101T" << endl; //czcionka time

if (czcionka==2)

lpt << esc << "(16602T" << endl; //czcionka Arial

if (Podkreslenie)

lpt << esc << "&d3D"<<endl;

lpt << esc << "(s1p" << endl;

switch (rozmiar)

{

case 1:

lpt << esc << "(s20V" << endl; //rozmiar czcionki mniejszy

break;

case 2:

lpt << esc << "(s40V" << endl; //rozmiar czcionki mniejszy

break;

case 3:

lpt << esc << "(s60V" << endl; //rozmiar czcionki mniejszy

break;

default:

lpt << esc << "(s40V" << endl;

break;

}

if (Kursywa)

lpt << esc << "(s1S" << endl;

if (Pogrubienie)

lpt << esc << "(s3B" << endl;

lpt << esc << "*r3U" << endl; //wybor trybu koloru(Simpe color)

switch (kolor)

{

case 1:

lpt << esc << "*v2S" << endl; //kolor zielony

break;

case 2:

lpt << esc << "*v1S" << endl; //kolor czerwony

break;

case 3:

lpt << esc << "*v12S" << endl; //kolor niebieski

break;

default: //kolor czarny

lpt << esc << "*v0S" << endl;

break;

}

lpt << c << endl; //wydrukowanie tekstu

lpt << esc << "E" << endl; //reset drukarki

lpt.close();

}

void wydruk()

{

fstream lpt;

lpt.open("LPT3", ios::out);

char Y = 0x08,F=0xFF,N=0x00;

lpt << esc << "E" << endl; // Reset printer

lpt << esc << "*r-3U" << endl; // Simple color(3 plane)

lpt << esc << "*r0A" << endl; // Start raster

lpt << esc << "*b1M" << endl; //Compression method

lpt << esc << "*b16V" <<Y<<F <<Y<<F <<Y<<N<<Y<<N <<Y<<N <<Y<<N <<Y <<N <<Y<<N;

lpt << esc << "*b16V" <<Y<<N <<Y<<F <<Y<<N <<Y<<N <<Y<<F <<Y<<F <<Y<<N <<Y<<F;

lpt << esc << "*b16W" <<Y<<N <<Y<<N <<Y<<F <<Y<<N <<Y<<F <<Y<<F <<Y<<F <<Y<<N;

lpt << esc << "*b16V" <<Y<<F <<Y<<N <<Y<<N <<Y<<N <<Y<<F <<Y<<N <<Y<<F <<Y<<F;

lpt << esc << "*b16V" <<Y<<N <<Y<<F <<Y<<N <<Y<<N <<Y<<F <<Y<<F <<Y<<N <<Y<<F;

lpt << esc << "*b16W" <<Y<<N <<Y<<N <<Y<<F <<Y<<N <<Y<<F <<Y<<F <<Y<<F <<Y<<N;

lpt << esc << "*b16V" <<Y<<F <<Y<<N <<Y<<N <<Y<<N <<Y<<F <<Y<<N <<Y<<F <<Y<<F;

lpt << esc << "*b16V" <<Y<<N <<Y<<F <<Y<<N <<Y<<N <<Y<<F <<Y<<F <<Y<<N <<Y<<F;

lpt << esc << "*b16W" <<Y<<N <<Y<<N <<Y<<F <<Y<<N <<Y<<F <<Y<<F <<Y<<F <<Y<<N;

lpt << esc << "*b16V" <<Y<<F <<Y<<N <<Y<<N <<Y<<N <<Y<<F <<Y<<N <<Y<<F <<Y<<F;

lpt << esc << "*b16V" <<Y<<N <<Y<<F <<Y<<N <<Y<<N <<Y<<F <<Y<<F <<Y<<N <<Y<<F;

lpt << esc << "*b16W" <<Y<<N <<Y<<N <<Y<<F <<Y<<N <<Y<<F <<Y<<F <<Y<<F <<Y<<N;

lpt << esc << "*b16V" <<Y<<F <<Y<<N <<Y<<N <<Y<<N <<Y<<F <<Y<<N <<Y<<F <<Y<<F;

lpt << esc << "*b16V" <<Y<<N <<Y<<F <<Y<<N <<Y<<N <<Y<<F <<Y<<F <<Y<<N <<Y<<F;

lpt << esc << "*b16W" <<Y<<N <<Y<<N <<Y<<F <<Y<<N <<Y<<F <<Y<<F <<Y<<F <<Y<<N;

lpt << esc << "*b16V" <<Y<<F <<Y<<N <<Y<<N <<Y<<N <<Y<<F <<Y<<N <<Y<<F <<Y<<F;

lpt << esc << "*b16V" <<Y<<N <<Y<<F <<Y<<N <<Y<<N <<Y<<F <<Y<<F <<Y<<N <<Y<<F;

lpt << esc << "*b16W" <<Y<<N <<Y<<N <<Y<<F <<Y<<N <<Y<<F <<Y<<F <<Y<<F <<Y<<N;

lpt << esc << "*b16V" <<Y<<F <<Y<<N <<Y<<N <<Y<<N <<Y<<F <<Y<<N <<Y<<F <<Y<<F;

lpt << esc << "*b16V" <<Y<<N <<Y<<F <<Y<<N <<Y<<N <<Y<<F <<Y<<F <<Y<<N <<Y<<F;

lpt << esc << "*b16W" <<Y<<N <<Y<<N <<Y<<F <<Y<<N <<Y<<F <<Y<<F <<Y<<F <<Y<<N;

lpt << esc << "*b16V" <<Y<<F <<Y<<N <<Y<<N <<Y<<N <<Y<<F <<Y<<N <<Y<<F <<Y<<F;

lpt << esc << "*b16V" <<Y<<N <<Y<<F <<Y<<N <<Y<<N <<Y<<F <<Y<<F <<Y<<N <<Y<<F;

lpt << esc << "*b16W" <<Y<<N <<Y<<N <<Y<<F <<Y<<N <<Y<<F <<Y<<F <<Y<<F <<Y<<N;

lpt << esc << "*rC" << endl; // End Raster

lpt << esc << "E" << endl; //Reset printer

lpt.close();

}

Kod.h

void wydruk(CString, bool, bool,bool,int, int,int);

void wydruk();

Podsumowanie

Dzięki temu ćwiczeniu mieliśmy okazję zaznajomić się z zasadą działania drukarki atramentowej, a także poznać język PCL, który pozwala na łatwe sterowanie drukarką i przesyłaniem danych do wydruku. Co prawda składnia języka PCL nie należy do najbardziej czytelnych, jednak krótkie komendy z pewnością przyśpieszają proces przesyłania danych z komputera do drukarki.

Bibliografia

http://lprng.sourceforge.net/DISTRIB/RESOURCES/DOCS/Vcs_pcl.pdf

http://www.columbia.edu/~em36/pcltopdf.html

http://support.microsoft.com/kb/131714

http://www.hp.com/ctg/Manual/bpl13210.pdf


Wyszukiwarka

Podobne podstrony:
drukarki atramentowe i laserowe Nieznany
Wybierz jedno z urządzeń wejścia wyjścia komputera i opisz je.(drukarka atramentowa), Studia, Inform
Czyszczenie drukarki atramentowej
drukarki atramentowe pokaz cz 1
drukarka atramentowa
Modele barw wykorzystywane w drukarkach atramentowych, Informatyka -all, INFORMATYKA-all
Drukarki atramentowe
drukarki atramentowe i laserowe Nieznany
Czyszczenie drukarki atramentowej
Drukarki atramentowe Rafał Grzesiuk
drukarki atramentowe pokaz cz 1
utk 025 drukarki atramentowe
Budowa drukarki atramentowej
Drukarki
drukarki, c++ warzne, UTK
Instalacja drukarki sieciowej
drukarstwo

więcej podobnych podstron