版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面就是用C语言编写控制串行口的程序。#include "dos.h"#include "stdlib.h"#include "stdio.h"#define PORT 0void SendFile(char *fname); /* 发送文件*/void Send(int s); /*发送一个字节*/void SendFileName(char *fname); /*发送文件名*/void
2、 ReceiveFile(); /*接收文件*/void GetFileName(char *f); /*接收文件名*/void InitPort(int port,unsigned char para); /*初始化端口*/void SendPort(int port,char c); /*端口发送*/int ReadPort(int port); /*读端口字节*/int CheckState(int
3、port); /*检查端口状态*/int Receive(int port,int *G); /*接收一个字节*/main(int argc,char *argv)if(argc<2)printf("Please input R(receive) or S(sent) parametre:");exit(1);InitPort(PORT,231);if(*argv1=''''S'''')
4、 /*检查选择的有效性*/SendFile(argv2);else if(*argv1=''''R'''')ReceiveFile();elseprintf("Error parament.Please input again.");exit(1);void SendFile(char *fname)FILE *fp;int ch,s;if(fp=fopen(fname,"rb")=NULL)print
5、f("Can''''t open the file.n");exit(1);SendFileName(fname);doch=(int)getc(fp);if(ferror(fp)printf("Error reading file.n");break;s=ch%16; /*取文件中一个字节的低4位*/Send(s);s=ch/16; /*取文件中一个字节的高4位*/Send(s);while(!feof(fp);s=46; /*发送文件结束信
6、息*/Send(s);Send(s);fclose(fp);void Send(s)int s;int G;SendPort(PORT,s);G=ReadPort(PORT); /*等待握手信号*/if(s!=G)s=s+16;doSendPort(PORT,s);G=ReadPort(PORT);/*等待握手信号*/while(s!=G);void SendFileName(fname)char *fname;int s,ch;printf("Now transmit the fil
7、e.Please wait.");while(*fname)ch=(int)fname+;s=ch%16; /*取文件名中一个字节的低4位*/Send(s);s=ch/16;Send(s); /*取文件名中一个字节的低4位*/s=32; /*发送文件名结束标志*/Send(s);Send(s);void ReceiveFile()FILE *fp;char ch;int G1,G2,G3;char fname15;GetFileName(fname);printf("Receiving
8、 file %s.n",fname);remove(fname);if(fp=fopen(fname,"wb")=NULL)printf("Can''''t open output file.n");exit(1);/*循环为检测每次接受的数据是否为新数据,如果不是,*/*则用此次接收的数据覆盖上次接收的数据*/G1=ReadPort(PORT);G2=Receive(PORT,&G1);do G3=Receive(PORT,&G2);c
9、h=(char)(G1%16+G2*16);/*恢复分开的数据,组合高4位和低4位*/putc(ch,fp);if(ferror(fp)printf("nError writing file.");exit(1);G2=Receive(PORT,&G3);G1=G3;while(G1/16!=48);printf("nTransmit finished.");fclose(fp);int Receive(port,G)int port,*G;int GM;SendPort(port,*G
10、);GM=ReadPort(port);if(GM/16=0)return GM;else if(GM/16=1)do*G=GM;SendPort(port,GM);GM=ReadPort(port);while(GM/16=1);return GM;void GetFileName(char *f)int G1,G2,G3;char ch;G1=ReadPort(PORT);G2=ReadPort(PORT);doG3=Receive(PORT,&G3);ch=(char)(G1%16+G2/16);*f=ch;*
11、f+;G2=Receive(PORT,&G3);G1=G3;while(G1/16!=32);printf("File name transmit finished.n");void InitPort(port,para)int port;unsigned char para;union REGS reg;reg.x.dx=port;reg.h.ah=0;reg.h.al=para;int86(0x14,®,®);void SendPort(por
12、t,c)int port;char c;union REGS reg;reg.x.dx=port;reg.h.al=c;reg.h.ah=1;int86(0x14,®,®);if(reg.h.ah&128)printf("nSend mistakes!");exit(1);int ReadPort(port)int port;union REGS reg;while(!(CheckState(port)&256)if(kbhit()/*如端口长期无数据可人为终止等待*/printf("Press any key to exit.");getch();exit(1);reg.x.dx=port;reg.h.ah=2;int86(0x14,®,®);if(reg.h.ah&128)printf(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 部编版四年级语文上册第10课《爬山虎的脚》精美课件
- 2024版采购代理居间合同3篇
- 2024年度软件开发合同标的及软件交付时间3篇
- 智能制造生产线技术及应用 教案 2-1 智能制造生产线概述
- 《核医学影像设备》课件
- 《动脉粥样硬化》课件
- 现实与理想-西方古典绘画 课件-2023-2024学年高中美术人美版(2019)美术鉴赏
- (高考真题)2022年广东省普通高中学业水平选择性考试化学试题(解析版)
- 开题报告:中国教育国际学术话语的发展历程与重塑策略
- 开题报告:职业教育产教融合共同体的机制探索与发展策略研究
- 亚马逊品牌授权书(英文模板)
- 海河开启桥设计概况
- 车辆维修保养制度
- 钢轨闪光焊 技术 焊缝 伤损_图文
- 北师大版八年级数学上册 6.2中位数与众数 导学案(无答案)
- 风管风机吊架重量表
- 中班音乐课件:朋友越多越快乐
- 房屋漏水赔偿协议书甲方
- 餐饮单位废弃油脂处理记录表
- 预焙阳极配料控制
- 二阶低通滤波器的设计-模电课设报告
评论
0/150
提交评论