begin process at 2012 05 27 19:07:38
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Périphériques

 > RS232 ET PORT //

RS232 ET PORT //


 Information sur la source

Note :
Aucune note
Catégorie :Périphériques Classé sous :rs232, tikaoui, hicham, port parallele, port serie Niveau :Expert Date de création :23/03/2011 Date de mise à jour :24/03/2011 11:18:48 Vu / téléchargé :5 087 / 227

Auteur : morphixx

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
simple programme qui permet d'envoyer des characteres codes en ASCII via le port RS232 et //

pour plus d'info:
TIKAOUI.HICHAM@gmail.com

Source

  • #include <stdio.h>
  • #include <conio.h>
  • #include <dos.h>
  • #include <math.h>
  • int t[9];
  • void deb(char c) // covertisseur dcimale-binaire
  • {
  • int i=8;
  • float f=c;
  • while(i!=0)
  • {
  • if (f/2-floor(f/2)==0)
  • {
  • t[i]=0;
  • }
  • else
  • {
  • t[i]=1;
  • }
  • f=floor(f/2);
  • i--;
  • }
  • for(i=1;i<=8;i++)
  • printf(" %d",t[i]);
  • }
  • void init() // dessin de l'interface
  • {
  • textbackground(0);
  • window(4,6,23,8);
  • clrscr();
  • window(26,6,38,8);
  • clrscr();
  • window(22,15,50,17);
  • clrscr();
  • window(22,30,50,33);
  • clrscr();
  • window(22,20,50,25);
  • clrscr();
  • window(22,20,50,25);
  • clrscr();
  • window(29,40,78,42);
  • clrscr();
  • }
  • void configuS(char c) // configuration des ports S&#8218;ries
  • {
  • /* outportb(0x3f8+3,0x80);
  • outportb(0x3f8,0x00);
  • outportb(0x3f9,0xff);
  • outportb(0x3f8+3,0x03);
  • outportb(0x3f8,c);*/
  • asm{
  • mov dx,3fbh
  • mov ax,8h
  • out dx,ax;
  • mov dx,03f8h;
  • mov ax,0
  • out dx,ax;
  • mov dx,03f9h
  • mov ax,0ffh
  • out dx,ax;
  • mov dx,03fbh;
  • mov ax,03h;
  • out dx,ax;
  • mov dx,03f8h;
  • }
  • _AX=c;
  • asm{
  • out dx,ax;
  • }
  • }
  • void configuP(char c) // configuration des ports parall¦les
  • {
  • /* outportb(0x37A,0x04);
  • outportb(0x378,c);*/
  • asm{
  • mov ax,04h
  • mov dx,37ah
  • out dx,ax
  • }
  • _AX=c;
  • asm{ mov dx,378h;
  • out dx,ax;
  • }
  • }
  • void signS() /* Fonction reserv&#8218;es aux ports s&#8218;ries il permet de synchronser
  • la transmission avec la clin sur l'ecran*/
  • // en effet g essayer d'abaisser la vitess de transmission jusqa 1 bit par secende
  • // pour rendre le transmission visibile "des fins pedagogique"
  • //Alors pour visualiser la transmission il faut executer le program sur in P III 800Mhz
  • {
  • delay(100);
  • for(int i=0;i<8;i++)
  • {
  • textbackground(7);
  • clrscr();
  • delay(264);
  • textbackground(6);
  • clrscr();
  • gotoxy(2,3);
  • cprintf("Transmission en cours..... ");
  • textbackground(3);
  • window(22,30,50,33);
  • clrscr();
  • gotoxy(14,3);
  • cprintf("%d",t[8-i]);
  • window(22,20,50,25);
  • delay(264);
  • }
  • }
  • main() //le programme principale
  • { char c;
  • clrscr();
  • debut:
  • init();
  • textcolor(0);
  • _setcursortype(_SOLIDCURSOR);
  • textbackground(11);
  • window(4,6,23,8);
  • clrscr();
  • gotoxy(1,3);
  • cprintf(" Veuillerz dtaper un caract¦re ");
  • textbackground(7);
  • window(26,6,38,8);
  • clrscr();
  • gotoxy(6,2);
  • cscanf("%c",&c);
  • textbackground(7);
  • window(22,15,50,17);
  • _setcursortype(_NOCURSOR);
  • clrscr();
  • gotoxy(1,2);
  • deb(c);
  • textbackground(6);
  • window(22,20,50,25);
  • clrscr();
  • gotoxy(2,2);
  • int b;
  • char s;
  • cprintf("Tapez: 'S'----> Port S&#8218;rie \n");
  • cprintf(" 'P'----> Port Parall¦le ");
  • error:
  • s=getch();
  • if (s=='s')
  • {
  • configuS(c);
  • signS();
  • }
  • else if(s=='p')
  • {
  • configuP(c);
  • }
  • else
  • {
  • goto error;
  • }
  • textbackground(4);
  • clrscr();
  • gotoxy(1,3);
  • cprintf("Transmission Termin&#8218;e \t avec succ&#8218;e!!!!");
  • textbackground(7);
  • window(29,40,78,42);
  • clrscr();
  • gotoxy(1,2);
  • cprintf("Tapez 'Q' pour Quitter et 'ENTRER' pour continuer ");
  • revenir:
  • c=getch();
  • if (c==13)
  • goto debut;
  • if (c!='q')
  • goto revenir;
  • }
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <math.h>
int t[9];
void deb(char c)  // covertisseur  dcimale-binaire
{
 int i=8;
  float f=c;
  while(i!=0)
  {
    if (f/2-floor(f/2)==0)
    {
      t[i]=0;
       }
    else
     {
      t[i]=1;
       }
       f=floor(f/2);
       i--;
    }
     for(i=1;i<=8;i++)
      printf("  %d",t[i]);
}

