dos环境c语言写串口程序,DOS下串口通信程序来传送文件的源代码(转)

本文介绍了如何在DOS环境下使用C语言编写串口通信程序,实现文件的传输。程序包括接收和发送两个部分,适用于短距离调试,但长距离或强干扰环境下可能无法保证数据准确性。程序目前缺少文件校验功能,未来计划增加。
摘要由CSDN通过智能技术生成

我们PC/104系统只能装DOS,并且只有串口。平时调试很不方便,需要将电脑里的程序写到软盘,然后

再通过软盘复制到开发装置。可怜软驱还不争气,到现在已经坏了好多软盘了。而且调试间和办公室离得比较远。到了调试间软盘读不出来,很郁闷。

这些天任务不是很重,就利用现有资源把串口程序整理了一下。做了一个DOS下的文件传送程序。在短距离下调试通过,不过长距离或者现场干扰较大的话,就不能保证传送的正确了。毕竟程序里没有校验文件功能,等以后再加吧。以后还要加一个传送整个文件夹的功能。

抛砖引玉。

接收程序:

#include #include #include #include #include #include #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 int baudtable[]={0x180,0xc0,0x60,0x30,0x18,0x0c,0x06};

unsigned char paritytable[]={0x08,0x18,0x00,0x28,0x38};

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 将中断得到的数据写到缓冲区

{

int temp;

temp=buffin;

if(++buffin==BUFFLEN)

buffin=0;

if(buffin!=buffout)

{buffer[buffin]=ch;

//      printf("bufferin[%d]=%c",buffer[buffin]);

//     getch();

}

else

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值