Sunteți pe pagina 1din 9

Portul paralel

Introducere:
• exemplu: conectorul protului paralel (25-pini) -DB25 pentru imprimanta
• un canal I/O foarte util pentru conectarea propriilor circuite; folosit pentru a efectua unele experimente
de interfatare hardware;
• la computere moderne(laptop) – este prezenta numai conexiunea USB pentru dispozitive periferice;

Iesirile pinului conectorului DB-25:


Liniile sunt impartite in 3 grupuri:
• linii de date – utilizate pentru transferarea datelor ( pinii 2-9)
• linii de control – utilizate pentru controlul perifericului (1,14,16,17)
• linii de stare – starea de returnare periferica semnaleaza computerul prin aceste linii (10-13, 15)
Descrierea pinilor:
1- (nStrobe) – spune imprimantei ca datele sunt disponibile;
2-9 – pini pentru date;
10 – (nAck) – accesat atunci cand Busy se stinge sau dupa ce datele sunt acceptate
11 – (Busy) – indica ca perifeciul este ocupat; nu se trimit date pana cand nu este eliberat;
12 – (Paper-Out/Paper-End) – cand perifericul are probleme cu hartia sau calea de alimentare;
13 – (Select) – HIGH cand perifericul este online;
14 – (nAuto) – utilizat pentru a 9 -lea pin de date;
15 – (nError/ nFault) – LOW cand perifericul este offline/eroare/lipsa hartie
16 – (nInitialize) – LOW pentru a reseta perifericul;
17 (nSelect – Printer/ nSelect-In) – accesat pentru a selecta perifericul; aceasta linie permite introducerea
dateleor in imprimanta cand este LOW;
18 – 25 – Ground
Registrii portului paralel:
• Liniile de date, control si stare sunt conectate la registrul corespondent in interiorul calculatorului;
prin manipularea acestor registre in program, se poate citi/scrie cu usurinta in port paralel cu
ajutorul limbajelor de programare precum C.

Registrele: 1. Registru de date – conectat la liniile de date


2.Registru de stare – conectat la liniile de stare
3. Registru de control – conectat la liniile de control
• Orice scriem in registre, va aparea in liniile corespondente ca tensiuni si indiferent ce dam la portul
paralel ca tensiune, pot fi citite din aceste registre;
Ex. scriem 1 in R. de date -> linia Data0 va fi condusa la +5V. La fel putem porni si opri oricare din
liniile de date si control.
In PC IBM, registrele sunt mapate IO si vor avea o adresa unica.
Pentru un PC tipic, adresa de baza a LPT1 este 0x378 iar LPT2 este 0x278;
Registrele de date se afla la adresa de baza +0 (0x378) , R. de stare la adresa de baza +1 (0x379) iar
R. de control la adresa de baza +2 (0x37a).
Programarea portului paralel in C sub Linux

Rutinele pentru accesarea porturilor I/O sunt in /usr/include/asm.io.h (sau linux/include/asm-


1886/io.h in distributia sursa a kernel-ului).
Rutinele sunt macrocomenzi inline, deci este suficient sa includem <asm.io.h>.
Permisiuni: pentru accesarea porturilor, trebuie sa dam permisiune mai intai programului, apeland
functia ioperm() la inceputul programului.
Sintaxa: ioperm (from,num,turn_on) unde from este primul nr de port pentru a da acces; num – nr de
porturi consecutive pentru a da acces si turn_on valoarea booleana care specifica daca se permite
acces la program pentru porturi (1) sau (0) pentru a elimina accesul. Putem apela de mai multe ori
ioperm() pentru a da acces la porturi neconsecutive.
Accesarea porturilor: ioperm() daclarata in unistd.h
• pentru a introduce un octe(8biti) dintr-un prot, apelati inb(port) returneaza octetul primit.
• pentru a trimite un octet apelati outb(vd port)
• pentru a introduce un cuvant (16 biti) din porturile x si x+1 (un octet de la fiecare pt a forma
cuvantul) apelati inw(x).
• pentru a scoate un cuvant din cele 2 porturi apelati outw(valoare, x)
Toate instructiunile de acces port dureaza aprox 1 microsecunda pentru a fi executate.
Portul Serial

