desktop

Problemas con inportb y outportb de Turbo C++

Hola amigos, tengo problemas al usar las funciones inportb Y outportb, resulta y sale que solo me funcionan despues de haber utilizado la io.dll para visual basic, es decir si reinicio mi pc y lo primero que hago es correr turbo C con las inportb Y outportb no me funciona, pero si primero utilizo visual basic 6.0 para estos fines (manipular el puerto paralelo) ahora sí me funciona turbo C, ¿ acaso hay que inicializar algo en turbo C para que me funcionen las instrucciones que manipulan el puerto paralelo?

LO que hice para utilizar el Turbo C es descomprimir los archivos y ejecutar el TC que se encuentra an la carpeta BIN de TC,,,tiene que ver algo esto?


en verdad muchas gracias por su ayuda.............
 
julio cesar dijo:
Hola amigos, tengo problemas al usar las funciones inportb Y outportb,

resulta y sale que solo me funcionan despues de haber utilizado la io.dll

para visual basic, es decir si reinicio mi pc y lo primero que hago es

correr turbo C con las inportb Y outportb no me funciona, pero si primero

utilizo visual basic 6.0 para estos fines (manipular el puerto paralelo) ahora

sí me funciona turbo C, ¿ acaso hay que inicializar algo en turbo C para que

me funcionen las instrucciones que manipulan el puerto paralelo??????????


LO que hice para utilizar el Turbo C es descomprimir los archivos y ejecutar

el TC que se encuentra an la carpeta BIN de TC,,,tiene que ver algo esto??????


en verdad muchas gracias por su ayuda.............

Lo que pasa es que en Xp estan bloqueados los puertos, en DOS cuesta mucho hacerlos funcionar.

Pero esta interesanteeso que dice que después de inicializarla con vbasic funciona, voy a probarlo.

Lo que se me ocurre es que desde Turbo c++ debemos indicarle que cargue esa dll voy a ver si encuentro como por que también ocupo utilizar turbo c++ en XP.

Saludos y gracias por el dat s enuentr algo le aviso.
 
darea dijo:
Eso mismo iba a decir yo, XP protege los puertos pero no se como hacerlo funcionar en C++.

Hola, hace un momento estaba muy contento pues había encontrado algo que tal vez funcionaría

Encontré un programa llamado userport que se supone que solo ocupa correlo un avez y este libera los puertos.

