Actualizando poco a poco

Cuando empece esta web por los años 2002 a 2003, no pensé que iba a mantenerse por tanto tiempo, actualmente mi tiempo no es el mismo y hay temas que aunque me apasionaron hace tiempo, por ahora no estoy tan metido como quisiera. Sin embargo he decido no dejar esta pagina en el olvido e ir actualizándola con los temas que veo ahora. Actualmente tengo más de 11 años trabajando con equipos de instrumentación ambiental, y por esto he decidido también agregar el tema Ambiental, donde espero poder compartir información relevante sobre este tema, y la experiencia que tengo que he podido adquirir en este tiempo. Si desean saber más sobre mi puede ver Aquí o en todo caso comunicarse conmigo mediante mi correo o redes sociales.

Por lo pronto les comparto la web sobre mi proyecto personal AirMet Report y la librería OpenAir, para R. Que particularmente me gusta bastante por lo fácil de manejar.

Próximamente espero estar colocando información sobre los dataloggers de Campbell Scientific y algunas consideraciones a tener respecto a la instalación de instrumentación ambiental

Saludos,

Yoel Ocmin

AirMet Report

AirMet Report, es un aplicativo/servicio web, de gestión de datos ambientales y meteorológicos,

El mismo que permite la generación de reportes gráficos, tablas, rosa de viento, rosa de contaminación, y exportar los datos a Excel en el formato de reporte de días x 24 horas.

Puedes ingresar a una demo del aplicativo desde acá: http://www.airmetrp.com

NOTAS:

  • No es un servicio gratuito. En caso de necesitar mayor detalles contactarse a eyog@proyectosfie.com y/o yoelocmin@gmail.com
  • Ha sido testeado con servidores web Apache e IIS (Windows: Server 2012, Server 2016, W7/W8/W10 /Linux: Debian, Ubuntu, RedHat) con soporte PHP desde 5.3/5.6. Y base de datos MySQL, Maria DB,  SQL Server y Express 2012/2016/2017.
  • La base de datos puede alimentarse mediante archivos de texto plano, archivos separados por comas (.dat/.csv), json, webservices o directamente de bases de datos MySQL/SQL Server. Y en caso de dataloggers Campbell Scientific, directamente desde el datalogger (Requiere servidor con IP Publica) y/o offline usando el software Loggernet DataBase.
  • Ultima version v1.2 (Octubre 2018)

Ambiental

En esta pagina voy a ir colocando temas relacionados a normativa, equipos ambientales, meteorología, gestión de datos.

AirMet Report

 

OpenAir

Usando el Puerto en Win NT / 2000 / XP /2003

Usando el Puerto en Win NT / 2000 / XP /2003


Seguro les ha pasado, que cuando han querido usar una libreria en Asm, Visual C++ o en otro lenguaje. Tal que el llamado al puerto sea a través de

 

in AL,DX
out DX,al
nos sale el siguiente error

Entonces, que hacemos?
La solucion es usar un Driver que nos permita acceder al puerto. Bueno en http://www.logiux4i.net existe una Dll, que tiene un Driver hwinterface.sys que nos permite accesar al puerto. la libreria se llama InpOut32.dll

Y que es lo que Hace ese Driver?
Lo muestro en el Grafico

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *


one + 4 =

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Tutorial uso Puerto Paralelo

Comenzando con el Puerto Paralelo

Uso, Aplicación y Simulación

Descripción:

Bueno, este es el primer tutorial que escribo de cómo usar el Puerto Paralelo. En casi todas las Pc’s que conozco hay un solo puerto y tiene como Registro Base 378H (Así q por ahora lo tomaré como un Standard). Para poder acceder al Puerto, se usaría fácilmente en C o en Asm Inxx(Port) y Outxx(Port,Dato). Pero actualmente los sistemas operativos son mezquinos así que para poder acceder a ellos debemos hacerlo mediante Drivers. (ver Aquí)

