FORUM Syndrome-OC - Jacky-PC


  Programmation


  Autre


  programmer très simplement le port //

 




Il y a 34 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
 Page :  1  2
Page Précédente 
Auteur Sujet :

programmer très simplement le port //

n°3080
Blue Sn4ke
Zelda Fan
Posté le 07-06-2004 à 14:23:10  profilanswer
 

bonjour
j'essaie depuis pas mal de temps de programmer très simplement le port // pour par exemple mettre a 1 toutes les sorties en c++
sur google "suffit de faire un outportb(0x378, 0xFF) blabla" mais je suis tellement nul que je comprends pas
 
j'ai essayé, ca n'a pas marché,  on m'a dit qu'il fallait "ouvrir" le port... et je ne sais pas comment
 
et svp évitez de répondre "google" j'ai déja cherché et pas trouvé.
merci d'avance

mood
Google
Posté le 07-06-2004 à 14:23:10  profilanswer
 

n°3081
Deadog
Dain Bramaged
Posté le 07-06-2004 à 14:25:07  profilanswer
 

sur quel os ?
 
du win récent il faut dlportIO
sur du nux, pour ouvrir le port : ioperm

n°3082
Blue Sn4ke
Zelda Fan
Posté le 07-06-2004 à 14:37:53  profilanswer
 

dsl, c'est sous windows 98 :)

n°3083
Blue Sn4ke
Zelda Fan
Posté le 07-06-2004 à 14:38:27  profilanswer
 

on m'a dit que c'était plutot simple sous 98

n°3084
DarkBears
j'aime le miel put1 d'abeilles
Posté le 07-06-2004 à 15:06:04  profilanswer
 

ouais c'est super simple !!!!
j'ai fais que ça de l'année :/

n°3087
Dr Lous
I see old password
Posté le 07-06-2004 à 15:31:22  profilanswer
 

g le code pour linux... apres a toi d'adapter... (ya ke keklke truc d'apres la doc :))


---------------
Oseras-tu m'affronter ?
n°3094
Blue Sn4ke
Zelda Fan
Posté le 07-06-2004 à 18:00:12  profilanswer
 

Dr Lous a écrit :

g le code pour linux... apres a toi d'adapter... (ya ke keklke truc d'apres la doc :))


tu peux me le filer stp ?

n°3095
Blue Sn4ke
Zelda Fan
Posté le 07-06-2004 à 18:01:08  profilanswer
 

moi96 a écrit :

tu peux me le filer stp ?


si j'ai bien compris il faudra que je remplace les ioperm de ton code par des outportb ?
 
edit : ne rigolez pas  :ange: [:dslam]


Message édité par Blue Sn4ke le 07-06-2004 à 18:01:29
n°3098
Dr Lous
I see old password
Posté le 07-06-2004 à 20:59:26  profilanswer
 

wee je sais pas je prog pas en C ss win :/ dsl
 
att je te cherche ca :)


---------------
Oseras-tu m'affronter ?
n°3099
Dr Lous
I see old password
Posté le 07-06-2004 à 21:04:07  profilanswer
 