• in calcul este o interfata fizica de comunicare seriala prin care informatiile transfera cate un bit in
acelasi timp (spre deosebire de portul paralel)
• computerele moderne, portul serial este inlocuit cu USB si FIREWIRE pentru conexiuni la dispozitive
periferice.
• Utilizat in aplicatii precum: sisteme de automatizare industriala, analize stiintifice;
• Necesita foarte putin software de suport din sitemul gazda;
Specificatiile electrice ale portului serial sunt continute in standardul RS232C EIA (asociatia Industriei
Electronice). Specifica mai multi parametrii:
• Logic 0 – va fi intre +3 si 25V
• Logic 1 – va fi intre -3 si -25V
• Regiunea -3 si +3V este nedefinita.
• O tensiune de circuit deschis nu trebuie sa depaseasca 25V
• Un curent de scurtcircuit nu trebuie sa depaseasca 500mA
RS232D a existat in 2 tipuri – controlul prin D-Type 25 si controlul prin D -Type 9 -> conectori masculini
pe sptatele PC-ului.

DB25

DB9

TD
RD
RTS
CTS
DSR

Carrier Detect CD – semnal de la modem


DTR
RI
Registrele portului serial (12 registre)

1. Registru de transmisie (THR) – selectat daca bitul DLAB al rigistrului LCR este 0.
2. Registru de receptie (RBR) – selectat daca bitul DLAB al reg. LCR este 0. Un caracter receptionat este
pus in acest registru. Prezenta unui caracter in reg. de receptie se poate determina prin testarea bitului
0 al reg. LSR.
3. Registrele de divizare (ISB, MSB) – contin valoarea cu care trebuie divizata frecventa ceasului propriu
al circuitului 16x50 pt a se obtine debitul dorit. LSB - contine octetul mai putin semnificativ si MSB
– octetul mai semnificativ. Registrele sunt accesibile daca bitul DLAB al reg. LCR este 1.
4. Registru de validare a intreruperilor (IER) – accesibil daca bitul DLAB al reg LCR este 0.
5. Registrul de identificare a intreruperilor (IIR) – accesat doar pentru citire.
6. Registrul de control al FIFO (FCR) – pentru scriere
7. Registrul de control linie (LCR) – prin inscrierea registrului de control al liniei se pot stabili parametrii
comunicatiei seriale.
8. Registrul de control modem (MCR) – utilizat pt controlul comunicatiei cu modemul.
9. Registrul de stare linie (LSR) – indica starea liniei de comunicatie (bitii 6,5 se refera la transmisie, biti
4->0 receptie)
10. Registru de stare modem (MSR) – contine informatii despre starea modemului. (Biti 7-4 indica starea
curenta, 3-0 indica modificarea starii)
11. Registrul temporar (SR) – nu este utilizat pentru comunicatie; poate fi folosit pentru memorarea
temporara a unui octet.
DLAB – Divisor Latch Access Bit

Programarea portului serial in C su Linux – se face la fel a la portul paralel.


USB DEVICES

• PC urile moderne: USB pentru conectare la dispo. Periferice ( tastatura, mouse).


• USB – fiabil, rapid, versatil, ieftin.
• Toate disp. USB au o conexiune in amonte cu gazda si toate gazdele au o conexiune in aval la
dispozitive.

Exista 2 tipuri de conectori:

1. TIP A : -totdeauna in amonte


-se gasesc pe gazde si hub-uri

2. TIP B: -conectare totdeauna in aval -> exista prize de tip


B pe dispozitive

D- si D+ sunt folosite pentru semnal diferential de date; sunt transmise pe o pereche de fire rasucite care
ajuta la combaterea efectelor de zgomot electromagnetic pe linii mai lungi.
1 si 4 sunt fire de putere
Lungimea maxima a unui cablu USB standard (USB 2.0) este de 5m.
Comunicarea USB poate utiliza oricare din cele 4 tiprui de transfer de date:
1. Transfer de control – pachete de date scurte pentru controlul si configurarea disp. In special la atasarea
lui
2. Transfer de bulk (vrac) – pachete de date in cantitati relativ mari
• Utilizate de scanarele si adaptoarele ScSI
3. Transferuri intrerupte – pachete de date intervievate periodic
4. Transferuri izotermice – fluxuri de date in timp real, cu cerinte mai mari pentru latimea de banda decat
pentru fiabilitate; utilizate de disp. Video si audio
Acccesarea disp. USB din aplicatiile JAVA

