Foros del Web » Soporte técnico » Hardware »

Atuda porfavor...

Estas en el tema de Atuda porfavor... en el foro de Hardware en Foros del Web. Hola... Tengo un pequeño problema. Se programar C y quiero poder accesar al hardware de mi copmutadore con un programa para mas adelante escribir drivers ...
  #1 (permalink)  
Antiguo 31/05/2003, 17:07
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Atuda porfavor...

Hola...

Tengo un pequeño problema.
Se programar C y quiero poder accesar al hardware de mi copmutadore con un programa para mas adelante escribir drivers pero como lo hago.
En el foro de programacion no supieron decir, entoces acudo a este para ver si aqui si me pueden ayudar.

Por ejemplo: tengo una impresora. como controlarla con un programa hecho en C? Que instrucciones son.
Me dicen algo de unas direcciones y si las tengo pero como las uso.
Si tengo un parato conectado al puerto com como manejarlo y asi??
Gracias
Saludos
  #2 (permalink)  
Antiguo 03/06/2003, 09:54
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Hola Instru, como ves también rondo por estos lares.

Si lo que quieres es imprimir desde MSDOS, lo mejor es abrir el archivo LPT1 como te habia recomendado una vez.

Si quieres hacer otro tipo de cosas, quizá utilizando interrupciones, es un tema muy amplio que te tocará investigar la mayoría por tu cuenta.

Yo te investigo la dirección del puerto y a ver si mañana te digo cual es (esta en unos libros en mi casa)

Saludos

==========================================

Aqui esta lo del puero paralelo, todo esto viene del libro "DOS 5 A developers guide - Advanced programming guide to DOS" de Al Williams ed. M&T books.

Para las harware interrupts de LPT1:
offset: 003CH
Interrupcion: 0FH
IRQ: 7

Para ejecutar una interrupción usas unos registros (AH, AL, DX,...) en los cuales pones la información, los valores que quieres, y el numero de interrupción que quieres usar, luego llamas a la función de genera la interrupción: int86() .

ahora te pongo las funciones literalmente:

------------------------------------------------------------
PRINTER SERVICES - ROM BIOS SERVICES

int 17H
DX = 0,1,2 (0=LPT1, 1=LPT2,...)

funciones equivalentes de C:
_bios_printer() para compilador Microsoft y biospinrt() para el Borland.

----------------------------------------------------
write to LPT port FUNCTION 00H

bits (tienes que meter el valor a cada bit sobre el byte que mandas con tu interrupción [AL = char])

7-----|---6-----|----5 -----|------- 4 ----|---- 3-----2------|---1
not--|--ack----|---no-----|-----select--|--"NOT USED"--|-time
busy-|----------|- paper--|--------------|-------------------|---out

checar bits 5,3 y 0 para revisar la estado de operacion seleccionada.

input:AH=00H
AL=char
DX=printno

output:
AH=status
--------------------------------------------------------
reset LPT port FUNCTION 01H

input: AH = 01H
DX = printno

output:
AH = status
--------------------------------------------------------
return LPT status FUNCRION 02H

input:
AH = 02HDX = printno

output:
AH = status
-------------------------------------------------------

jeje, te lo advertí, meterse en el rollo de la programación a bajo nivel es un relajo.

Esto es un buen comienzo, si quieres leer más checate este mismo libro o los que se llaman "Microsoft C Bible" o "Borland Turbo C bicle", son bastante claros.

Saludos
PD. jeje a ver si no nos regresan al foro de programación.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche

Última edición por Mithrandir; 03/06/2003 a las 10:05
  #3 (permalink)  
Antiguo 04/06/2003, 14:51
Avatar de <-·DröGnÄn·->  
Fecha de Ingreso: diciembre-2002
Ubicación: Mendoza, Argentina
Mensajes: 1.405
Antigüedad: 21 años, 5 meses
Puntos: 1
Hola,
Es exactamente como Mithrandir dice, es muy correcta su respuesta.
Saludos
__________________
Diego Crescentino

Gracias por la ayuda...
  #4 (permalink)  
Antiguo 07/06/2003, 14:01
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Gracias

Gracias Mithrandir por tu ayuda en todos mis poosts
Creo que los has contestado todos
Pero deja resumo un poco:
Todo esto se trabaja a nivel de bits como veo,
OK voy a checar bien el codigo para ver como me sale el programa para manejarmi impresora.
Gracias por cierto........Que editorial es el libro porque una vez lo oi pero no pense que existiera el de C porque vi el de Intenet bible, Linux bible y otro que no recuerdo pero no he visto el de C.
Me das todos los datos de ese libro???
Talve z lo compre aunque ya tengo dos, uno para principiantes y uno muy grande para avanzados que ´posiblemente contenga el tema, pero aun no llego esa parte...
Porque aun lo sigo leyendo tranquilamente.
Gracias, y saludos

Oye, olvide algo....
Siento mi ignorancia en programacion al nivel de bits pero
¿qué es una interrupcion?
no te preocupes por los registros eso si se que es,
lo que no entiendo son las interrupciones...
Aunque no vaya al tema tambien que son los opcodes? (operation codes)?

Espero su respuesta
Saludos
  #5 (permalink)  
Antiguo 09/06/2003, 10:30
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Esos libros de la Biblia de C son de la escuela, en cuanto vaya lo investigo (ya no voy muy seguido).

Una interrupción es el nivel más bajo de comunicación con el hardware, es una señal que le avisa al procesador que hay algo nuevo que hacer (como puede ser pintar una letra, hacer una suma, etc.), es con lo que se hace la multiprogramación (pseudomultitarea, si ya has llevado "sistemas operativos" sabrás que es eso).

Según el valor de la interrupción es lo que se va a hacer, todos estos valores son en sistema hexadecimal (00H hasta FFH), y con los valores en los demás registros indicas lo que quieres hacer con esa interrupción.

Sobre los operation codes, no me suena, depende de en donde los estás manejando, pudieran ser algún valor que te indica lo que se está haciendo, o que tu indicas que quieres hacer.

Saludos
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #6 (permalink)  
Antiguo 12/06/2003, 15:35
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Gracias

Ok, gracias.
Voy a intentar, porque ahora si ya le entendi....
Gracias.
Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:40.