Code :
  1. /* compiler avec gcc -O2 pour les macros inb et outb */
  2. #include <stdio.h>
  3. #include <unistd.h>
  4. #include <asm/io.h>
  5. #define lpt_port 0x378  /* Changer l'adresse du port ici */
  6. #define STATUS lpt_port+1
  7. #define CONTROL lpt_port+2
  8. /* Une série de définitions pour simplifier la programmation */
  9. #define SET_E outb(inb(CONTROL) & 254,CONTROL)  /* E=1 (Strobe) */
  10. #define RAZ_E outb(inb(CONTROL) | 1,CONTROL)  /* E=0 (Strobe) */
  11. #define SET_RS outb(4,CONTROL) /* RS=1, la donnée est un caractère */
  12. #define RAZ_RS outb(0,CONTROL) /* RS=0, la donnée est une instruction */
  13. void Init_LCD (void);
  14. void Efface_LCD (void);
  15. void Ecrire_LCD (char *Chaine, char Position);
  16. int coco;
  17. /*
  18. Adresse du curseur (en hexadécimal):
  19.  
  20. digit  : 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
  21.  
  22. ligne 1: 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93
  23. ligne 2: C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3
  24. ligne 3: 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7
  25. ligne 4: D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7
  26. */
  27. int main(void)
  28. {
  29. char *Phrase1="Taper",
  30.  *Phrase2="Votre",
  31.  *Phrase3="Message Sur",
  32.  *Phrase4="La console";
  33. if(ioperm(lpt_port,3,1))
  34. {
  35.     perror("ioperm" );
  36.     exit(1);
  37. }
  38.  Init_LCD();
  39.  //clrscr();
  40.  printf("*************************************************\n" );
  41.  printf("*    Programme de test d'un ecran LCD 4 * 20    *\n" );
  42.  printf("*************************************************\n\n\n" );
  43.  Ecrire_LCD(Phrase1,0x80);
  44.  Ecrire_LCD(Phrase2,0xC0);
  45.  Ecrire_LCD(Phrase3,0x94);
  46.  Ecrire_LCD(Phrase4,0xD4);
  47.  //printf("Taper le message puis Enter.\n" );
  48.  
  49.  while (1)
  50.  {
  51.   coco = getchar();
  52.   if (coco == 47) //si caractere egale a    "/" effacement ecran...
  53.   {
  54.    printf("\n\n----EFFACEMENT ECRAN!!!----\n\n" );
  55.    RAZ_RS;
  56.    outb(0x01,lpt_port); // mise des valeur sur le port
  57.    SET_E;
  58.    usleep(2000);
  59.    RAZ_E;
  60.    usleep(2000);
  61.    SET_RS;
  62.   }
  63.   else
  64.   {
  65.    if (coco == 10)
  66.    {
  67.      //printf("Bouh\n" );
  68.    }
  69.    else
  70.    {
  71.     if (coco == 176){coco = 223;}
  72.     if (coco == 40){coco = 255;}
  73.     printf("-'%d'\n", coco);
  74.      outb(coco,lpt_port); // mise des valeur sur le port
  75.     SET_E;
  76.     usleep(10);
  77.     RAZ_E;
  78.     usleep(10);
  79.    }
  80.   }
  81.   if (coco == 81)
  82.   {
  83.    Efface_LCD();
  84.    Ecrire_LCD("MERCI D'AVOIR",0xC0);
  85.    Ecrire_LCD("UTILISE Dr-LCD",0x94);
  86.    exit();
  87.   }
  88.  }
  89.  printf("%d",0x30);
  90.  return 0;
  91. }
  92. void Init_LCD (void)
  93. {
  94. char Init[5],i;
  95. Init[0] =  0x30;
  96. Init[1] =  0x38;
  97. Init[2] =  0x0F;
  98. Init[3] =  0x01;
  99. Init[4] =  0x06;
  100. outb(inb(CONTROL) & 0xDF,CONTROL); /* On place le port parallèle en sortie */
  101. RAZ_RS;
  102. for(i=0;i<=4;i++)
  103. {
  104.  outb(Init[i],lpt_port); /* On place la donnée sur le bus */
  105.  SET_E;
  106.  usleep(20000); /* Délais de 20 ms */
  107.  RAZ_E;
  108.  usleep(20000);
  109. }
  110. SET_RS;
  111. }
  112. void Efface_LCD (void)
  113. {
  114. RAZ_RS;
  115. outb(0x01,lpt_port); /* On place l'instruction d'effacement sur le bus */
  116. SET_E;
  117. usleep(20000);
  118. RAZ_E;
  119. usleep(2000);
  120. SET_RS;
  121. }
  122. void Ecrire_LCD (char Chaine[20], char Position)
  123. {
  124. int i,Taille;
  125. Taille=strlen(Chaine);
  126. RAZ_RS;
  127. outb(Position,lpt_port); /* Adresse d'écriture */
  128. SET_E;
  129. usleep(1);
  130. RAZ_E;
  131. usleep(1);
  132. SET_RS;
  133. for(i=0;i<Taille;i++)
  134. {
  135.  outb(Chaine[i],lpt_port); /* On place la donnée sur le bus */
  136.  SET_E;
  137.  usleep(1);
  138.  RAZ_E;
  139.  usleep(1);
  140. }
  141. }


---------------
Oseras-tu m'affronter ?
n°3102
Blue Sn4ke
Zelda Fan
Posté le 07-06-2004 à 22:07:57  profilanswer
 

ok, mais ca c pour piloter un lcd
moi je voudrais tout connement mettre a 1 toutes les sorties du port // par exemple
comment faire ? merci

n°3103
Dr Lous
I see old password
Posté le 07-06-2004 à 22:16:56  profilanswer
 

outb(0xFF,lpt_port);
 
[:dslam]


---------------
Oseras-tu m'affronter ?
n°3104
Dr Lous
I see old password
Posté le 07-06-2004 à 22:18:30  profilanswer
 
n°3105
andreq
Posté le 07-06-2004 à 22:44:56  profilanswer
 