void init() // dessin de l'interface
{
   textbackground(0);
   window(4,6,23,8);
   clrscr();
   window(26,6,38,8);
   clrscr();
   window(22,15,50,17);
   clrscr();
   window(22,30,50,33);
   clrscr();
   window(22,20,50,25);
   clrscr();
   window(22,20,50,25);
   clrscr();
   window(29,40,78,42);
   clrscr();
}
void configuS(char c) // configuration des ports S&#8218;ries
 {
  /* outportb(0x3f8+3,0x80);
   outportb(0x3f8,0x00);
   outportb(0x3f9,0xff);
   outportb(0x3f8+3,0x03);
   outportb(0x3f8,c);*/

   asm{
	mov dx,3fbh
	mov ax,8h
	 out  dx,ax;
	mov dx,03f8h;
	mov ax,0
	 out dx,ax;
	mov dx,03f9h
	mov ax,0ffh
	 out dx,ax;
	mov dx,03fbh;
	mov ax,03h;
	 out dx,ax;
	mov dx,03f8h;

	}
   _AX=c;
       asm{
	   out dx,ax;
	 }


  }
void configuP(char c) // configuration des ports parall¦les
 {
  /* outportb(0x37A,0x04);
   outportb(0x378,c);*/
  asm{
      mov ax,04h
      mov dx,37ah
      out dx,ax
     }

   _AX=c;

   asm{ mov dx,378h;
	out dx,ax;
      }
     }
void signS() /* Fonction reserv&#8218;es aux ports s&#8218;ries  il permet  de synchronser
                  la transmission avec la clin sur l'ecran*/
             // en effet g essayer d'abaisser la vitess de transmission jusqa 1 bit par secende 
             // pour rendre le transmission visibile "des fins pedagogique"
             
             //Alors pour visualiser la transmission il faut executer le program sur in P III  800Mhz