Pero para no preocuparnos por eso. Yo voy a usar la DLL InpOut32.Dll que

mediante 2 rutinas Inp32 y Out32, Resuelve el problema.

Además aquí voy a usar 3 tipos de codificación: Assembler, C++ y Visual Basic.

 

TERMINOLOGIA:

A lo largo de este tutorial, voy a ser uso de ciertos términos que considero que seria muy bueno que se conocieran antes.

Bit ‘1’   : Significa que la salida de esta puerta es 5V.

Bit ‘0’  : Significa que la salida es 0v.

Bit ‘X’  : Significa que no importa el valor de este bit, puede ser ‘1’ o ‘0’

Bit ‘~X’           : Significa que este dato es negado.

Registro: Arreglos de 8 Bits, que sirven para la configuración del Puerto Paralelo

 

Un Poco de Teoría.

Algo de Logica: And, Or, Xor:

Para comenzar, Estas operaciones son muy importantes, ya que nos permiten el

manejo del Puerto, cambiar Bits, invertirlos, enmascaralos. Como se vera a continuación:

 

And: Dato = Op1 And Op2 = Op1 & Op2

En pocas palabras, si Op2=’1’, no importa como sea Op1=’X’, la respuesta seria

Dato=’X’ ; Ahora si Op2=’0’ el dato=’0’

Es decir que si tenemos un Byte=(D7) (D6) (D5) (D4) (D3) (D2) (D1) (D0). Y

queremos quedarnos con el dato D7, D5, y D4. y que el resto sea ‘0’. Lo que

tendríamos que hacer es:

Result=Byte And 10110000b;// Result = Byte & B0;

Y nos quedaria:

 

Byte =

D7

D6

D5

D4

D3

D2

D1

D0

Operador

 

1

0

1

1

0

0

0

0

& = And

Result =

D7

0

D5

D4

0

0

0

0

//Muy interesante

 

Es decir que nos sirve para colocar los bits que deseamos a ‘0’

 

Or: Dato = Op1 Or Op2 = Op1 | Op2

En pocas palabras, si Op2=’1’ , no importa como sea Op1=’X’, la respuesta seria

Dato=’1’ ; Ahora si Op2=’0’ el dato=’X’

Es decir que si tenemos un Byte=(D7) (D6) (D5) (D4) (D3) (D2) (D1) (D0). Y

queremos que D7,D6, D4,D2 sean ‘1’ y el resto quede igual tendríamos que hacer:

Result=Byte or 11010100b;// Result= Byte | 0xD4

Y nos quedaría:

 

Byte  =

D7

D6

D5

D4

D3

D2

D1

D0

Operador

 

1

1

0

1

0

1

0

0

| = or

Result =

1

1

D5

1

D3

1

D1

D0

//Muy interesante

 

Es decir, que mediante una Or podemos obligar a que la respuesta sea ‘1’.

 

Xor: Dato = Op1 Xor Op2 = Op1 ^ Op2

En pocas palabras, si Op2=’1’ , no importa como sea Op1=’X’, la respuesta seria

Dato=’~X’ ; Ahora si Op2=’0’ el dato=’X’. Es decir que invierte el Bit donde

encuentra Op=’1’

Es decir que si tenemos un Byte=(D7) (D6) (D5) (D4) (D3) (D2) (D1) (D0). Y

queremos invertir D7, D5, y D4. lo que tendríamos que hacer es:

Result = Byte Xor 10110000b;// Result = Byte ^ B0

Y nos quedaria:

 

Byte  =

D7

D6

D5

D4

D3

D2

D1

D0

Operador

 

1

0

1

1

0

0

0

0

^ = Xor

Result =

~D7

D6

~D5

~D4

D3

D2

D1

D0

//Muy interesante

 

Es decir, nos permite invertir el Bit donde esta con ‘1’

 

Bueno, Espero que este claro lo de las operaciones lógicas. Si no revisen su libro de principios de sistemas digitales. 😀 😉

 

