[Electronica y programación] manejo del puerto paralelo...

Iniciado por BADBYTE-K, 27 Noviembre 2004, 11:11 AM

0 Miembros y 1 Visitante están viendo este tema.

CarWarlock

#60
Buenas.

Es verdad el Link no chuta un fallo técnico  ;D

a ver ahora:
http://www.beyondlogic.org/porttalk/porttalk.htm


Salu2

BADBYTE-K

huerto123:
put the source code, we need see the code to attempt help you

CarWarlock:
ahora si  va, muy buen link, alguien probo el driver ya?

saludox

CarWarlock

Buenas.

Yo mismo lo he probado, por ejemplo programas basados en MS-DOS en los que usaba el puerto paralelo, con este driver  en el XP me han funcionado sin nigún problema, doy fe de ello.

Saludos

Carmelo.

andesgui

Hola.
Yo estuve programando el puerto paralelo desde delphi con la libreria InpOut32.dll bajo win xp y 2003 el tema era que en una maquina me andaba y en la otra no (las 2 con winxp) cuando volvi a la que andaba me di cuenta que el archivo Inpout32.dll ocupaba mas asi es que lo lleve a la otra maquina en la que no andaba y salio corriendo lo mas bien.
Asi que verifiquen que tengan la ultima version de ese archivo, en mi caso ocupa 32.768 bytes a comparacion de 27.648 que fue la que baje en la otra maquina (la que no andaba).
Aqui pongo el codiogo que use en delphi, (para Trinchera que preguntaba) por supuesto que hay que poner el archivo inpout32.dll en la misma carpeta que el proyecto o en su defecto en la carpeta de sistema, si no, no anda. Espero que les sea de utilidad

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Spin, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Timer1: TTimer;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Label1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function inportb(EndPorta: Integer): BYTE stdcall; external 'inpout32.DLL' name 'Inp32';
procedure outportb(EndPorta: Integer; Valor:BYTE); stdcall; external 'inpout32.DLL' name 'Out32';

procedure TForm1.Button1Click(Sender: TObject);
begin
        outportb($378,255); //pone el byte del puerto paralelo D0...D7 en alto  (5 volts)
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
        outportb($378,0); //pone el byte del puerto paralelo D0...D7 en bajo (0 volts)
end;

procedure TForm1.Label1Click(Sender: TObject);
begin
        Label1.Caption := IntToStr( inportb($379) ); //lee el byte de STATUS
end;

end.

andesgui

Necesito ayuda con algun algoritmo para que el byte de datos siga como tal y por el salgan todos los datos que queiro hacer llegar a un circuito en particular pero que ademas con algun pin del byte de status pueda generar un reloj. o sea que en ese pin la salida sea lo mas constante posible y cuadrada. mientras yo pongo a gusto y piachere los datos sin estar pendiente a cada rato de poner un bajo y alto al dicho pìn.
No se si me explico bien.
A ver si a alguien se le ocurre algo?
desde ya gracias.

Jbom

Estoy intentando hacer un programa tipo osciloscopio, lo que pasa que ando algo perdido, se programar en VB y se mas o menos como tratar con los puertos. Pero no tengo ni idea que maximo vontaje puedo meter por el puerto, aunque eso no es problema por que cuando sea mucho puedo poner un atenuador. Solo quiero saber como leo los voltios que me entran por un pin del puerto paralelo. En definitiva como tendria que abordar para hacer un osciloscopio.

Salu2

andesgui

Hay varias limitaciones en construir un osciloscopio para pc por puerto paralelo. La mas importante es que no se alcanzan velocidades aceptables y por internet hay un monton de software ociloscopio por entrada de placa de sonido que llegan casi a los 40 khz en frecuencia de lectura.
Por otro lado por el puerto paralelo no podes meter mas de 5 voltios, pero no podrias leer las diferencias entre 0 y 5 vols, porque trabaja digitalmente y solo reconoce dos estados el 0v nivel bajo y 5v nivel alto, para reconocer las distintas diferencias de voltaje necesitas acoplar un adc (convertidor analogico a digital) como puede ser el adc0804.

en esta pagina hay un data logger o adquisidor de datos:

http://www.quasarelectronics.com/3112.htm

andesgui

huerto123

tu pregunta me hizo ir al primer mensaje de este hilo y al leerlo conteste parcialmente mi duda, vamos lo que dijo BADBYTE-K:

podemos ordenar cada uno de los bytes

Dataport

pin 2 - D0
pin 3 - D1
pin 4 - D2
pin 5 - D3
pin 6 - D4
pin 7 - D5
pin 8 - D6
pin 9 - D7



Statusport

pin 10 - ACK
pin 11 - BUSY
pin 12 - PAPER END
pin 13 - SELECT IN

pin 15  - ERROR


ControlPort

pin 1 - STROBE
pin 14 - AUTO FEED
pin 16 - INIT
pin 17 - SELECT


la parte de GND, son los tierra
del 18 al 25

para saber cual pin es cual, acercate a tu puerto paralelo y te daras cuenta que a la par de cada terminal
tiene su numero, cuidado con conectar al revez la cosas xD

en resumen podemos decir esto:

el Dataport se usa como salida
el Statusport se usa como entrada
el controlport se usa de las dos formas anteriores

por lo tanto en tu caso en vez de conectar en los pines ACK y BUSY lo conectas en dos de los pines del control port ya que desde la cpu vas a poner esos bit en uno y asi se puede.
por ejemplo el cable que sale del cronografo y que va al ACK lo conectas en AUTOFEED, y el que va a BUSY lo conectas a INIT.
Espero que haya sido de utilidad.

andesgui

No entiendo bien lo que queres hacer. pero otra duda, que cable usas para conectar las dos pcs?
un paralelo de pin a pin? o un paralelo laplink como el que hay en esta pagina:

http://hwb.sunsite.dk/ca_InterLink.html

si el cable es pin a pin no creo que ande muy bien la cosa.

Jbom

andesgui lo que yo quiero hacer es conectar la salida de una etapa de potencia de un coche para ver la onda para equializar todo el equipo. Por la tarjeta de sonido podria??