{

   delay(100);
    for(int i=0;i<8;i++)
     {

	textbackground(7);
	clrscr();
	delay(264);
	textbackground(6);
	clrscr();
	gotoxy(2,3);
	cprintf("Transmission en cours..... ");
	textbackground(3);
	window(22,30,50,33);
	clrscr();
	gotoxy(14,3);
	cprintf("%d",t[8-i]);
	window(22,20,50,25);
	delay(264);

      }

}

main() //le programme principale
 { char c;
  clrscr();
  debut:
   init();
   textcolor(0);
   _setcursortype(_SOLIDCURSOR);
   textbackground(11);
   window(4,6,23,8);
   clrscr();
   gotoxy(1,3);
   cprintf(" Veuillerz dtaper un caract¦re ");
   textbackground(7);
   window(26,6,38,8);
   clrscr();
    gotoxy(6,2);
   cscanf("%c",&c);
   textbackground(7);
   window(22,15,50,17);
   _setcursortype(_NOCURSOR);
   clrscr();
   gotoxy(1,2);
   deb(c);
   textbackground(6);
   window(22,20,50,25);
   clrscr();
   gotoxy(2,2);
   int b;
   char s;
   cprintf("Tapez: 'S'----> Port S&#8218;rie \n");
   cprintf("       'P'----> Port Parall¦le ");
   error:
   s=getch();
   if (s=='s')
   {
    configuS(c);
    signS();

     }
     else if(s=='p')
      {
       configuP(c);
       }
       else
       {
	goto error;
       }

     textbackground(4);
     clrscr();
     gotoxy(1,3);
     cprintf("Transmission Termin&#8218;e \t avec succ&#8218;e!!!!");
     textbackground(7);
     window(29,40,78,42);
     clrscr();
     gotoxy(1,2);
     cprintf("Tapez 'Q' pour Quitter et 'ENTRER' pour continuer ");
     revenir:
     c=getch();
     if (c==13)
	goto debut;
     if (c!='q')
     goto revenir;

 }

 Conclusion

envoi des caratcteres via rs232

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

24 mars 2011 11:18:48 :
kelk explication des corrections

 Sources de la même categorie

Source avec Zip Source avec une capture [DEV-C++] GESTION DU PORT PARALLÈLE par victorcoasne
Source avec Zip Source avec une capture FAIRE GLISSER LA SOURIS par shorzy
Source avec Zip COMMUNICATION RS232 VIA PORT COM par MadMax1024
Source avec Zip Source avec une capture EXTINCTION ET REDEMARRAGE DE VOTRE MONITEUR À UNE HEURE PRÉC... par Yost
ÉTEINDRE ECRAN SOUS WINDOWS par kiki67100

 Sources en rapport avec celle ci

Source avec Zip GESTION DU PORT SÉRIE AVEC SURVEILLANCE DES PAQUETS POUR QT par samoura969
Source avec Zip Source avec une capture DEBUG DEVEL par alphaone
Source avec Zip Source avec une capture Source .NET (Dotnet) EMISSION D'UN OCTET SUR LE PORT SÉRIE - CLASSE SERIALPORT par jmchatelet01
Source avec Zip LIAISON SERIE RS-232 par yovotsa
Source avec Zip Source avec une capture AFFICHEUR LCD par zmtechnologie

Commentaires et avis

Commentaire de mounka le 30/03/2011 13:07:42

Bonjours je suis sous windows XP sur vb6 et j'aimerai savoire avec quoi tu complile se code car avec vb6 se n'est visiblement pas possible.
Merci de ta réponse !!!

Commentaire de morphixx le 30/03/2011 13:29:23

Pour executer ce code il faut utiliser soit Turbo C  ou  Dev C++

Hicham

Merci,

Commentaire de racpp le 01/04/2011 02:01:47 administrateur CS

Salut,
Ce genre de code ne peut marcher que sur MS-DOS, Windows 3.x, 9x et Me. Sur Windows NT/2000/XP/Vista/Seven l'accès direct aux ports est interdit car il faudra passer par un pilote.