http://www.internals.com/utilities_main.htm  (winIO)
 
www.paraport.net ... c'est des driver pour XP/2000 meme si sur 98 c'est inutile la doc qui vien avec est trop superbe  (sourtout avec winIO :D)

n°3111
Blue Sn4ke
Zelda Fan
Posté le 08-06-2004 à 16:30:27  profilanswer
 


merci, j'ai déja eu ce lien, et j'ai essayé de faire ca : (ne rigolez pas [:dslam])
 

Code :
  1. #include <stdio.h>
  2. int main(int argc, char *argv[])
  3. {
  4.   outportb(0x378, 0xFF);
  5.   return 0;
  6. }


mais ca ne marche pas :(
 
5 implicit declaration of function `int outportb(...)'
6 parse error before `return'
6 parsÄ
 
 
comment faire ?

n°3112
Dr Lous
I see old password
Posté le 08-06-2004 à 17:07:24  profilanswer
 

Cependant les dernières versions de Delphi et C++Builder ne disposent pas d'instructions dédiées, et on est alors obligé de recourir à l'assembleur. Pas de panique ! Ce n'est pas si difficile que ça pour cette application, et je présenterai d'ailleurs sûrement un petit cours d'initiation à l'assembleur, mais en attendant voici les fonctions toutes faites dans les deux langages. Il suffit de copier ces fonctions dans votre code et de les utiliser comme n'importes quelle autre fonction :  
 


---------------
Oseras-tu m'affronter ?
n°3113
Dr Lous
I see old password
Posté le 08-06-2004 à 17:12:53  profilanswer
 
n°3114
Blue Sn4ke
Zelda Fan
Posté le 08-06-2004 à 19:51:56  profilanswer
 

merci de tes liens, j'ai recherché sur le site mais aucun code ne marche (soit on me demande une dll, soit il manque des fichiers *.h)...
:cry:
 
tu ne sais pas faire pour tout connement allumer les sorties de de  ******* de port ?


Message édité par Blue Sn4ke le 08-06-2004 à 19:53:24
n°3115
Dr Lous
I see old password
Posté le 08-06-2004 à 20:12:19  profilanswer
 

tu prog ss koi ?


---------------
Oseras-tu m'affronter ?
n°3116
Blue Sn4ke
Zelda Fan
Posté le 08-06-2004 à 20:29:07  profilanswer
 

en c++ sous windaube 98

n°3117
Dr Lous
I see old password
Posté le 08-06-2004 à 21:25:52  profilanswer
 

wee mais comme compilo / ide ?


---------------
Oseras-tu m'affronter ?
n°3118
Blue Sn4ke
Zelda Fan
Posté le 08-06-2004 à 21:33:40  profilanswer
 

mon compilateur c dev-c++

n°3120
Dr Lous
I see old password
Posté le 08-06-2004 à 21:43:08  profilanswer
 

_outp(currentport,0x000);
 
comme fonctions :)


---------------
Oseras-tu m'affronter ?
n°3121
Dr Lous
I see old password
Posté le 08-06-2004 à 21:43:44  profilanswer
 

vient de http://phil.robot.free.fr/prog_html/prog_src.html
dans le main.c :)
 
les includes dans le main.h


---------------
Oseras-tu m'affronter ?
n°3123
Blue Sn4ke
Zelda Fan
Posté le 08-06-2004 à 22:45:45  profilanswer
 

ne le prends pas mal, mais je ne vois pas ce que tes liens m'apportent :heink:
 
mais ici personne ne sait mettre a 1 toutes les sorties du port // ?

n°3124
Deadog
Dain Bramaged
Posté le 09-06-2004 à 01:19:06  profilanswer
 

si mais pas sous win :D

n°3125
Dr Lous
I see old password
Posté le 09-06-2004 à 02:13:49  profilanswer
 

je te donne les 36 000 facon de faire une ecriture sur le port // il te faut koi d'autre... un cerveau :o  
 


---------------
Oseras-tu m'affronter ?
n°3126
andreq
Posté le 09-06-2004 à 02:51:15  profilanswer
 

... comme jai dit : http://www.internals.com/utilities_main.htm  tu prend winIO
 
tu lit la doc... tu init le port tu install les driver (tout sa dans ton prog) et apres tu fait un beau : setportVal(0xFF, 8)....  (le ,8 faudrais je vérifi)

n°3127
Dr Lous
I see old password
Posté le 09-06-2004 à 03:03:02  profilanswer
 

#include <conio.h>
_outp(0x378,0xFF);
 
 
http://msdn.microsoft.com/library/ [...] _outpd.asp
 
 
Il te faut koi de plus la :o