• Limbajul de programare java ofera putin suport pentru accesul hardware asa ca scrierea aplicatiilor
Java care sa interactioneze cu disp USB, este dificila
• Proiectul jUSB creat in Iunie2000, a avut ca scop furnizarea unui set de API-uri Java pentru a avea
acces la disp USB pe Linux
• API accepta transferuri de control, in vrac si intrerupte.
• API-ul jUSB include o serie de pachete : { usb.core; usb.linux; usb.windows; usb.remote; usb.util;
usb.device; usb.view}
Interfetele si clasele in jUSB de la usb.core (jUSB API)

Interfete: BUS – conecteaza un set de dispozitive USB la un HOST


HOST – reprezinta un controler USB cu 1 sau mai multe BUS-uri
Clase: Configuration – ofera acces la o configuratie USB sustinuta de un disp. Si la interfetele asociate cu
aceasta config.
Descriptor – clasa de baza pt entitati cu descriptori USB
Device – ofera acces la un disp USB;
DeviceDescriptor – ofera acces la un descriptor de device USB
EndPoint – ofera acces la un descriptor al punctului fiind USB
HostFactory – bootstrapping methods
Interface – interfetele USB descriu un set de endpoint uri si sunt asociate cu o configuratie particulara a disp.
PortIdentifier – ofera identificatori de sir Stabili pt disp. USB, adecvate pentru a fi utilizate in operatii de
depanare.
API ul JSR-80 – ofera suport complet pentru cele 4 tiprui de transfer
-pachetele necesare pentru a forma un API complet java.usb pe Linux sunt :javax-usb; java -usb-ri; javax –
usb-ri-linux;

Interfete si clase JSR-80 API


Clase: UsbHostManager punct de intrare pt javax.usb
Interfete: UsbConfiguration – reprezinta o config a unu disp USB
UsbCOnfigurationDescriptor – interfata pt un descriptor de configurare USB
UsbDevice – pt un disp USB
UsbDeviceDescriptor- pt un descriptor de disp USB
UsbEndpoint
UsbEndPointDescriptor
UsbHub UsbInterface USBPipe UsbPort UsbService – interfata pt o impmentare javax.usb
Pasi pentru accesarea unui dispozitiv USB cu :
jUSB API JSR-80 API
-bootstrap prin obtinerea gazdei USB de la -bootstrap prin obtinerea UsbServices adecvate de la
HostFactory UsbHostManager
-accesati bus-ul USB de la gazda, apoi hub-ul -accesati hub-ul radacina prin serviciul UsbServices
radacina USB
-obtineti o lista a disp UsbDevices conectate la hub-
-obtineti nr de porturi USB disponibile pe hub si ul radacina; traceti prin toate hab-urile de nivel
traversati toate porturile pt a gasi disp. Coresp. inferior pt a gasi disp coresp UsbDevice
-accesati disp USB atasat direct de la gazda cu -interactionati cu UsbDevice direct cu un mesaj de
PortIdentifier sau poate fi gasit prin traversarea bus- control sau revendicati o interfata din configuratie
ului USB pronind de la hub-ul radacina coresp a disp si efectuati I/O cu UsbEndpoint
-interactionati cu disp direct cu controlMessage sau -daca se utilizeaza un disp UsbEndpoint pt a efectua
revendicati o interfata din configuratia curenta a I/O deschideti disp UsbPipe pt trimiterea datelor
disp. sincron sau asincron
-inchideti disp Pipe si eliberati UsbInterface coresp.

Java GUI

JFC – caracteristici pentru construirea de interfete grafice si adaugare de functii grafice