Commentaire de morphixx le 01/04/2011 02:08:50

Bonsoir,
chui pas daccord avec toi  ce code a bien marcher sur 2000/XP  j l'ai pas executer sur vista et seven ...mais j pense kil marchera si on lexecute avec dos-box

merci.

Commentaire de racpp le 01/04/2011 07:28:10 administrateur CS

Ayant longtemps travaillé sur MS-DOS, Windows 3.x, 9x et Me, j'avais des codes comme le tien qui ont cessé de fonctionner sur NT/2000/XP. Pareil pour certains logiciels. Ce problème est d'ailleurs très connu. En fait, un système d'exploitation multitâche moderne ne doit jamais laisser une application accéder directement à un port matériel. Imagine deux applications qui accèdent en même temps à une imprimante branchée sur le port parallèle. Conséquence: conflit d'accès au port. C'est pour cette raison qu'on doit passer par un pilote sous les systèmes NT/2000/XP. Ce pilote organise l'accès au port voulu pour les applications qui le demandent. On peut utiliser les APIs de Windows ou certaines librairies comme la fameuse inpout32.dll. Cette dernière installe justement un pilote fonctionnant en kernel mode pour gérer l'accès aux ports.
DosBox est un émulateur conçu pour permettre de faire tourner les vieux programmes MS-DOS sur les systèmes récents. Il n'est pas du tout fait pour encourager les programmeurs à continuer à utiliser les vieilles techniques pour les faire tourner sur les systèmes modernes. Essaie plutôt de voir toutes les belles choses que ces systèmes récents nous offrent en tant que programmeurs.
Tu peux mettre un zip contenant le projet complet avec un exécutable en démo. Tout le monde pourra ainsi tester.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

bug sur rs232 [ par yo972 ] salut !j'ai réalisé un programme sur la rs232 sur C++Builder,je dois envoyer un chiffre sur la ligne rs232.j'ai réussi à l'exécuter une fois mais aprè Liaison série RS232 [ par NerOcrO ] Je cherche des programmes pour m'aider à programmer sur la liaison série RS232 en DOS. RS232 [ par bryg ] Salut,Comment mettre en place une liaison RS232 entre 2 PC.Merci de l'aide voici mon E-Mail: nofrifr@yahoo.fra+. com serie RS232 [ par hotrod1 ] Y'a t il quelqu'un qui saurait programmer la lecture / écriture d'un port serie rs232 sous visual c++ 6 , et sous win 2000 ???Sinon, si c'est possible com serie rs232 [ par hotrod1 ] Y'a t il quelqu'un qui saurait programmer la lecture / écriture d'un port serie rs232 sous visual c++ 6 , et sous win 2000 ???Sinon, si c'est possible com serie rs232 . [ par hotrod1 ] Y'a t il quelqu'un qui saurait programmer la lecture / écriture d'un port serie rs232 sous visual c++ 6 , et sous win 2000 ???Sinon, si c'est possible thread et RS232 [ par icarus13 ] Quelqu'un peut m'aider ? Je dois lancer plusieurs thread à la fois dont qui envoie un tableau par la liaison série !Merci !Yan thread et RS232 [ par icarus13 ] Quelqu'un peut m'aider ? Je dois lancer plusieurs thread à la fois dont un qui envoie un tableau par la liaison série !Merci !Yan Lecture d'un port serie (RS232) sous LINUX [ par DjBouch ] Je suis en BTS informatique industriel et mon projet consiste à lire les trames d'une station météo (wmr918) à travers un port série (RS232) sous Linu rs232 : pb avec ReadFile() [ par jujunio ] Frelon Bonjour, j'utilise la fonction Readfile pour lire sur le port serie rs232. Mon pb c'est que pour cette fonction, il faut rentrer en paramètre


Nos sponsors


Sondage...

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 : 0,047 sec (3)

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