---------------
Oseras-tu m'affronter ?
n°3129
andreq
Posté le 09-06-2004 à 03:42:09  profilanswer
 

bon sa fait pas des soft multiplatform sa :D.... moi je donnais la solution win 9x --- win .net :D

n°3130
Dr Lous
I see old password
Posté le 09-06-2004 à 04:20:47  profilanswer
 

les includes c pas pour les chiens ... :D
 
puis je prefere compiler un prog special win9x et un autre NT...


---------------
Oseras-tu m'affronter ?
n°3132
Blue Sn4ke
Zelda Fan
Posté le 09-06-2004 à 10:00:47  profilanswer
 


j'ai essayé de faire ce code

Code :
  1. int _outp(
  2.    unsigned short port,
  3.    int databyte
  4. );
  5. unsigned short _outpw(
  6.    unsigned short port,
  7.    unsigned short dataword
  8. );
  9. unsigned long _outpd(
  10.    unsigned short port,
  11.    unsigned long dataword
  12. );


il ne marche pas
j'ai essayé celui la

Code :
  1. #include <conio.h>
  2. _outp(0x378,0xFF);


marche pas non plus
jpense que ca doit venir de chez moi parce que c pas normal que ca marche pas jpense

n°3133
DarkBears
j'aime le miel put1 d'abeilles
Posté le 09-06-2004 à 10:04:14  profilanswer
 

arf j'ai pas mon programme là
je regarderai ce soir !

n°3134
Deadog
Dain Bramaged
Posté le 09-06-2004 à 10:42:07  profilanswer
 

tu as bien mit le bon mode dans le bios pour le // au moins ? :D

n°3135
DarkBears
j'aime le miel put1 d'abeilles
Posté le 09-06-2004 à 10:44:51  profilanswer
 

:lol: il a peut être pas regardé !

n°3137
Dr Lous
I see old password
Posté le 09-06-2004 à 15:05:48  profilanswer
 

ta un port parallele ? :D


---------------
Oseras-tu m'affronter ?
n°3138
DarkBears
j'aime le miel put1 d'abeilles
Posté le 09-06-2004 à 15:25:31  profilanswer
 

:whistle: bin c'est le port qui est comme celui de l'écranr ?
 
:D :lol:

n°3146
Blue Sn4ke
Zelda Fan
Posté le 09-06-2004 à 19:37:25  profilanswer
 

darkbears a écrit :

:whistle: bin c'est le port qui est comme celui de l'écranr ?
 
:D :lol:


je suis con mais pas a ce point [:dslam]
oui j'ai un port lpt pour ceux qui en doutent :o
 
Deadog --> tu as bien mit le bon mode dans le bios pour le // au moins ? :D non j'y suis pas allé, faut faire comment (excusez mon ignorance :d )
darkbears --> :lol: il a peut être pas regardé ! t'a tout compris [:dslam]  
 

n°3149
Deadog
Dain Bramaged
Posté le 09-06-2004 à 20:07:23  profilanswer
 

bah c dans le bios ;)
après ça dépend de ton bios
mais le mode à mettre je m'en souviens plus :D ça doit être de l'epp il me semble

n°3171
Homertrix
Modérateur.
Posté le 10-06-2004 à 21:20:04  profilanswer
 

Dr Lous a écrit :

