Liaison série (et même usb)

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

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)