¿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
Sí
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
Sí
12
Paper-Out
En
Estado-5
No
13
Seleccionar< / p>
Entrada
Estado-4
No
14
Salto de línea
Salida< / p>
Control-1
Sí
15
nError
En
Estado- 3
No
16
nInicializar
Fuera
Control-2
No
17
nSelect-Impresora
Fuera
Control-3
Sí
18-25
Tierra
-
-
-
Registro de puerto paralelo: p>
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 p>
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á.