Librarii – Swing, AWT, Accesibilitate, API 2D, Drag and drop
MVC Controller – imparte componentele GUI in 3 elemente:
1. Model – date de stocare pt fiecare componenta
-independent intotdeauna de reprezentarile vizuale
2. View – cum arata componenta pe ecran ; poate varia de la o platforma la alta
3. Controller – dicteaza cum interactioneaza componenta cu evenimentele (click de la mouse, tastatura.etc)
Cele 3 elemente interactioneaza dupa cum urmeaza:

Pachetul SWING defineste 2 tipuri de componente: -de nivel superior (Jframe, Japplet,
Jwindow, jDialog) - componente usoare Jbutton, JPanel, JMenu.
JFrame- o fereastra de nivel superior cu titlul si o bordura
JDialog – fereastra de dialog numita sa transporte o notificare temporara (msg de eroare, avertismente)
JPanel – cel mai frecvent utilizat panou de continut
JAVA WEB SERVICES
• Interfete (api) sau API-uri WEB care pot fi accesate printr-o retea si executate pe un sistem la distanta
• Clienti si servere care comunica prin protocolul HTTP utilizat pe web pentru crearea unui serviciu
WEB.
1. Alegerea unui Container
-putem lansa serviciul web intr-un web container sau intr-un EJB container. Depinde de alegerea de
impementare.
2. Crearea serviciului web pt o clasa Java
Lansarea si testarea serviciului WEB
Cand lansam un serviciu web intr-un container web, IDE te lasa sa testezi serviciul web sa vezi daca
functioneaza dupa cum ne asteptam. Aplicatia de testare, asigurata de GlassFish, este integrata in IDE in acest
scop. Pentru serverul Web Tomcat, este un tool similar. Oricum, in timp ce pagina GlassFish Tester va permite
sa introduceti valori si sa le testati, Tomcat web server nu permite asta. In ultimul caz, putem doar sa vedem
ca serviciul Web este lansat, dar nu putem testa valorile.

SERIAL PORT:
#include <stdio.h> Outb(0x00, port +1); //Set bond rate devisor latch hig
#include <unistd.h> Outb(0x03, port+3); //8bits, no parity, 1 step bit
#include <asm/io.h> Outb(0xC7,port +2); // fifo control register
#define port 0x3F8 Outb(0x0B, port +4); //turn on DTR, RTS and OUT2
/*defines Serial Port Base Address*/ Printf (“\n Sample Comm’s Program \n”);
/*COM1 0x3F8*/ Outb(c,port); //send char to serial port
/*COM2 0x2F8*/ }
/*COM3 0x3E8*/
/*COM4 0x3F8*/
Int main (){
Char c =’a’;
Outb(0,port+1); //turn off interupts – Port1
Outb(0x80, port +3); //SET DLAB ON
Outb(0x03, port _0); //set band rate Devisor latch
low byte
/* Default 0x03 = 38,400BPS*/
/*0x02 = 57600 BPS*/
/*0x06 = 19,200BPS*/
/*0x0C = 9600 BPS*/
/*0x18 = 4800 BPS*/
/*0x30 = 2400 BPS*/
Comanda leduri 8 buc prin port paralel
#inlude<stdio.h> outport(DATA, 0x80);

#inlude<conio.h> sleep(1);}

#include<dos.h> printf(“Blinking of LED stopped\n”);

#define PORTADDRESS 0x378 getch();}

#define DATA PORTADDRESS+0

#define STATUS PORTADDRESS+1

#define CONTROL PORTADDRESS+2

void main(){int b,c,i;b=3;clrscr();

printf(“blinking of LED stars now”);

for(i=0;i<=b;i++){outport(CONTROL, 0x03);

sleep(1);outport(CONTROL, 0x0f);

sleep(1);outport(CONTROL, 0x09);

sleep(1);outport(CONTROL, 0x0a);

sleep(1);outport(CONTROL, 0x0b);

outport(DATA, 0x01);

sleep(1);outport(DATA, 0x02);

sleep(1);outport(DATA, 0x04);

sleep(1);outport(DATA, 0x08);

sleep(1);outport(DATA, 0x10);

sleep(1);outport(DATA, 0x20);

sleep(1);outport(DATA, 0x40);

sleep(1);

S-ar putea să vă placă și