Obtencion datos con bioscom
Wenas. Estoy realizando un programa de comunicacion con un pic y me funciona cuando solo recibo un solo dato mediante el comando bioscom, cuando quiero realizar dos adquisiciones seguidas solo consigo que me coja el primero, para hacer las pruebas utilizo este pequeño codigo:
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <math.h>
void inicializa_puerto();
char lectura_puerto();
void envio(int dato);
void main(){
int in,in2,datos[]={0x00,0x01,0x02,0x03,0x04,0x08,0x09,0x0A,0x0B,0x0C,0x10,0x11,0x12,0x13,0x14,0x18,0x19,0x1A,0x1B,0x1C,0x20,0x21,0x22,0x23,0x24};
int s=1;
inicializa_puerto();
scanf("%d",&s);
while(s!=0){
envio(s);
delay(5);
in=lectura_puerto();
in2=lectura_puerto();
printf("s=%c in=%d in2=%d\n",s,in,in2);
scanf("%d",&s);
getche();
}
getche();
}
void inicializa_puerto(){
bioscom(0,227,0);
}
char lectura_puerto(){
char aux=\'\0\';
int i=0;
if(bioscom(3,0,0)&0x100){
aux=bioscom(2,0,0);
}
return aux;
}
void envio(int dato){
bioscom(1,dato,0);
}
El dato in, me llega perfectamente, pero el in2 no consigo que me lo coja.
El programa del micro esta bien ya que lo he probado con otro programa y va bien.
A ver si me echais una manita, Gracias de antemano y un Salu2.
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <math.h>
void inicializa_puerto();
char lectura_puerto();
void envio(int dato);
void main(){
int in,in2,datos[]={0x00,0x01,0x02,0x03,0x04,0x08,0x09,0x0A,0x0B,0x0C,0x10,0x11,0x12,0x13,0x14,0x18,0x19,0x1A,0x1B,0x1C,0x20,0x21,0x22,0x23,0x24};
int s=1;
inicializa_puerto();
scanf("%d",&s);
while(s!=0){
envio(s);
delay(5);
in=lectura_puerto();
in2=lectura_puerto();
printf("s=%c in=%d in2=%d\n",s,in,in2);
scanf("%d",&s);
getche();
}
getche();
}
void inicializa_puerto(){
bioscom(0,227,0);
}
char lectura_puerto(){
char aux=\'\0\';
int i=0;
if(bioscom(3,0,0)&0x100){
aux=bioscom(2,0,0);
}
return aux;
}
void envio(int dato){
bioscom(1,dato,0);
}
El dato in, me llega perfectamente, pero el in2 no consigo que me lo coja.
El programa del micro esta bien ya que lo he probado con otro programa y va bien.
A ver si me echais una manita, Gracias de antemano y un Salu2.
Mira lo que esta sucediendo contigo es que haces dos lecturas seguidas.
in=lectura_puerto();
in2=lectura_puerto();
Deberias hacer una pausa antes de hacer la segunda lectura, o hacer una espera hasta que halla un dato listo, pues el estado del puerto no indica que hay dato disponible por lo tanto no entra en esta condiciòn.
Espero haber ayudado a tiempo ya que trabajo en lo mismo, y pase a ver tu problema.
Saludos
if(bioscom(3,0,0)& 0x100)
in=lectura_puerto();
in2=lectura_puerto();
Deberias hacer una pausa antes de hacer la segunda lectura, o hacer una espera hasta que halla un dato listo, pues el estado del puerto no indica que hay dato disponible por lo tanto no entra en esta condiciòn.
Espero haber ayudado a tiempo ya que trabajo en lo mismo, y pase a ver tu problema.
Saludos
if(bioscom(3,0,0)& 0x100)
