Buenas.
Tengo un par de programas que te podrían interesar. El primero se llama "paralelo.c" y captura datos del puerto paralelo y los guarda en un fichero llamado "muestreo.txt".
Codigo:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
int puerto,anterior;
long array[10000];
long i,n;
FILE *fichero;
void main()
{
n=10;
clrscr();
printf("Pulsa una tecla para empezar."
;
getch();
printf("
Leyendo %d datos....",n);
for(i=0;i<n;i++)
{
puerto=inportb(0x379);
if(puerto!=anterior)
{
array=puerto;
anterior=puerto;
}
else
i--;
}
fichero=fopen("muestreo.txt","wt"
;
for(i=0;i<n;i++)
{
fprintf(fichero,"Codigo %d:",i);
switch(array)
{
case 0x3f: fprintf(fichero," 11
"
;break;
case 0x37: fprintf(fichero," 10
"
;break;
case 0x27: fprintf(fichero," 00
"
;break;
case 0x2f: fprintf(fichero," 01
"
;break;
}
}
fclose(fichero);
}
El segundo configura el puerto serie a 9600 baudios 8N1 y envía datos por el, en primer lugar tomados del teclado y (comentado) tomados de un fichero.
Codigo:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
unsigned p;
unsigned char caracter;
long n,i,j,m;
FILE *fichero;
void inicia();
void retraso();
void main()
{
n=100000;
m=0x40;
p=0x3f8;
inicia();
clrscr();
outportb(p,0x02);
retraso();
// fichero=fopen("Linea1.txt","rt"
;
for(j=0;j<m;j++){
caracter=getch();
if((j&0x1F)==0x10) outportb(p,0x01), printf("
"
;
if((j&0x1F)==0x00) outportb(p,0x02), printf("
"
;
retraso();
printf("%c",caracter);
outportb(p,caracter);
retraso();
}
/* printf("Pulsa una tecla para empezar."
;
getch();
printf("
Transfiriendo datos del archivo...."
;
printf("
Pulsa continuadamente una tecla para enviar cada caracter al LCD"
;
retraso();
outportb(p,0x02);
while((feof(fichero))==0)
{
caracter=fgetc(fichero);
retraso();
outportb(p,caracter);
}
fclose(fichero);
retraso();
outportb(p,0x01);
fichero=fopen("Linea2.txt","rt"
;
while((feof(fichero))==0)
{
caracter=fgetc(fichero);
retraso();
outportb(p,caracter);
}
fclose(fichero);
printf("
Transferencia realizada.
Pulsa una tecla para finalizar"
;
retraso();
fclose(fichero); */
}
void inicia()
{
outportb(p+3,0x80); /* Activa el bit DLAB de la velocidad. */
outportb(p,0x0C); /* Código correspondiente a la */
outportb(p+1,0x00); /* velocidad de 96000 bps. en DLL y DLM */
outportb(p+3,0x03); /* desactiva el bit DLAB y */
/* configura el puerto. */
}
void retraso()
{
for(i=0;i<n;i++)
n=n;
}
A ver si haciendo una mezcla de ambos puedes hacer lo que quieres.