Code :
  1. /* compiler avec gcc -O2 pour les macros inb et outb */
  2. #include <stdio.h>
  3. #include <unistd.h>
  4. #include <asm/io.h>
  5. #define lpt_port 0x378  /* Changer l'adresse du port ici */
  6. #define STATUS lpt_port+1
  7. #define CONTROL lpt_port+2
  8. /* Une série de définitions pour simplifier la programmation */
  9. #define SET_E outb(inb(CONTROL) & 254,CONTROL)  /* E=1 (Strobe) */
  10. #define RAZ_E outb(inb(CONTROL) | 1,CONTROL)  /* E=0 (Strobe) */
  11. #define SET_RS outb(4,CONTROL) /* RS=1, la donnée est un caractère */
  12. #define RAZ_RS outb(0,CONTROL) /* RS=0, la donnée est une instruction */
  13. void Init_LCD (void);
  14. void Efface_LCD (void);
  15. void Ecrire_LCD (char *Chaine, char Position);
  16. int coco;
  17. /*
  18. Adresse du curseur (en hexadécimal):
  19.  
  20. digit  : 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
  21.  
  22. ligne 1: 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93
  23. ligne 2: C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3
  24. ligne 3: 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7
  25. ligne 4: D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7
  26. */
  27. int main(void)
  28. {
  29. char *Phrase1="Taper",
  30.  *Phrase2="Votre",
  31.  *Phrase3="Message Sur",
  32.  *Phrase4="La console";
  33. if(ioperm(lpt_port,3,1))
  34. {
  35.     perror("ioperm" );
  36.     exit(1);
  37. }
  38.  Init_LCD();
  39.  //clrscr();
  40.  printf("*************************************************\n" );
  41.  printf("*    Programme de test d'un ecran LCD 4 * 20    *\n" );
  42.  printf("*************************************************\n\n\n" );
  43.  Ecrire_LCD(Phrase1,0x80);
  44.  Ecrire_LCD(Phrase2,0xC0);
  45.  Ecrire_LCD(Phrase3,0x94);
  46.  Ecrire_LCD(Phrase4,0xD4);
  47.  //printf("Taper le message puis Enter.\n" );
  48.  
  49.  while (1)
  50.  {
  51.   coco = getchar();
  52.   if (coco == 47) //si caractere egale a    "/" effacement ecran...
  53.   {
  54.    printf("\n\n----EFFACEMENT ECRAN!!!----\n\n" );
  55.    RAZ_RS;
  56.    outb(0x01,lpt_port); // mise des valeur sur le port
  57.    SET_E;
  58.    usleep(2000);
  59.    RAZ_E;
  60.    usleep(2000);
  61.    SET_RS;
  62.   }
  63.   else
  64.   {
  65.    if (coco == 10)
  66.    {
  67.      //printf("Bouh\n" );
  68.    }
  69.    else
  70.    {
  71.     if (coco == 176){coco = 223;}
  72.     if (coco == 40){coco = 255;}
  73.     printf("-'%d'\n", coco);
  74.      outb(coco,lpt_port); // mise des valeur sur le port
  75.     SET_E;
  76.     usleep(10);
  77.     RAZ_E;
  78.     usleep(10);
  79.    }
  80.   }
  81.   if (coco == 81)
  82.   {
  83.    Efface_LCD();
  84.    Ecrire_LCD("MERCI D'AVOIR",0xC0);
  85.    Ecrire_LCD("UTILISE Dr-LCD",0x94);
  86.    exit();
  87.   }
  88.  }
  89.  printf("%d",0x30);
  90.  return 0;
  91. }
  92. void Init_LCD (void)
  93. {
  94. char Init[5],i;
  95. Init[0] =  0x30;
  96. Init[1] =  0x38;
  97. Init[2] =  0x0F;
  98. Init[3] =  0x01;
  99. Init[4] =  0x06;
  100. outb(inb(CONTROL) & 0xDF,CONTROL); /* On place le port parallèle en sortie */
  101. RAZ_RS;
  102. for(i=0;i<=4;i++)
  103. {
  104.  outb(Init[i],lpt_port); /* On place la donnée sur le bus */
  105.  SET_E;
  106.  usleep(20000); /* Délais de 20 ms */
  107.  RAZ_E;
  108.  usleep(20000);
  109. }
  110. SET_RS;
  111. }
  112. void Efface_LCD (void)
  113. {
  114. RAZ_RS;
  115. outb(0x01,lpt_port); /* On place l'instruction d'effacement sur le bus */
  116. SET_E;
  117. usleep(20000);
  118. RAZ_E;
  119. usleep(2000);
  120. SET_RS;
  121. }
  122. void Ecrire_LCD (char Chaine[20], char Position)
  123. {
  124. int i,Taille;
  125. Taille=strlen(Chaine);
  126. RAZ_RS;
  127. outb(Position,lpt_port); /* Adresse d'écriture */
  128. SET_E;
  129. usleep(1);
  130. RAZ_E;
  131. usleep(1);
  132. SET_RS;
  133. for(i=0;i<Taille;i++)
  134. {
  135.  outb(Chaine[i],lpt_port); /* On place la donnée sur le bus */
  136.  SET_E;
  137.  usleep(1);
  138.  RAZ_E;
  139.  usleep(1);
  140. }
  141. }




 
C'est le truc que tu as fini le 31 Décembre à 7H30 du math quand j'ai débarquer chez toi ? [:grut]
 
 :ange:

mood
Google
Posté le 10-06-2004 à 21:20:04  profilanswer
 

 Page :  1  2
Page Précédente 

Aller à :
Ajouter une réponse

  FORUM Syndrome-OC - Jacky-PC


  Programmation


  Autre


  programmer très simplement le port //

 

Hit Parade