T
theone_in_themoon
Guest
Hej Alle ...
Ive set en handsom nej.stillinger om seriel kommunikation via RS-232 port ....Men mit problem er en smule mærkeligt.
Im benytter en simpel kode til at læse en fil tegn for tegn og transmitt det seriel.Wat jeg ville gerne gøre rent faktisk er at sende en WAV fil serie til en Micro controller, som gemmer det i en CF-kort.
I øjeblikket im teste den for at sende filen korrekt.Men selv når jeg slutte sig sammen i traans og modtage af Serial Port (COM1) programmet hænger op efter afsendelse ca.250 byte.
Ive forsøgt at sende en tekstfil, og at der sendes correcly ....men når du sender en WAV-fil ....programmet bare bliver hængende efter 251 bytes.
Ive spilles med en masse ...og ive bemærket, at hvis vi sætter en forsinkelse efter bioscom sende karakter kommandolinje ......så er der en ændring i nogen.af byets hvorefter det sætter sig fast.Men Max er det gået til, er 340 byte ca.
Her er koden:
Code:/ *
DETTE ER EN PROGRAME vil læse en FILE BYTE BY BYTE og sende den til
Seriel port.Det er imidlertid også får den samme CHAR tilbage og skriver det til en
Angivne placering.*** IT venter ikke på tilsendte CHAR ...
At blive modtaget* /# Include <conio.h>
# Include <iostream.h>
# Include <dos.h>
# Include <process.h>
# Include <stdio.h>
# Include <string.h>
# Include <fcntl.h>
# Include <io.h>
# Include <bios.h>
# Define COM1 0
# Define DATA_READY 0X100
# Define TRUE 1
# Define FALSE 0
# Define SETTINGS (0x80 | 0x03 | 0x00 | 0x00)void main (void)
(
clrscr ();FILE * file_r;FILE * file_w;char path_r [50];
char path_w [50];lang ctr_r = 0;
lang filstørrelse = 0;int håndtere = 0;
int status = 0;unsigned char ch_rx = 0;
unsigned char ch_tx = 0;bioscom (0, SETTINGS, COM1);domstol <<"\ n \ nEnter filstien for Læs:";
får (path_r);domstol <<"\ n \ nEnter filstien for Skriv:";
får (path_w);håndtag = åben (path_r, O_RDONLY);
filstørrelse = filelength (håndtag);
close (håndtag);
domstol <<"File Size:" <<filstørrelsen <<endl;file_r = fopen (path_r, "rb"); / / "rb" til "read only i BINARYif (! file_r)
(
perror ("Læs FILE ERROR");
getch ();
exit (0);
)file_w = fopen (path_w "wb" );//" wb "for skrives kun i BINARYif (! file_w)
(
perror ("Skriv fil fejl");
getch ();
exit (0);
)/ / Loop indtil slutningen af filen for læse
while (ctr_r <filstørrelsen)
(
ch_tx = fgetc (file_r);
bioscom (1, ch_tx, COM1);
domstol <<endl <<"Ch_Tx:" <<ch_tx;status = bioscom (3, 0, COM1);
if (status & DATA_READY)
(
ch_rx = bioscom (2, 0, COM1);
fputc (ch_rx, file_w);
domstol <<endl <<"Ch_Rx:" <<ch_rx <<"" <<ctr_r;
/ / Vent = 0;
/ / Getch ();
)ctr_r ;
)fclose (file_r);
fclose (file_w);domstol <<"\ n \ n \ WAV fil er oprettet!" <<endl;
getch ();
) / / Slut af de væsentligste
Ive set en handsom nej.stillinger om seriel kommunikation via RS-232 port ....Men mit problem er en smule mærkeligt.
Im benytter en simpel kode til at læse en fil tegn for tegn og transmitt det seriel.Wat jeg ville gerne gøre rent faktisk er at sende en WAV fil serie til en Micro controller, som gemmer det i en CF-kort.
I øjeblikket im teste den for at sende filen korrekt.Men selv når jeg slutte sig sammen i traans og modtage af Serial Port (COM1) programmet hænger op efter afsendelse ca.250 byte.
Ive forsøgt at sende en tekstfil, og at der sendes correcly ....men når du sender en WAV-fil ....programmet bare bliver hængende efter 251 bytes.
Ive spilles med en masse ...og ive bemærket, at hvis vi sætter en forsinkelse efter bioscom sende karakter kommandolinje ......så er der en ændring i nogen.af byets hvorefter det sætter sig fast.Men Max er det gået til, er 340 byte ca.
Her er koden:
Code:/ *
DETTE ER EN PROGRAME vil læse en FILE BYTE BY BYTE og sende den til
Seriel port.Det er imidlertid også får den samme CHAR tilbage og skriver det til en
Angivne placering.*** IT venter ikke på tilsendte CHAR ...
At blive modtaget* /# Include <conio.h>
# Include <iostream.h>
# Include <dos.h>
# Include <process.h>
# Include <stdio.h>
# Include <string.h>
# Include <fcntl.h>
# Include <io.h>
# Include <bios.h>
# Define COM1 0
# Define DATA_READY 0X100
# Define TRUE 1
# Define FALSE 0
# Define SETTINGS (0x80 | 0x03 | 0x00 | 0x00)void main (void)
(
clrscr ();FILE * file_r;FILE * file_w;char path_r [50];
char path_w [50];lang ctr_r = 0;
lang filstørrelse = 0;int håndtere = 0;
int status = 0;unsigned char ch_rx = 0;
unsigned char ch_tx = 0;bioscom (0, SETTINGS, COM1);domstol <<"\ n \ nEnter filstien for Læs:";
får (path_r);domstol <<"\ n \ nEnter filstien for Skriv:";
får (path_w);håndtag = åben (path_r, O_RDONLY);
filstørrelse = filelength (håndtag);
close (håndtag);
domstol <<"File Size:" <<filstørrelsen <<endl;file_r = fopen (path_r, "rb"); / / "rb" til "read only i BINARYif (! file_r)
(
perror ("Læs FILE ERROR");
getch ();
exit (0);
)file_w = fopen (path_w "wb" );//" wb "for skrives kun i BINARYif (! file_w)
(
perror ("Skriv fil fejl");
getch ();
exit (0);
)/ / Loop indtil slutningen af filen for læse
while (ctr_r <filstørrelsen)
(
ch_tx = fgetc (file_r);
bioscom (1, ch_tx, COM1);
domstol <<endl <<"Ch_Tx:" <<ch_tx;status = bioscom (3, 0, COM1);
if (status & DATA_READY)
(
ch_rx = bioscom (2, 0, COM1);
fputc (ch_rx, file_w);
domstol <<endl <<"Ch_Rx:" <<ch_rx <<"" <<ctr_r;
/ / Vent = 0;
/ / Getch ();
)ctr_r ;
)fclose (file_r);
fclose (file_w);domstol <<"\ n \ n \ WAV fil er oprettet!" <<endl;
getch ();
) / / Slut af de væsentligste