Red de conocimiento informático - Computadora portátil - ¿Puede C# controlar el puerto paralelo para generar un voltaje de 5V?

¿Puede C# controlar el puerto paralelo para generar un voltaje de 5V?

Puerto paralelo

El estándar IEEE 1284 definió 5 modos para transmisión por puerto paralelo en 1994:

1) Modo de compatibilidad Modo de compatibilidad

2 ) Modo Nibble modo de media palabra

3) Modo Byte modo byte

4) Modo de puerto paralelo mejorado EPP

5) Puerto paralelo extendido ECP

p>

El conector de hardware del puerto paralelo es DB25, que se divide en tres grupos, como se muestra a continuación

1) Líneas de datos (bus de datos) líneas de datos

2) Líneas de control Líneas

3) Líneas de estado Líneas de estado

Las líneas de datos se utilizan para transmitir datos, las líneas de control se utilizan para controlar dispositivos periféricos y los dispositivos periféricos devuelven señales de estado a través de líneas de estado. Estas líneas están conectadas a internos. El registro de datos, el registro de control y el registro de estado están conectados.

La señal del pin DB25 es la siguiente:

Nº de pin (DB25)

Nombre de la señal

Dirección

Registro - bit

Invertido

1

nStrobe

Fuera

Control-0

2

Datos0

Entrada/Salida

Datos-0

No

3

Datos1

Entrada/Salida

Datos-1

No

4< / p>

Datos2

Entrada/Salida

Datos-2

No

5

Dato3

Entrada/Salida

Dato-3

No

6

Dato4

Entrada/Salida

Datos-4

No

7

Datos5

Entrada/Salida< / p>

Datos-5

No

8

Datos6

Entrada/Salida

Datos -6

No

9

Datos7

Entrada/Salida

Datos-7

No

10

nAck

En

Estado-6

No

11

Ocupado

En

Estado-7

12

Paper-Out

En

Estado-5

No

13

Seleccionar< / p>

Entrada

Estado-4

No

14

Salto de línea

Salida< / p>

Control-1

15

nError

En

Estado- 3

No

16

nInicializar

Fuera

Control-2

No

17

nSelect-Impresora

Fuera

Control-3

18-25

Tierra

-

-

-

Registro de puerto paralelo:

Las líneas de datos, control y estado están conectadas respectivamente a los registros coincidentes dentro de la computadora, por lo que estos registros se pueden operar mediante programación y el puerto paralelo se puede leer y escribir fácilmente a través de 'C' o 'BASIC ' idioma.

Los registros de puerto paralelo estándar son:

1) registro de datos registro de datos

2) registro de estado registro de estado

3) registro de control Registros de control

Al escribir estos registros, las señales de voltaje correspondientes se transmitirán en las líneas correspondientes, que se pueden medir con un multímetro. Las señales para el puerto paralelo también se pueden leer a través de estos registros. Ejemplo: escribimos "1" en el registro de datos, Data0 se elevará a un voltaje de +5V, para que podamos encender o apagar la línea de datos o la línea de control mediante programación.

¿Dónde están estos registros?

En IBM PC, estos registros están asignados IO y tienen direcciones únicas. En una PC típica, la dirección base de LPT1 es 0x378, la dirección base de LPT2 es 0x278 y la dirección base de LPT3 es 0x3bc. .

El registro de datos está en la dirección base, el registro de estado está en la dirección base +1 y el registro de control está en la dirección base +2 Por lo tanto, una vez que conocemos la dirección base, podemos. calcular las direcciones de otros registros

Registro

LPT1

LPT2

LPT3

registro de datos (dirección base + 0)

0x378

0x278

0x3bc

registro de estado (dirección base + 1)

0x379

0x279

0x3Bd

registro de control (dirección base + 2)

0x37a

0x27a

0x3be

Especificaciones de programación:

Casi todos los lenguajes de programación proporcionan algunas funciones de biblioteca para acceder a puertos paralelos. Por ejemplo: Borland C proporciona funciones "Inportb" y "Outportb" para leer. o escriba la dirección de mapeo IO de dispositivos externos. Este tutorial proporciona ejemplos de VC, pero es fácilmente portátil a otros compiladores como Borland C y TC. VB no proporciona directamente funciones de acceso al puerto paralelo, pero esta función se puede agregar fácilmente a través de DLL. VC proporciona dos funciones para acceder al mapeo IO de dispositivos periféricos, "_inp" para leer y "_outp" para escribir. Estas funciones están declaradas en "conio.h".

Programa de prueba de hardware simple:

Ejemplo de VC++:

Paso 1: crear un proyecto:

Después de hacer clic en Finalizar, haga clic en el ejemplo .cpp Introduce el código en:

#include "stdafx.h"

#include "conio.h"

#include "stdio.h"

#include "string.h"

#include "stdlib.h"

int main(int argc, char* argv[])

{

datos breves;

if(argc<2)

{

printf("Uso\n\n ");

printf("partest1.exe ,,\n\n\n");

devuelve 0;

}

if (!strcmp(argv[1],"read"))

{

datos = _inp(atoi(argv[2]));

printf ("Los datos leídos desde el puerto paralelo son ");

printf("%d\n\n\n\n",data);

}

if(!strcmp(argv[1],"escribir"))

{

_outp(atoi(argv[2]),atoi(argv[3] ));

printf("Los datos escritos en el puerto paralelo son ");

printf("%s\n\n\n\n\n",argv[3] );

}

return 0;

}

Compile este programa y cópielo en "c:\"

¿Cómo probar el programa?

Conecte el hardware, abra el cuadro del símbolo del sistema, cambie a C: Ingrese: partest1.exe escriba 888 255 y presione Enter. Si todo está correcto, entonces LED1-LED8 se iluminará. 0x378, es decir, la dirección base de LPT1 (registro de datos). 255 son los datos escritos en el registro de datos. Si ingresa "partest1 read 888", el programa leerá el valor del registro de datos del puerto paralelo y lo mostrará.