En el arranque de la CPU porque ¿Arrancar mi dispositivo conectado en ParallelPort?

0

Estoy usando ParallelPort para comunicarme con One Electric Device.

Mi tarea en ParallelPort es simplemente iniciar y detener el dispositivo. Para eso he escrito el siguiente código: [Mi código está escrito en C # .Net]

Uno static Clase ParellelPort que contiene el Método static extern void Output(int address, int value) .

public static class ParellelPort
    {
        [DllImport("inpout32.dll",EntryPoint = "Out32")]
        public static extern void Output(int address, int value);
    }

Usando ese método

Escribo algo en ParallelPort en mi caso solo escribo 1 y 0.

Para iniciar y detener el dispositivo. Estoy usando el siguiente Código.

private const int PORT_ADDRESS = 0x0378;
int startMachine = 1;
int stopMachine = 0;

ParellelPort.Output(PORT_ADDRESS, startMachine); //For starting Device.

ParellelPort.Output(PORT_ADDRESS, stopMachine);//For Stoping Device.

Ahora mi PROBLEMA ES,

Siempre que estoy iniciando la CPU, esto causa que el dispositivo se inicie automáticamente, ya que la CPU está escribiendo en paralelo

Puerto cada vez que comienza.

Entonces, al iniciar la CPU, inicie mi DISPOSITIVO. Necesito deshacerme de él.

¿Hay alguna forma de deshabilitar ParallelPort o una forma como esta para deshacerse de él?

NOTA:

Estoy usando PIN-2 para Comunicar con mi dispositivo.

Cada vez que escribo value = 1 en ParallelPort 5 voltios está disponible en PIN-2 y

Cuando escriba valor = 0 en ParallelPort 0 voltios está disponible en PIN-2 (esta causa detiene mi dispositivo) .

Y cada vez que la CPU inicie 5 voltios está disponible en cada Pin de DataPort desde PIN-2 a PIN-9.

Gracias .....

    
pregunta Aryan SuryaWansi

3 respuestas

1

La forma más sencilla sería mirar dos pines de puertos paralelos y usar una pequeña cantidad de lógica.

Si observa los pines 2 y 3, por ejemplo, puede hacer lo siguiente:

  • Si tanto el pin 2 como el 3 están desactivados, el dispositivo debería estar apagado .
  • Si el pin 2 está activado pero el pin 3 está apagado, el dispositivo debería estar activado .
  • Si tanto el pin 2 como el 3 están activados, el dispositivo debería estar desactivado

Esto se llama "Exclusive Or" o XOR y la tabla de verdad es la siguiente:

A   B   OUT
0   0   0
0   1   1
1   0   1
1   1   0

Hay muchas formas de implementar esto en hardware; la más sencilla es probablemente usar el chip lógico 74xx86 (por ejemplo, 74ls86 o 74hc86). Este contiene 4 compuertas XOR, cada una de las cuales tiene 2 entradas (puede obtener otras cantidades de entrada y densidades de chip).

Por ejemplo:

Quepodríaconvertirseenuncircuitocomotal:

    
respondido por el Majenko
0

Si la operación falsa de su dispositivo es potencialmente un problema, debe desconectarlo o mantenerlo apagado, excepto cuando el software se esté ejecutando, o hacer que el esquema de encendido sea más complicado. Por ejemplo, podría usar un microcontrolador o un CPLD para solicitar que se envíe una secuencia de valores para "desbloquear" el dispositivo; cuanto más larga sea la secuencia, menos probabilidades hay de que se active accidentalmente.

No olvides que la computadora podría fallar y reiniciarse al azar.

Un montón de cosas de control de movimiento de puerto paralelo pueden haber sido capaces de evitar preocuparse por esto si se usan motores paso a paso; allí se necesitan bastantes impulsos para mover los motores a una distancia considerable, pero si está encendiendo o apagando un motor, tiene un sistema que puede funcionar fácilmente si el software o el sistema operativo hace algo inesperado. Donde hay motores involucrados, un gran botón de "Parada de emergencia" al que se llega fácilmente y que ignora eléctricamente el software no solo es una buena idea, sino que en muchos casos puede ser un requisito reglamentario.

Dado que los puertos paralelos direccionables por bit son cada vez más difíciles de encontrar, una solución de microcontrolador también podría ofrecerle opciones de interfaz adicionales: serie o usb (ya sea nativo o como un convertidor usb-serie).

    
respondido por el Chris Stratton
0

Estas son alternativas simples a la mejor pero más compleja respuesta de hardware de Matt. Pueden o no funcionar. Si tienen una solución simple PERO que podría dejar de funcionar en el futuro. Comprender por qué está haciendo lo que hace es un primer paso para arreglar las cosas. Ver Matt & Las respuestas de Chris para esto.

Posibles correcciones:

  • Considere escribir un comando de DETENER tan pronto como su programa obtenga el control. Esto no detendrá la "falla" de inicio, pero PUEDE hacerla insignificante. (Hace mucho tiempo tuve un sistema que solía despollar el carrete para enrollar la cinta de datos en el piso por el mismo motivo :-)).

  • Considere probar la lógica invertida con high = stop y low = go. Esto puede o no funcionar dependiendo de otros factores.

Una solución sin energía "Heath Robinson" relacionada con la solución de compuerta XOR.

NO se requiere fuente de alimentación, muy compacta.

Esto implementa

  • (Pin2 Y NO (PIN3)). es decir,

  • Aumenta la salida solo cuando Pin2 = alto y Pin3 = bajo.

Entonces:"El dispositivo será alto (V +) solo cuando P2p3 = hI / lO.

"Dispositivo" permanecerá bajo para hi / hi, lo / hi, lo / lo.

Responde a tu pregunta: "creo que solo tengo que poner NO gate ... en mi opinión ..... ¿no es así?"

Respuesta: Tal vez!

Como dije, esto PUEDE funcionar, dependiendo de otros factores. Si la línea se baja y se levanta varias veces durante la configuración, puede fallar.

Para obtener un resultado determinado, vea la respuesta de Matt o mi transistor solo en la puerta de arriba.

Si confía en una solución de "puerta", necesita una solución donde la salida esté activa solo cuando una entrada es alta y la otra es baja. Matt hace esto con un XOR. Mi transistor es efectivamente un AND en el que una entrada DEBE estar invertida. Out = (A y / B) donde / = inversion.

    
respondido por el Russell McMahon

Lea otras preguntas en las etiquetas