Aprendiendo como funciona mi Puerto Paralelo:

Aquí, no voy a redundar en los pines, es decir, no voy a detallar cuales son y su numeración, por que de eso ya hay bastante en la Web, y ya he puerto información en la sección Puertos de mi web.

 

Bueno, para manejar el puerto paralelo, hay q saber acerca de sus registros. Que Son 3 BaseEstado Control.

 La dirección de la mayoría de Pc’s q conozco, esta en 378h. Aunque puede variar

dependiendo del SO q uses. Yo lo voy ha usar como un Estándar para este tutorial.

 

Descripción de Registros:

 Registro de Datos. (Su dirección es 378h = Dirección Base).

D7

D6

D5

D4

D3

D2

D1

D0

 

Este registro es de 8 bits. Es por aquí q enviamos la información hacia el exterior. Ejm Activamos un Led, un Relé, Motores DC, Motores a pasos.

Una Alarma. Lo que nos imaginemos. O también recibimos datos. Ejm: Señal de un ADC para digitalizar una señal externa.

Por defecto, solo funciona como Salidas, pero es posible Hacerla funcionar como entrada. Para esto hay q modificar en Bit 5 del Registro de Control.

Esto se explica mas abajo con mucho mas cuidado

Dependiendo del lenguaje de programación q uses, la sintaxis es :

Outxxx (378h,Dato).

Ejemplo en C++ Usando la Librería InpOut32.dll

#include "stdafx.h"
#include "Iostream.h"

//Definimos los prototipos de nuestras funciones
//Recuerdese q se debe agregar a la etapa de Link, el archivo InpOut32.lib
short _stdcall Inp32(short PortAddress);
void _stdcall Out32(short PortAddress, short data);

void main(void)
{
 short data;
 data=Inp32(0x378);
 cout<<"El Registro Estado es: "<<data<<"\n";
 return; 
}

 

Ejemplo en Assembler – Para DOS

.model small
.code

mov al,11111111b; Mandamos q todas las salidas sean ‘1’
mov dx,378h

in  dx,al

mov ah,4ch
int 21h
end

 

 

Registro de Estado (Su dirección es 379h) (Dirección Base +1).

 

 

~S7

S6

S5

S4

S3

X

X

X

 

 

Este registro es de solo Entradas, pero solo es de 5 Bits.

Donde:

~S7     :Significa que este dato esta invertido.

X         :Significa que su valor es indeterminado.

Para obtener el Valor Real de Este registro, tenemos que enmascarlo, Haciendo un Xor con 128 o su equivalente 80h ó 0x80 para C o &H80 en Basic o en binario 10000000b , donde se observa q el bit a cambiar debe ser el 8vo. Y luego un And por 248=0xF80=11111000b (En este ultimo se observa que los valores con los que te debes quedar son los 5 ultimos).

Este Registro lo podemos usar por ejemplo para ver la entrada de sensores.

Donde para obtener el valor Real su Sintaxis seria:

Estado = Inxxx(379H)  Xor  0x80 And 0xF8.

En C:   Estado = (Inp32(0x379) ^ 0x80) & 0xF8

 

Ejemplo en C para obtener: Valor Real del Registro de Datos

#include "stdafx.h"
#include "Iostream.h"

//observar que se debe agregar al Link el archivo InpOut32.lib

short _stdcall Inp32(short PortAddress);
void _stdcall Out32(short PortAddress, short data);

void main(void)
{ short estado;
  estado=Inp32(0x379);

//Este codigo es el Equivalente en Asm para
// Estado = (Inp32(0x379) ^ 0x80) & 0xF8
_asm xor estado,10000000b
_asm and estado,0xF8

cout<<"El Registro Estado es: "<<estado<<"\n";
return; }

 

 

Registro de Control. (37Ah) (Dirección Base +2)

 

Este registro, es bidireccional. Sus datos son

 

X

X

X

X

~C3

C2

C1

C0

 

 

