begin process at 2008 08 29 08:26:52
1 233 523 membres
62 nouveaux aujourd'hui
14 291 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LIAISON SÉRIE (ET MÊME USB)


Information sur la source

Catégorie :Application Niveau : Débutant Date de création : 28/04/2004 Date de mise à jour : 29/04/2004 09:17:50 Vu : 6 541

Note :
3 / 10 - par 1 personne
3,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

Description

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

  • #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;
  • }
  • }
  • }
  • }
#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;
	    	}
        }

    }
}



  • signaler à un administrateur
    Commentaire de Nadesico le 28/04/2004 13:40:31

    Je n'ai pas pu tester le programme car je l'ai corriger avec le bloc note de windows....

    Alors ne faites pas trop gaffe au erreur. ;-) lol
    @+

  • signaler à un administrateur
    Commentaire de LordBob le 28/04/2004 17:59:42

    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 !!!

  • signaler à un administrateur
    Commentaire de Nadesico le 29/04/2004 08:16:52

    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.

    @+

  • signaler à un administrateur
    Commentaire de nasrdinemardhi le 29/04/2004 22:00:25

    il faut reviser un peu le c
    pour pouvoir travailler sur le port serie il faut utiliser
    HANDLE port=CreateFile(.................)
    voila chef la solution;

Ajouter un commentaire

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS