Liaison série (et même usb)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 060 fois - Téléchargée 31 fois

Contenu du snippet

J'ai repris le programme de ma sempai et j'ai effectue les modifications qu'elle voulait.....
Une bref explication s'impose:
  • Maitenant on peut choisir sur quelle port communiquer

l*es ports com idem....pas de changement choix 0 -> port com 0 et 1 -> port com 1
  • Les usb dépenents du nbr de port com que vous avez sinon se sont les ports au dessus des ports coms.


PS: C'est celui de Pacifica mais avec des modifie qu'elle n'a pas pu apporter pour des raison personnelle (Plus de PC il es partie en réparation en Allemagne).

Source / Exemple :


#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <math.h>

union REGS regs;
char caract;
char tab[5];
int i=0,j,o,p,w;
int port=0;

void init_rs()
{
regs.h.ah = 0;
regs.x.dx = port;
regs.h.al = 0x1e;
int86(0x14, &regs,&regs);
}
void emission()
{
do {
regs.h.ah = 3;
int86(0x14, &regs,&regs);
}while ( (regs.h.ah && 0x20)== 0);

regs.h.ah = 1;
regs.x.dx = port;
regs.h.al = caract;
int86(0x14, &regs,&regs);
}
void reception(void)
{
regs.h.ah = 2;
regs.x.dx = port;
int86(0x14, &regs,&regs);
}

void main(void)
{
    char c='a';
    int u=0;
    clrscr();
    printf("Sur quel port voulez vous communiquer\n\r");
    while (c!=\r')
    {
	c=getch();
	if (c>='0' & c<='9')
	{
		tab[i]=c;
		printf("%c",c);
		i++;
	}
    }
    tab[i]=0x00;
    port=atoi(tab);
    clrscr();
    init_rs();
    c='0';
    i=0;
    j=0;
while (u!=1)
    {	
	clrscr();
	for(o=0;o<i;o++)
	{
		printf("Info emise: %c",tab_emis[o]);
	}
	printf("\n\r\n\r");
	if (u==3)
	{
		for(p=0;p<j;p++)
		{
			printf("Info recu: %c",tab_recept[p]);
		}
	}
	delay(50); // sert à ralentir le programme
        if (kbhit() & u!=2)
	{
		c=getch();
		printf("\r\n");
		if (c==0x1b) u=0;
		tab_emis[i]=c
		i++;
		if (c=='\r')
		{
			u=2;
			w=i;
			i=0;
		}
		if (c=0x1B) u=1; 	// caratere echap
        }
	if (u==2)
	{
		caract=tab_emis[i];
		emission();
		if (i==w)
		{
			u=0;
			i=0;
			w=0;
		}
		i++;
	}
        regs.h.ah = 3;
        regs.x.dx = port;
        int86(0x14, &regs,&regs);
        if(regs.h.ah & 0x01 == 0x01)
        {
           	reception();
            	c=regs.h.al;
           	tab_recept[j]=c;
	    	j++;
	    	if (c=='\r')
	    	{
			j=0;
			u=3;
	    	}
        }

    }
}

A voir également

Ajouter un commentaire

Commentaires

cs_kdider
Messages postés
6
Date d'inscription
dimanche 24 mai 2009
Statut
Membre
Dernière intervention
24 mai 2009
-
svp je veut connecter 2 pc a travers interface uart et je ss vraiment confondu , est ce qqu'un peut me dire les etapes que jue doit suivre
la progrmation est demandée en C
merci bk
ensi2005
Messages postés
6
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
13 février 2009
-
dans tous les cas merci
et bon courage
nasrdinemardhi
Messages postés
1
Date d'inscription
lundi 8 décembre 2003
Statut
Membre
Dernière intervention
29 avril 2004
-
il faut reviser un peu le c
pour pouvoir travailler sur le port serie il faut utiliser
HANDLE port=CreateFile(.................)
voila chef la solution;
cs_Nadesico
Messages postés
7
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
29 avril 2004
-
Oui mais,...., je n'ai pas de compilateur de là ou je me connecte, mes programme que je fais c'est Paciica qui les compiles on travaille en duo mais comme elle n'a plus de PC (jusqu'a fin mai) c'est plus dur pour compiler. Voilà tout. Je suis la petite soeur de Pacifica et avant je me connecter sous son pseudo, comme on travaillait en duo mais maintement que je suis là que pour les vacances (les études) je me suis fais un compte perso.

Mais normalement il est ok.

@+
cs_LordBob
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
8 -
bah je vais pas tester le code, mais tu aurrais du le poster quand tu aurrais été sur qu'il ne contenait pas d'erreur et qu'il s'executer normalement !!!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (cs_Nadesico)