DOS下串口通信程序来传送文件的源代码 分类: DOS 2013-07-22 16:30 465人阅读 评论(0) 收藏
2013-07-22 16:30
661 查看
接收程序:
#include <dos.h>
#include <fstream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define RXD 0 //接收
#define TXD 0 //发送
#define LSB 0 //波特率调节低8位
#define MSB 1 //波特率调节高8位
#define IER 1 // 中断起用寄存器
#define IIR 2 //中断标识寄存器
#define LCR 3 //线路控制寄存器
#define MCR 4 //调制解调器控制寄存器
#define LSR 5 //线路状态寄存器
#define MSR 6 //调制解调器状态寄存器
#define IERV 1
#define OUT2 0x08
#define ERTS 2
#define EDTR 1
#define EMPTY 0X20
#define READY 0X30
#define ICREG 0X20
#define IMASKREG 0X21
#define EOI 0X20
#define WAITCOUNT 5000
#define BUFFLEN 2048 //用于存储字符的数组的界
#define ALTE 0X12
#define ALTQ 0X10
#define SER_BAUD_1200 96
#define SER_BAUD_2400 48
#define SER_BAUD_9600 0x0C
#define SER_BAUD_19200 6
#define SER_STOP_1 0 /*/ 1 stop bit per character*/
#define SER_STOP_2 4 /*/ 2 stop bits per character*/
#define SER_BITS_5 0 /*/ send 5 bit characters*/
#define SER_BITS_6 1 /*/ send 6 bit characters*/
#define SER_BITS_7 2 /*/ send 7 bit characters*/
#define SER_BITS_8 3 /*/ send 8 bit characters*/
#define SER_PARITY_NONE 0 /*/ no parity*/
#define SER_PARITY_ODD 8 /*/ odd parity*/
#define SER_PARITY_EVEN 24 /*/ even parity*/
int port;
int ComNum;
unsigned portaddr;
unsigned portf;
unsigned char buffer[BUFFLEN];//recv buf
int buffin=0;
int buffout=0;
int incount=0;
int outcount=0;
void interrupt(*vect_com)(...);
void putb(unsigned char ch)//write a char to the recvbuf 将中断得到的数据写到缓冲区
unsigned char getb()//read a char from the recvbuf
void interrupt receiver(...)
void SerInit(int baud,int configuration)
void SerOpen(void)
void SerClose(void)
void Getportaddr(int port)
void Int()
void main()//com1 receive
---------------
发送文件程序
#include <dos.h>
#include <bios.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <graphics.h>
#ifdef __cplusplus
#define __CPPARGS ...
#else
#define __CPPARGS
#endif
#define SER_RBF 0
#define SER_THR 0
#define SER_IER 1
#define SER_IIR 2
#define SER_LCR 3
#define SER_MCR 4
#define SER_LSR 5
#define SER_MSR 6
#define SER_DLL 0
#define SER_DLH 1
#define SER_BAUD_1200 96
#define SER_BAUD_2400 48
#define SER_BAUD_9600 12
#define SER_BAUD_19200 6
#define SER_GP02 8
#define COM_1 0x3F8
#define COM_2 0x2F8 /*/ base port address of port 1*/
#define COM_3 0x3E8
#define COM_4 0x2E8
#define SER_STOP_1 0 /*/ 1 stop bit per character*/
#define SER_STOP_2 4 /*/ 2 stop bits per character*/
#define SER_BITS_5 0 /*/ send 5 bit characters*/
#define SER_BITS_6 1 /*/ send 6 bit characters*/
#define SER_BITS_7 2 /*/ send 7 bit characters*/
#define SER_BITS_8 3 /*/ send 8 bit characters*/
#define SER_PARITY_NONE 0 /*/ no parity*/
#define SER_PARITY_ODD 8 /*/ odd parity*/
#define SER_PARITY_EVEN 24 /*/ even parity*/
#define SER_DIV_LATCH_ON 128 /*/ used to turn reg 0,1 into divisor latch*/
#define PIC_IMR 0x21 /*/ pic's interrupt mask reg.*/
#define PIC_ICR 0x20 /*/ pic's interupt control reg.*/
#define INT_SER_PORT_0 0x0C /*/ port 0 interrupt com 1 & 3*/
#define INT_SER_PORT_1 0x0B /*/ port 0 interrupt com 2 & 4*/
#define SERIAL_BUFF_SIZE 128 /*/ current size of circulating receive buffer*/
void interrupt far Serial_Isr(__CPPARGS)
int Ready_Serial()
int Serial_Read()
Serial_Write(char ch)
Open_Serial(int port_base, int baud, int configuration)
Close_Serial(int port_base)
void main(int argc,char *argv[])
...{
char ch,press;
int done=0;
FILE *fp;
argc=2;
//argv[1]="c:/comfile.c";
if(argc<2)
...{
printf(" Usage:display filename.wav!!!");
// exit(1);
}
if((fp=fopen(argv[1],"r+b"))==NULL)
...{
printf("cannot open the file ");
// exit(0);
}
fseek(fp, 0, SEEK_SET);
Open_Serial(COM_1,SER_BAUD_9600,SER_PARITY_EVEN| SER_BITS_8 | SER_STOP_1);
printf("com:1;bps:9600;parity:even;bits:8;stop bit:1");
printf("press any key to begin sending");
getch();
//Serial_Write(''); //该语句可用于发送单个字符
while(!done&&ch != EOF) //发送文件开始
...{
ch = fgetc(fp);
//if(ch==EOF) Serial_Write(27);
Serial_Write(ch);
delay(30);
if (kbhit())
...{
press=getch();
if (press==27)
...{
Serial_Write(27);
done=1;
}
}
}
Close_Serial(COM_1);
fclose(fp);
}
#include <dos.h>
#include <fstream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define RXD 0 //接收
#define TXD 0 //发送
#define LSB 0 //波特率调节低8位
#define MSB 1 //波特率调节高8位
#define IER 1 // 中断起用寄存器
#define IIR 2 //中断标识寄存器
#define LCR 3 //线路控制寄存器
#define MCR 4 //调制解调器控制寄存器
#define LSR 5 //线路状态寄存器
#define MSR 6 //调制解调器状态寄存器
#define IERV 1
#define OUT2 0x08
#define ERTS 2
#define EDTR 1
#define EMPTY 0X20
#define READY 0X30
#define ICREG 0X20
#define IMASKREG 0X21
#define EOI 0X20
#define WAITCOUNT 5000
#define BUFFLEN 2048 //用于存储字符的数组的界
#define ALTE 0X12
#define ALTQ 0X10
#define SER_BAUD_1200 96
#define SER_BAUD_2400 48
#define SER_BAUD_9600 0x0C
#define SER_BAUD_19200 6
#define SER_STOP_1 0 /*/ 1 stop bit per character*/
#define SER_STOP_2 4 /*/ 2 stop bits per character*/
#define SER_BITS_5 0 /*/ send 5 bit characters*/
#define SER_BITS_6 1 /*/ send 6 bit characters*/
#define SER_BITS_7 2 /*/ send 7 bit characters*/
#define SER_BITS_8 3 /*/ send 8 bit characters*/
#define SER_PARITY_NONE 0 /*/ no parity*/
#define SER_PARITY_ODD 8 /*/ odd parity*/
#define SER_PARITY_EVEN 24 /*/ even parity*/
int port;
int ComNum;
unsigned portaddr;
unsigned portf;
unsigned char buffer[BUFFLEN];//recv buf
int buffin=0;
int buffout=0;
int incount=0;
int outcount=0;
void interrupt(*vect_com)(...);
void putb(unsigned char ch)//write a char to the recvbuf 将中断得到的数据写到缓冲区
unsigned char getb()//read a char from the recvbuf
void interrupt receiver(...)
void SerInit(int baud,int configuration)
void SerOpen(void)
void SerClose(void)
void Getportaddr(int port)
void Int()
void main()//com1 receive
---------------
发送文件程序
#include <dos.h>
#include <bios.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <graphics.h>
#ifdef __cplusplus
#define __CPPARGS ...
#else
#define __CPPARGS
#endif
#define SER_RBF 0
#define SER_THR 0
#define SER_IER 1
#define SER_IIR 2
#define SER_LCR 3
#define SER_MCR 4
#define SER_LSR 5
#define SER_MSR 6
#define SER_DLL 0
#define SER_DLH 1
#define SER_BAUD_1200 96
#define SER_BAUD_2400 48
#define SER_BAUD_9600 12
#define SER_BAUD_19200 6
#define SER_GP02 8
#define COM_1 0x3F8
#define COM_2 0x2F8 /*/ base port address of port 1*/
#define COM_3 0x3E8
#define COM_4 0x2E8
#define SER_STOP_1 0 /*/ 1 stop bit per character*/
#define SER_STOP_2 4 /*/ 2 stop bits per character*/
#define SER_BITS_5 0 /*/ send 5 bit characters*/
#define SER_BITS_6 1 /*/ send 6 bit characters*/
#define SER_BITS_7 2 /*/ send 7 bit characters*/
#define SER_BITS_8 3 /*/ send 8 bit characters*/
#define SER_PARITY_NONE 0 /*/ no parity*/
#define SER_PARITY_ODD 8 /*/ odd parity*/
#define SER_PARITY_EVEN 24 /*/ even parity*/
#define SER_DIV_LATCH_ON 128 /*/ used to turn reg 0,1 into divisor latch*/
#define PIC_IMR 0x21 /*/ pic's interrupt mask reg.*/
#define PIC_ICR 0x20 /*/ pic's interupt control reg.*/
#define INT_SER_PORT_0 0x0C /*/ port 0 interrupt com 1 & 3*/
#define INT_SER_PORT_1 0x0B /*/ port 0 interrupt com 2 & 4*/
#define SERIAL_BUFF_SIZE 128 /*/ current size of circulating receive buffer*/
void interrupt far Serial_Isr(__CPPARGS)
int Ready_Serial()
int Serial_Read()
Serial_Write(char ch)
Open_Serial(int port_base, int baud, int configuration)
Close_Serial(int port_base)
void main(int argc,char *argv[])
...{
char ch,press;
int done=0;
FILE *fp;
argc=2;
//argv[1]="c:/comfile.c";
if(argc<2)
...{
printf(" Usage:display filename.wav!!!");
// exit(1);
}
if((fp=fopen(argv[1],"r+b"))==NULL)
...{
printf("cannot open the file ");
// exit(0);
}
fseek(fp, 0, SEEK_SET);
Open_Serial(COM_1,SER_BAUD_9600,SER_PARITY_EVEN| SER_BITS_8 | SER_STOP_1);
printf("com:1;bps:9600;parity:even;bits:8;stop bit:1");
printf("press any key to begin sending");
getch();
//Serial_Write(''); //该语句可用于发送单个字符
while(!done&&ch != EOF) //发送文件开始
...{
ch = fgetc(fp);
//if(ch==EOF) Serial_Write(27);
Serial_Write(ch);
delay(30);
if (kbhit())
...{
press=getch();
if (press==27)
...{
Serial_Write(27);
done=1;
}
}
}
Close_Serial(COM_1);
fclose(fp);
}
相关文章推荐
- JFFS2 文件系统及新特性介绍 分类: arm-linux-Ubuntu 2013-07-22 16:30 269人阅读 评论(0) 收藏
- TI Davinci DM6446开发攻略——根文件系统的裁剪和移植 分类: DSP 2013-07-22 16:30 339人阅读 评论(0) 收藏
- Davinci DM6446 Codec Engine双核通信环境的搭建 分类: DSP 2013-07-22 16:30 353人阅读 评论(0) 收藏
- DOS下串口通信程序来传送文件的源代码
- DOS下串口通信程序来传送文件的源代码
- DOS下串口通信程序来传送文件的源代码。
- DOS下串口通信程序来传送文件的源代码
- gm8180:arm linux启动加载模块、运行程序 分类: arm-linux-Ubuntu 2013-07-22 16:30 416人阅读 评论(0) 收藏
- vxworks下的串口测试程序 分类: vxWorks 2014-04-22 14:15 657人阅读 评论(0) 收藏
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 信号量通信机制 分类: Linux --- 应用程序设计 2014-11-13 11:08 70人阅读 评论(0) 收藏
- 嵌入式 Linux 与linux启动时自动加载模块 分类: arm-linux-Ubuntu 2013-07-22 16:30 242人阅读 评论(0) 收藏
- Davinci DM6446开发攻略——LINUX GPIO驱动源码移植 分类: DSP 2013-07-22 16:30 381人阅读 评论(0) 收藏
- ubuntu11.04启动 及虚拟文件系统 分类: arm-linux-Ubuntu 2013-07-22 16:28 369人阅读 评论(0) 收藏
- AHB/APB简介 分类: arm-linux-Ubuntu 2013-07-22 16:30 335人阅读 评论(0) 收藏
- vxWorks下dosFs文件系统的创建 分类: vxWorks 2014-08-05 15:59 706人阅读 评论(1) 收藏
- 用开源的 ffmpeg 实现屏幕录像机 分类: arm-linux-Ubuntu 2013-07-22 16:30 670人阅读 评论(0) 收藏
- AVS、MPEG-2、H264标准文档 分类: VC++ 2013-07-22 16:30 366人阅读 评论(0) 收藏
- FFMpeg.H264解码win开发环境搭建 分类: VC++ ffmpeg-SDL-VLC-Live555 2013-07-22 16:30 485人阅读 评论(0) 收藏
- 如何进行系统配置 ——了解DOS下的内存 分类: DOS 2013-07-22 16:29 389人阅读 评论(0) 收藏
- 如何编译linux第一个模块 hellomod.ko 分类: arm-linux-Ubuntu 2013-07-22 16:30 286人阅读 评论(0) 收藏