Ahora para invertir las señales C3, C1 y C0

Tenemos que hacerle un xor con 00001011b y para quedarnos con el dato valido, le hacemos un And con 0xF=00001111b

Ejm:

control = (Outxx(37AH) Xor 1011b ) And 0xF.

En C: control = (Out32(37AH) ^0x0B ) & 0xF.

 

Este Registro es muy importante, ya  nos permite colocar al puerto paralelo en modo Bidireccional. Es decir se puede tambien recibir datos por el Registro de Datos. Por ahora siempre lo mandare a 0, es decir q sea Salida. Pero si quisiera hacerlo entrada, tendría q colocar el Bit5 equivalente a C5 en ‘1’.

La Sintaxis para hacerlo Bidireccional es:

Int Caso=1 o 0 ;Según quiera 1=Input, 0=Output

control= Outxx(0x37A,((caso <<5) or (Inxxx(0x37A) And 11011111)

En C:   control =Out32(0x37A,((caso<<5) | (Inp32(0x37A) & 0xDF

Con caso<<5, significa rotamos 5 veces a la Izq a caso .

//Ejemplo en C para Obtener el Valor, que tiene el Registro de Control.
#include "stdafx.h"
#include "Iostream.h"
//observar que se debe agregar al Link el archivo InpOut32.lib
short _stdcall Inp32(short PortAddress);
void _stdcall Out32(short PortAddress, short data);
void main(void)
{
short control;
control=Inp32(0x37A);
//El codigo que viene es Equivalente
// control = (Out32(37AH) ^0x0B ) & 0xF
_asm xor control,1011b
_asm and control,0xF //Para Quedarnos con los 4 Primeros Bits
cout<<"El Registro Control es: "<<control<<"\n";
return;
}

 

Prueba del Puerto de cómo hacerlo Bidireccional, este programa te mostrara como queda el control si lo pones en modo Bidireccional. No hace el cambio por obvios motivos. Pero si lo quieres probar, al final coloca Out32(0x37A,control);

Y ya estara en modo Bidireccional:

// bidire.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "Iostream.h"

//observar que se debe agregar al Link el archivo InpOut32.lib
short _stdcall Inp32(short PortAddress);
void _stdcall Out32(short PortAddress, short data);

void main(void)
{
short caso,control;
caso=1;//Suponiendo q lo quiero hacer Bidireccional

// Dato= Outxx(0x37A,((caso <<5) or (Inxxx(0x37A) And 11011111)
control=Inp32(0x37A);
cout<<"Tenemos en Control: "<<control<<"\n";

_asm and control,11011111b
_asm rol caso,5 //caso=caso>>5; //Roto caso 5 bits
_asm mov ax,caso //control =control or caso
_asm or control,ax

cout<<"Lo que enviariamos seria: "<<control<<"\n";

return;

}

 

Mas información de esto lo puedes encontrar en mi web, o puedes escribirme a mi e-Mail : yoelocmin@hotmail.com

http://proyectosfie.tk

 

Haciendo lo que vinimos:

Para comenzar, he hecho un pequeño programa. En visual Basic.

 

Pero como!!!

Bueno, Sabemos que Visual Basic no permite manejar el Puerto Paralelo, pero nuestra DLL , ES por eso que lo adjuntaremos, mediante un archivo obj:

 InpOut32.bas

'Declaramos las Variables de la Dll
'Aquí declaramos como función a Inp32
'Ya q lo que hace es devolvernos el valor q indica la dirección que se le Asigne.

Public Declare Function Leer Lib "Inpout32.dll" _
Alias "Inp32" (ByVal PortAddress As Integer) As Byte
'Aquí declaramos como una Subrutina a Out32
'Ya que no devuelve ningun valor.
Public Declare Sub Escribir Lib "Inpout32.dll" _
Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Byte)
'Aquí estoy declarando esta Api de Windows, para usarlo en los retardos.
Public Declare Sub Sleep Lib "Kernel32.dll" (ByVal PortAddress As Integer)

 

Nuestro Programita tiene la Forma:

Las caracteristicas basicas de los controles son:

Control

Nombre

Caption

Form

FrmLeds

Prendiendo Leds

Button

CmdD0

D&0

Button

CmdD1

D&1

Button

CmdD2

D&2

Button

CmdD3

D&3

Button

CmdD4

D&4

Button

CmdD5

D&5

Button

CmdD6

D&6

Button

CmdD7

D&7

Button

CmdEfe1

&Derecha

Button

CmdEfe1

&Izquierda

Button

CmdAbout

&About

Donde su Código Correspondiente es:

Form1.frm

'Declaramos las variables generales
Dim Dato As Byte 'Dato es usado por todos las Subrutinas

Private Sub CmdAbout_Click()
 'Muestro Mensaje en Pantalla: el vbCrLf es equivalente a ENTER
 MsgBox "Prendiendo Leds " + vbCrLf + vbCrLf + " por:" + vbCrLf + " Yoel Ocmin " + _
 vbCrLf + vbCrLf + "yoelocmin@hotmail.com" + vbCrLf + "http://proyectosfie.tk", _
 vbQuestion, "Acerca..."
End Sub

Private Sub CmdD0_Click()
 Dato = Leer(&H378) Xor &H1 'Cambio el Bit 1=Lsb=D0
 Envia
End Sub

Private Sub CmdD1_Click()
 Dato = Leer(&H378) Xor &H2 'Cambio el Bit 2
 Envia
End Sub

Private Sub CmdD2_Click()
 Dato = Leer(&H378) Xor &H4 'Cambio el Bit 3
 Envia
End Sub

Private Sub CmdD3_Click()
 Dato = Leer(&H378) Xor &H8 'Cambio el Bit 4
 Envia
End Sub

Private Sub CmdD4_Click()
 Dato = Leer(&H378) Xor &H10 'Cambio el Bit 5
 Envia
End Sub

Private Sub CmdD5_Click()
 Dato = Leer(&H378) Xor &H20 'Cambio el Bit 6
 Envia
End Sub

Private Sub CmdD6_Click()
 Dato = Leer(&H378) Xor &H40 'Cambio el Bit 7
 Envia
End Sub

Private Sub CmdD7_Click()
 Dato = Leer(&H378) Xor &H80 'Cambio el Bit 8 =MsB=D7
 Envia
End Sub

Private Sub CmdEfe1_Click()
 'Efecto '1':
 'Rotamos un Bit del LSB -> MSB
 'VB, no tiene la funcion rotar Bit, haci que lo q
 'Colocar en Dato=00000001 y multiplicarlo por 2
 ' Dato=00000010 ->Roto un Bit
 'Si lo multiplico nuevamente.
 ' Dato=00000100 ->Roto un Bit
 'Y asi sucesivamente hasta q llega al Octavo Bit.

 Dato = 1

 While Dato < &H80
  Envia
  Sleep 250 'Ocaciono un retardo de 250 milisegundos
  Dato = Dato * 2
 Wend

 Envia ' como no se envio el ultimo bit se lo envia recien
 Sleep 250 '
 Dato = 0 'Reseteamos el Puerto.
 Envia
 Sleep 250

End Sub

Private Sub CmdEfe2_Click()
 'Efecto '2':
 'Rotamos un Bit del MSB -> LSB
 'VB, no tiene la funcion rotar Bit, haci que lo q
 'Colocar en Dato=10000000 y Dividimos por 2
 ' Dato=01000000 ->Roto un Bit
 'Si lo multiplico nuevamente.
 ' Dato=00100000 ->Roto un Bit
 'Y asi sucesivamente hasta q llega al Primer Bit.
 Dato = &H80
 While Dato > &H1
  Envia
  Sleep 250
  Dato = Dato / 2
 Wend

 Envia
 Dato = 0
 Sleep 250
 Envia
 Sleep 250
End Sub

Private Sub Form_Load()
 'Al iniciar a cargar el Form, reiniciamos el Puerto
 Escribir &H378, 0
End Sub

Private Sub Envia()
 'Solo envia el Dato al Pueto Paralelo
 Escribir &H378, Dato
End Sub

Bueno Eso es Todo con Respecto a Visual Basic.

 

Simulación:

Bueno ahora, vamos a Hacer un Circuito y simular el programa.

Como!!!

Bueno, uno puede simular el programa hecho en Visual Basic, con otro programa. Yo voy a usar el Proteus Lite – Isis. Para ello voy a necesitar la librería y modelo Respectivo. Se llaman Modelo : Port.dll y Library: Lpt02.lib

Se supone que debe estar junto a este archivo, en al versión comprimida, pero si no es así bajatela de la seccion Proteus de mi pagina web.

http://proyectosfie.com

OJO:

Esa Librería y Modelo son de mi cosecha.

Otra cosa. El Esquemático que acompaña el archivo fue hecho con la versión 6.3

sp1, que la puedes descargar del enlace q’ indica mi Web en la sección Proteus

Si te bajas esa versión no te olvides colocarle los 2 parches respectivos para su

buen funcionamiento.

Por Ahora, creo que con poner el Esquema es Suficiente, para la simulación usa las Librerías:

{ACTIVE}: LED-YELLOW    :Led amarillo

{ACTIVE}: RES           :Resistencia de 330

{LPT02}:LPT02           :Puerto Paralelo Virtual

Ahora, no es necesario que explique el circuito, porque creo q con el esquema es

mas que suficiente.

Ahora dale a simular y Ejecuta el programa de prueba:

Y Ya Esta:

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *


7 − = four

This site uses Akismet to reduce spam. Learn how your comment data is processed.

PUERTO PARALELO

Introduccion

Existen dos metodos, de transmistir un dato hacia un periferico basicamente ( Serie / Paralelo).

El envio de datos en forma paralela, es el que se usa en una impresora, basicamente, y actualmente tiene 5 modos

Ordenador – Periférico :Compatibility Mode : “Centronics” en modo standard.
Periférico – Ordenador : Byte Mode : 8 bits al mismo tiempo usando líneas de datos, algunas veces puede funcionar como un puerto bi-direccional.
Bi-direccional 
EPP : Puerto Paralelo Ampliado, usado principalmente por periféricos como: CD-ROM, cintas, discos duros, adaptadores de redes, etc. excluyendo las impresoras.
ECP : Puerto con Capacidad Extendida, usado principalmente por scanners e impresoras de nueva generación

Hardware

Primero vamos a ver su Hardware Respectivo:

Donde se diferencian claramente, 3 tipos de Letras, C, S, D. Cada una de estas se refieren al pin respectivo del registro que usan:

C: Hace Referencia al Registro de Control

S: Registro de Estado

D: Registro de Datos

Tabla general del puerto paralelo

DB25
Señal
Registro
Tipo
Activo
Sentido
1
Control 0
C0 –
Inout
Bajo
Invertido
2
Dato 0
D0
Out
Alto
Directo
3
Dato 1
D1
Out
Alto
Directo
4
Dato 2
D2
Out
Alto
Directo
5
Dato 3
D3
Out
Alto
Directo
6
Dato 4
D4
Out
Alto
Directo
7
Dato 5
D5
Out
Alto
Directo
8
Dato 6
D6
Out
Alto
Directo
9
Dato 7
D7
Out
Alto
Directo
10
Estado 6
S6
In
Alto
Directo
11
Estado 7
S7-
In
Bajo
Invertido
12
Estado 5
S5
In
Alto
Directo
13
Estado 4
S4
In
Alto
Directo
14
Control 1
C1-
Inout
Bajo
Invertido
15
Estado 3
S3
In
Alto
Directo
16
Control 2
C2
Inout
Alto
Directo
17
Control 3
C3-
Inout
Bajo
Invertido
18-25
Tierra

LOS REGISTROS

Para usar este puerto, se debe tener en cuenta la direccion Base del puerto, que se encuentran en la Bios en las direcciones

0000:0408 Dirección base para LPT1
0000:040A Dirección base para LPT2, generalment 378H
0000:040C Dirección base para LPT3
0000:040E Dirección base para LPT4

Ahora teniendo esta direccion podemos ir a los demas registros siguiendo el siguiente orden:

Registro Datos Base
Registro Estado Base + 1
Registro Control Base + 2

REGISTRO De DATOS

Usado para enviar y recibir datos de 8 Bits, segun este configurado, el 5to bit del Registro de control, o la Bios (Esto se configura en el Setup)

Para el puerto paralelo, casi siempre es 378H (LPT2)

REGISTRO de ESTADO

~S7 S6 S5 S4 S3      

Tiene el Ultimo Bit negado, y solo recibe 5 Bits … en el LPT2 su direccion es 379H. Solo basta saber que por aqui siempre se pueden recibir datos

sus bits tambien sirven para que cuando haya comunicacion con una impresora, sirvan para indicar si el puerto esta ocupado o no. Para este caso se usa:

S3 Error (FAULT)
S4 SEL
S5 Papel Vacio
S6 Acuse de Recibo (ACKNOWLEDGE)
~S7 BUSSY (Ocupado)

REGISTRO DE CONTROL

        ~C3 C2 ~C1 ~C0

Al igual que el Registro de Estado, sirve para establecer comunicación con la impresora, pero además de eso, también nos sirve, para indicar si queremos que la impresora sea Bi-direccional. Para el LPT2 su dirección es 37AH

Pin
Nombre
Bit
~C0
Strobe
Bit 0
~C1
Nueva línea automática
Bit 1
C2
Inicializa impresora
Bit 2
~C3
Selecciona impresora
Bit 3
  Permite IRQ através de la línea acknowledge
Bit 4
  Permite puerto Bidireccional
Bit 5

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *


nine + 4 =

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Puerto Serie

INTRODUCCION

El puerto serie de un ordenador es un adaptador asíncrono utilizado para poder intercomunicar varios ordenadores entre sí.

Un puerto serie recibe y envía información fuera del ordenador mediante un determinado software de comunicación o un driver del puerto serie.

El software envía la información al puerto carácter a carácter, conviertiéndolo en una señal que puede ser enviada por un cable serie o un módem.

Cuando se ha recibido un carácter, el puerto serie envía una señal por medio de una interrupción indicando que el carácter está listo. Cuando el ordenador ve la señal, los servicios del puerto serie leen el carácter

Direcciones

  • El puerto serie utiliza direcciones y una línea de señales, un IRQ para llamar la atención del procesador. Además el software de control debe conocer la dirección.
  • La mayoría de los puertos series utilizan direcciones standard predefinidas. Éstas están descritas normalmente en base hexadecimal. Cuando se instala un nuevo puerto, normalmente se mueve un jumper o switch para seleccionar un puerto (COM1, COM2, COM3, etc., con lo que se asigna una dirección y una interrupción usada por la tarjeta del puerto.
  • Las direcciones e IRQ usadas por los puertos serie fueron definidas al diseñar el ordenador originalmente ; sin embargo, las del COM3 y COM4 no se han definido oficialmente, aunque están aceptadas por convenios.

Las señales son :

Dirección

Interrupción

(IRQ)

COM1

3F8

4

COM2

2F8

3

COM3

3E8

4

COM4

2E8

3

  •  Se pueden añadir gran cantidad de puertos serie a un PC, ya que existe gran flexibilidad a la hora de definir direcciones no standard, siempre que se encuentren entre el rango 100 y 3FF hexadecimal y siempre que no entren en conflicto con otros dispositivos.

Conectores

  •  En nuestros PC’s, se emplea como conector del interface serie un terminal macho al que llamaremos DTE (Data Terminal Equipment) que, a través de un cable conectamos a un periférico que posee un conector hembra al que llamaremos DCE (Data Comumunications Equipment). En nuestro terminal DTE, tenemos las siguientes conexiones (para un conector DB-25):

PIN

Nombre

Dirección

Función

1

P.G.

Tierra de seguridad

2

TD

–>DCE

Salida datos DTE

3

RD

–>DTE

Entrada de datos DTE

4

RTS

–>DCE

Petición de emisión DTE

5

CTS

–>DTE

Listo para trasmitir DCE

6

DSR

–>DTE

CE listo para com. con DTE

7

GND

Masa común del circuito

8

DCD

–>DTE

Detección de portadora

20

DTR

–>DCE

Señal de terminal disponible

23

DSRD

<–>

Indicador de velocidad de Tx.

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *


three + = 4

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Bienvenidos

Hola amigos,

He agregado un par de temas nuevos,  con lo que trabajo en mi día a día.

En caso de querer contactarse conmigo usen los correos yoelocmin@gmail.com y/o eyog@proyectosfie.com

Yoel

13/11/2018


Hola Amigos,

Las cantidad de información que se puedo obtener hoy en dia es enorme, y esto hace que sea necesario cambiar el enfoque hacia algo más dinámico. Es por eso que me decidí renovar la web después de casi 5 años :) . Hoy 05/11/2013, he empezado ha realizar estos cambios, primero variando el aspecto, y pronto agregando mas contenido.

Espero que esto sea de su agrado.

Saludos,

Yoel Ocmin

3 comentarios en “Bienvenidos

  1. Alejandro Pineda Palma

    Un cordial saludo
    Yoel ocmin

    Primero que nada quisiera agradecerte por tu trabajo y que nos hagas posible utilizarlo,
    Te contacto por que necesito simular una interfaz de un motor, por medio del puerto paralelo y me sirve de alguna forma tu aplicación de led´s el, problema que tengo es que cuando simulo el programa me presenta el error de “createactivemodel” no se encuentra en port.dll, te agradecería mucho si me pudieras orientar sobre como corregirlo, de antemano muchas gracias y que tengas un excelente día.

    Saludos
    Alejandro pineda palma

    Responder
  2. Ing. Bryam Huamanchumo Baca

    Buenos días Yoel, un gusto tenerte de vuelta, recuerdo aquellos tiempos como eso de a mediados del 2007, aquella tarde que cuando esta probando el enlace proteus con visual basic por medio del compim, esa información no había en ningún lado de la web. Recuerdo que con mucho esfuerzo logre hacer solo la transmisión de proteus al visual basic 6, pero no me funciona la recepción de enviar datos del visual basic a proteus y logré contactar contigo y tu lograste realizar la comunicación de recepción. Por eso tuve muchos frutos mi website denominada http://www.mikroingenieria.com que ahora tengo varios seguidores por varios países del mundo de diversos idiomas. muchas gracias te doy por el apoyo Yoel, y que tu website siga dando frutos como en aquellos tiempos de estudios en la universidad. Saludos y muchos éxitos

    Responder
    1. yoelocmin Autor de la entrada

      Hola Bryan, gracias por el comentario. Ha pasado mucho tiempo desde entonces, he dejado la web para que pueda ser de utilidad a personas que recién inician en el mundo de la programación vinculada a la electronica, ahora hay muchas plataformas, demasiadas quizás pero me alegra ser de ayuda.
      Actualmente estoy mas ligado a sistemas embebidos principalmente Linux en sus diversas plataformas, cualquier cosa estamos en contacto igual. Y felicitaciones por tu web, que la he seguido poco a poco y he visto crecer muy bien.

      Saludos,

      Ing. Yoel Ocmin

      Responder

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *


1 + seven =

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Recursos

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *


three + 1 =

This site uses Akismet to reduce spam. Learn how your comment data is processed.