Yo ya lo corrí y le di start pero cada vez que le doy update se me reinicia la PC :( y al reiniciar dice que mi pc se ha recuperado de un error grave.

En fin, ya abrí un programa hecho con turbo c pero al darle que saque un dato se tarda como 30 segundos en sacarlo :( y aveces ni saca nada.

Dejo el archivo por si alguien quiere intentarlo y si a ustedes si les sirve les agradecería me avisen además de que versión de Windows XP usan.

Yo lo probé con XP Sp3 Profesional

El link es este
http://files.filefront.com/UserPortrar/;5237729;;/fileinformación.html

Saludos
 
Yo uso el programa giveio y funciona bien.


EinSoldiatGott dijo:
darea dijo:
Eso mismo iba a decir yo, XP protege los puertos pero no se como hacerlo funcionar en C++.

Hola, hace un momento estaba muy contento pues había encontrado algo que tal vez funcionaría

Encontré un programa llamado userport que se supone que solo ocupa correlo un avez y este libera los puertos.

Yo ya lo corrí y le di start pero cada vez que le doy update se me reinicia la PC :( y al reiniciar dice que mi pc se ha recuperado de un error grave.

En fin, ya abrí un programa hecho con turbo c pero al darle que saque un dato se tarda como 30 segundos en sacarlo :(

Dejo el archivo por si alguien quiere intentarlo y si a ustedes si les sirve les agradecería me avisen además de que versión de Windows XP usan.

Yo lo probé con XP Sp3 Profesional

El link es este
http://files.filefront.com/UserPortrar/;5237729;;/fileinformación.html

Saludos
 
atmega128 dijo:
Yo uso el programa giveio y funciona bien.


Ahora mismo lo busco, gracias por el dato

Saludos y al rato cuento como me fue.

**********
Debe ser un ejecutable????? Solo encontre un giveios.sys :eek: :eek: , imagino que debo ponerlo en system32 pero apoco así de fácil???


Bueno deje lo pruebo a ver si funciona.
Saludos y gracias
 
joselito333 dijo:
Hola a todos.
Con respecto al problema con los puertos en Xp, yo instale el ejecutable ntpot y me dio buenos resultados tanto para Borland C++(no he probado en Turbo), como en Visual C++;
Si con esto pude contribuir; agradeceria comenten sus resultados.
Descargado de:http://www.fileheap.com/127057/download/


Jeje, lo probaré ya he probado como 5 programas y ninguno me ha funcionado :), en este momento pruebo el suyo y comento

Saludos Y Gracias por compartirlo

****

Se suma uno más a los intentos fallidos, estoy usando una vesdión de Windows XP Modificada, tal vez sea eso, pero no creo.

Tal vez mañana vaya casa de un amigo, ahi probaré todos los programas haber si alguno funciona.

Saludos y gracias
 
Yo lo uso con el software AVRDUDE:

-----------------------------------------
A.2.4.1 Windows NT/2K/XP
On Windows NT, 2000, and XP user applications cannot directly access the parallel port. However, kernel mode drivers can access the parallel port. giveio.sys is a driver that can allow user applications to set the state of the parallel port pins.

Before using AVRDUDE, the giveio.sys driver must be loaded. The accompanying command-line program, loaddrv.exe, can do just that.

To make things even easier there are 3 batch files that are also included:


install_giveio.bat Install and start the giveio driver.

status_giveio.bat Check on the status of the giveio driver.

remove_giveio.bat Stop and remove the giveio driver from memory.
These 3 batch files calls the loaddrv program with various options to install, start, stop, and remove the driver.

When you first execute install_giveio.bat, loaddrv.exe and giveio.sys must be in the current directory. When install_giveio.bat is executed it will copy giveio.sys from your current directory to your Windows directory. It will then load the driver from the Windows directory. This means that after the first time install_giveio is executed, you should be able to subsequently execute the batch file from any directory and have it successfully start the driver.

Note that you must have administrator privilege to load the giveio driver.

-----------------------------------------
EinSoldiatGott dijo:
atmega128 dijo:
Yo uso el programa giveio y funciona bien.


Ahora mismo lo busco, gracias por el dato

Saludos y al rato cuento como me fue.

**********
Debe ser un ejecutable????? Solo encontre un giveios.sys :eek: :eek: , imagino que debo ponerlo en system32 pero apoco así de fácil???


Bueno deje lo peubeo a ver si funciona.
Saludos y gracias
 
atmega128 dijo:
Yo lo uso con el software AVRDUDE:

Hola, he conseguido el giveio con su ejecutable e instrucciones
el link es este para el que le interese
http://files.filefront.com/giveiorar/;5247069;;/fileinformación.html

Sin embargo aún no me funciona :(, debo de agregarle algo a mi código??? declarar alguna librería o dll?

Ya seguí estas instrucciones
1. Run the LoadDrv utility with giveio.sys in the same directory and click the install button. This should copy giveio.sys to the systems directory, but I've found that it doesn't. Alternatively, just copy giveio.sys to C:\WINDOWS\system32\drivers.

2. In the LoadDrv utility, enter the full pathname of the location of giveio.sys (for example, c:\windows\system32\drivers\giveio.sys).

3. In LoadDrv, click the Start button.

4. This driver should now be started. If you want the driver to start whenever the computer is restarted proceed with the following steps.

5. In the Control Panel, open System and go to the hardware tab.

6. Click on the Device Manager button. This will open a new window.

7. In the Device Manager window, click on the View menu and select Show hidden devices. This will reveal a Non-Plug and Play Drivers icon in the file tree.

8. Expand the Non-Plug and Play Drivers tree.

9. Find and right click giveio and select Properties from the popup menu. This will bring up a window of the giveio Properties.

10. In the Properties window, select the Driver tab.

11. Select Automatic from the dropdown box for the type.

12. This change will take effect after you reboot the computer.

Me dice que la aplicación ya esta ejecutándose al darle start, y lo que hace es ponerme en alto todos los bits de salida del puerto.

Pero me voy a ver lo de los plugs & play no me aparece, aunque me encontré ahi el userport que había instalado antes y le di que se ejecutara automáticamente, reinicié pero no pasa nada.

Que windows utiliza usted??? voy a probar formateando e instalando un windows no modificado.

Saludos y gracias
 
Primero que nada... hola a todos "Espero ayudarlos y que me ayuden", soy novato en el tema de la programacion en Turbo C y no tengo mucha idea.... pero me puse las pilas y encontre algo que creo se nos van a facilitar las cosas.

Disculpen pero tengo muy poco tiempo programando y cambie a Win XP y me lleve la gran sorpresa... he aqui que busco en internet y encontre LO SIGUIENTE QUE LES PASO A EXPLICAR:

YA LA MAYORIA SABE QUE WINXP TRABO LOS PUESTOS PARA QUE EL USUARIO "USERMODE" NO PUEDA HACER NADA O CASI NADA CON ELOS PERO UN TAL Craig Peacock QUE DESARROLLO EL FAMOSO """PORTTALK""" QUE PARA QUE VEAN ALGO TRAE ESTO DE EJEMPLO:

#include <stdio.h>
#include <windows.h>
#include <pt_ioctl.c>

void __cdecl main(void)
{
unsigned char value;
printf("IoExample for PortTalk V2.0\nCopyright 2001 Craig Peacock\nhttp://www.beyondlogic.org\n");
OpenPortTalk();
outportb(0x378, 0xFF);
value = inportb(0x378);
printf("Value returned = 0x%02X \n",value);
outp(0x378, 0xAA);
value = inp(0x378);
printf("Value returned = 0x%02X \n",value);
ClosePortTalk();
}

QUE NOS FACILITA LA PROGRAMACION CON TURBO C/C++ BAJO WINDOWS XP.

AL NO TENER MUCHA EXPERIENCIA EN PROGRAMACION BAJO TURBO C/C++ Y SUS DERIVADOS LES PONGO EL LINK DE DONDE LO BAJO Y ESPERO QUE PRUEBEN Y ME DIGAN SI LO HICIERON ANDAR YA QUE YO NO PUDE.

http://www.beyondlogic.org/porttalk/porttalk.htm

HICE LO QUE PUDE PERO NO ENCUENTRO LAS SIGUIENTES LIBRERIAS WINIOCTL.H Y WINDOWS.H QUE SON LAS QUE ME DAN ERROR CUANDO COMPILO EL PROGRAMITA DE EJEMPLO.

BUENO ESPERO QUE LES SEA UTIL Y MIENTRAS LO BUSCAN YO SIGO INTENTANDO HACER ALGO CON ESO.
 

Adjuntos

  • porttalk_v2.2__drv__-_programaci_n_turbo_c_bajo_winxp_167.zip
    66.4 KB · Visitas: 104
Hola, voy a probarlo pero no creo que funcione, yo ya probé como con 10 parches pero estan enfocados a pascal y en turbo c++ no me han funcionado.

Esas librerías que dice, solo vienen en turbo c++ 4.5, pero pueden conseguirse en internet y agregarlas, pero el problema es que windows.h provoca errores en algunas instrucciones tan sencillas como "delay"

Bueno eso sería todo en lo que puedo ayudarle :(, yo también intenté liberar los puertos, pero ya me cancé de intentarlo y me cambié a visual basic.

Si puedo ayudarle en otra cosa solo me avisa

Saludos
 
Pampa Norte dijo:
¿Probaste buscar si hay un parche para que turbo c corra en xp?

Mmmm, no creo que exista tal cosa porque no hay nada que parchar.

Turbo C es un compilador de 16 bits, que corre en DOS y está pensado para DOS --> acceso directo al hardware

Windows XP es un sistema operativo con 10 años de evolución posterior al turbo c, que encapsula las aplicaciones y no permite el acceso directo al hardware.

La solución sería usar un compilador que haga otro tipo de gestión, ya sea mediante un componente o mediante una dll que a su vez se comunique con güindows :D

Casualmente son estas cosas las que hay que cambiar cuando uno porta código de Windows a Linux y viceversa, solo para citar un ejemplo.

No es simplemente cargar un 'parche' y listo.

Saludos
 
lo que dice maunix es muy cierto, yo hice un programa en c++ con visual c++ y usando la libreria que decian al principio io.dll, este me permite tomar control absoluto del puerto paralelo, mas sin embargo creo que no lo libera o algo asi, no soy muy bueno en ingles y la descripcion de esta libreria http://www.geekhideout.com/iodll.shtml lo esta en este idioma, si a alguien le sirve cojanlo, no conozco turbo c++ pero segun lo que dicen, va a quedar dificil que puedan implementar esa dll con ese compilador, utilizen otro como lo recomienda maunix, me avisan, cuidensen...
 
Yo estoy usando un programa llamado 12c prog v1.5 sirve para programar microcontroladores Atmel por el puerto paralelo. La cosa es que con win 98 funcionaba muy bien pero cuando instalé el xp dejó de funcionar justamente porque no podía acceder al puerto. Pude conseguir un parche que no se si es para el programa o para el xp y ahora funciona sin problemas. Por eso se me ocurrió decirte lo del parche, entiendo que hay distancias que salvar (este programa corre vajo win y no DOS) pero si el parche o lo que fuera actúa sobre el windows creo que eso no afecta.
El 12c prog v1.5 cuando lo baje estaba disponible en http://go.to/zackyfiles, tal vez puedas fijarte en ese lugar. No recuerdo de donde baje la dll que lo hizo funcionar pero en alguna carpeta de mi Pc lo debo tener y si te interesala busco y te la mando. Creo que no hay nada que perder. Suerte
 
Pampa Norte dijo:
Yo estoy usando un programa llamado 12c prog v1.5 sirve para programar microcontroladores Atmel por el puerto paralelo. La cosa es que con win 98 funcionaba muy bien pero cuando instalé el xp dejó de funcionar justamente porque no podía acceder al puerto. Pude conseguir un parche que no se si es para el programa o para el xp y ahora funciona sin problemas. Por eso se me ocurrió decirte lo del parche, entiendo que hay distancias que salvar (este programa corre vajo win y no DOS) pero si el parche o lo que fuera actúa sobre el windows creo que eso no afecta.
El 12c prog v1.5 cuando lo baje estaba disponible en http://go.to/zackyfiles, tal vez puedas fijarte en ese lugar. No recuerdo de donde baje la dll que lo hizo funcionar pero en alguna carpeta de mi Pc lo debo tener y si te interesala busco y te la mando. Creo que no hay nada que perder. Suerte

Hola, si quiere puede subir su archivo, tal vez a alguien le sirva.

Pero Mau tiene razón y lo comprobé tras probar con varios "parches", tal vez estos funcionen para Pascal pero al menos a mi para Turbo c++ no me funcionaron, el detalle o la solución no solo es incluir una dll sino que debemos modificar nuestro programa y decirle que utilice esa dll, entonces si va a funcionar.

Así es como lo estoy haciendo en Visual Basic, agrego la inpout32.dll, y además debo compilar el programa con un módulo para esa dll.

Imagino que en Turbo c++ debe ser igual pero no se como decirle que utilice una dll :)

Saludos
 
A ver si despejo dudas, aqui va:

Con la aparicion de los sistemas operativos como el NT y los basados en el, han descartado las funciones que permitian el acceso a puertos del pc de forma directa, puesto a que esto, implicaba que el sistema operativo fuera "poco seguro", motivo por el cual se decidio que el usuario NO tuviera acceso directo al kernel, funcion de privilegio. Por esta razon, se hizo necesario estudiar en estos sistemas operativos, la forma de acceder al Kernel y asi poder controlar la lectura y escritura de los puertos.
Un usuario, solo tiene acceso a nivel usuario (administrador) pero.... las librerias, como las de enlace dinamico, las que conocemos como DLL, si tienen acceso directo al Kernel, pues, se instalan y ejecutan en ese lugar. El dato, es que las DLL las podemos controlar, y si podemos controlar una DLL, que esta a su vez controle el Kernel, estariamos controlando como usuarios el Kernel de una forma "indirecta", pero controlandolo al fin y al cabo, y asi logramos el cometido, controlar la escritura y lectura de puertos a nuesto gusto. DLL's para este fin hay muchas, usamos las que se nos amolde, o la que logramos encontrar.
Una tecnica muy buena, es encryptar la dll adentro del ejecutable, y expandirla e instalarla en run time, asi nos olvidamos de distribuirla junto con nuestro programa, ya que esta incorporada.

Saludos.
 
MaMu dijo:
Con la aparicion de los sistemas operativos como el NT y los basados en el, han descartado las funciones que permitian el acceso a puertos del pc de forma directa, puesto a que esto, implicaba que el sistema operativo fuera "poco seguro", motivo por el cual se decidio que el usuario NO tuviera acceso directo al kernel, funcion de privilegio. Por esta razon, se hizo necesario estudiar en estos sistemas operativos, la forma de acceder al Kernel y asi poder controlar la lectura y escritura de los puertos.

Exacto! solo que no fue por invento de Microsoft ni de su gente, sino que los Unix ya lo venían haciendo por más tiempo. Eso de encapsular aplicaciones :D

Jeje, Microsoft nos acercó algunas cosas, pero no las inventó ni mucho menos

Todavía me acuerdo cuando yo usaba DOS en modo texto y tenía una conocida publicista que usaba su MAC de entonces, controlada con un mouse de 1 solo botón en un entorno totalmente gráfico 8)
 
Atrás
Arriba