begin process at 2012 05 29 17:44:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

Pb avec petit programme port parallèle


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pb avec petit programme port parallèle

dimanche 27 avril 2008 à 19:20:37 | Pb avec petit programme port parallèle

llorden

Bonjour,

J'ai fait un petit programme pour écrire et lire le port parallèle mais ça ne fonctionne pas.
De plus quand je branche mon montage toutes les LED sont allumées, pourtant j'ai bien vérifié mon montage et je ne vois rien de particulier.

Est ce normal ou alors ai je fait une erreur quelque part ???

Voici mon code:
#include <stdio.h>
#include <string.h>
unsigned char inportb (unsigned short _port)
{
    unsigned char rv;
    __asm__ __volatile__ ("inb %1, %0" : "=a" (rv) : "dN" (_port));
    return rv;
}

void outportb (unsigned short _port, unsigned char _data)
{
    __asm__ __volatile__ ("outb %1, %0" : : "dN" (_port), "a" (_data));
}

int main(int argc,char *argv[])
{
    int i=0;
    char out_char;
 
    unsigned char data;
    strcpy(&data,"0");
    unsigned short port = 0x378;
    printf("Début du test \n");
    outportb(0X378,data);
    printf("Fin du test \n");
    data = inportb(0X378);
    printf("data : %c\n",data);

    return 0;
}

Avez vous une ou plusieurs idées?

Merci à vous
lundi 28 avril 2008 à 11:08:04 | Re : Pb avec petit programme port parallèle

faucheuse

ca bloque à quel niveau??
samedi 24 mai 2008 à 16:59:08 | Re : Pb avec petit programme port parallèle

llorden

Bonjour

Désolé pour le retard dans ma réponse.

En fait j'ai trouvé comment sous XP avec Dev-C++ communiquer avec le port parallèle (c'est pas de moi !! Dommage !!).

Voici le code source:
/**************************************************/
/*** TEST.c  -- test interface to inpout32.dll  ***/
/**************************************************
Méthode:                                                   
Méthode permettant de charger la DLL en mémoire via LoadLibrary(),
ce qui te fournira un handle vers cette DLL. Puis, via la fonction
GetProcAddress(), tu récupères l'adresse de la fonction que tu utilises pour
accéder à cette fonction. Quand c'est terminé la DLL doit être libérée
avec FreeLibrary().
/*******************************************************/
#include <stdio.h>
#include <conio.h>
#include <windows.h>

/* Definitions in the build of inpout32.dll are:            */
/*   short _stdcall Inp32(short PortAddress);               */
/*   void _stdcall Out32(short PortAddress, short data);    */
/* prototype (function typedef) for DLL function Inp32: */

     typedef short _stdcall (*inpfuncPtr)(short portaddr);
     typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);

int main(void)
{
     HINSTANCE hLib;
     inpfuncPtr inp32;
     oupfuncPtr oup32;

     short x;
     int i;

     /* Chargement de la librairie*/
     hLib = LoadLibrary("inpout32.dll");

     if (hLib == NULL)
    {
          printf("LoadLibrary Failed.\n");
          return -1;
     }
     /* Récupération de l'adresse de la fonction avec "GetProcAddress" */
     inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32");
     /* Vérification que la fonction existe */
     if (inp32 == NULL) {
          printf("GetProcAddress for Inp32 Failed.\n");
          return -1;
     }
     /* Récupération de l'adresse de la fonction avec "GetProcAddress" */
     oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");
     /* Vérification que la fonction existe */
     if (oup32 == NULL) {
          printf("GetProcAddress for Oup32 Failed.\n");
          return -1;
     }
/***************************************************************/
/* now test the functions */

     /* Try to read 0x378..0x37F, LPT1:  */
     for (i=0x378; (i<0x380); i++)
    {
         x = (inp32)(i);
          printf("port read (%04X)= %04X\n",i,x);
     }
     /*****  Write the data register */

     i=0x378;
     x=0x77;
     (oup32)(i,x);
     printf("port write to 0x%X, datum=0x%2X\n" ,i ,x);

     /***** And read back to verify  */
     x = (inp32)(i);
     printf("port read (%04X)= %04X\n",i,x);

     /*****  One more time, different value */

     i=0x378;
     x=0x0;

     (oup32)(i,x);
     printf("port write to 0x%X, datum=0x%2X\n" ,i ,x);

     /***** And read back to verify  */
     x = (inp32)(i);
     printf("port read (%04X)= %04X\n",i,x);

     FreeLibrary(hLib);
     return 0;
}

C'est un code qui  a été développé avec Borland C++.

Il ne faut surtout pas oublié de mettre la DLL inpout32.dll dans le même dossier que l'exécutable.

Voilou

A+
MOI



Cette discussion est classée dans : programme, port, data, char, unsigned


Répondre à ce message

Sujets en rapport avec ce message

pb avec conio je cher cherche l'erreur( j'ai merde sur le mess precedent) [ par kin ] portpia.cpp#include"PortPiaPc.h"void main(){ PortPiaPc inst; inst(0x320,0x0f);}PortPiaPc.cpp#include "PortPiaPc.h"#include "conio.h"PortPiaPc::PortPia Pointeurs sur des tableaux de plusieurs dimensions [ par ProGamer ] J'ai besoin de faire des pointeurs sur ce genre de tableaux. Voici comment je m'y prends (et surtout, voici comment ça ne marche pas...):unsigned char char* to unsigned char* [ par rodrigos ] comment peut-on convertir un char* en unsigned char*?à quoi correspond un unsigned char*?Merci pour votre aide!! pb avec variable [ par jeffise57 ] Please aidez moiJe reçoit comme arugument du fonction des variables unsigned char* et je doit passer dans une deuxième fonction les même arguments mai Comment concertir Ansistring en unsigned char*????? [ par asik38 ] Ansistring x;unsigned char str[100];str[100]=x;??????Merci!!! HELP je ne comprend pas pourquoi mon programme plante [ par surfeurnet ] j'ai developpper le programme suivant sous dev-cpp et lorsque je l'exécute il plante. Je pense que c'est un problème avec les constantes c ou adr mais Probleme de sockets [ par MaDC ] J'ai fait ça, mais la reception ferme mon appli mfc sans raison... biens ur on ne reçoit rien... si qq1 pouvait m'éclairer se serait sympa de sa part struct [ par ready4 ] Je ne sais pas comment initialiser mes moteurs //intialisation moteursM1 = {2, 1, 1, 2, 0, 0, 120};M2 = {8, 4, 4, 8, 0, 0, 80};M3 = {32, 16, 16, 32, 0 pb readfile sous Win2k [ par VolaiL ] Voilà, j'ai un programme qui tourne impec sou Win9x, et la, je viens de la passer sous win2k, et ce con me "saute" mon readfile :/ Disons qu'il fais k Sniffing - raw socket [ par krum ] J'ai essayé de coder un programme capable de me donner la description de l'en tete IP et TCP des packets que je reçois d'une certaine IP,mais lorsque


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,928 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales