




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面就是用C语言编写控制串行口的程序。#includedos.h#includestdlib.h#includestdio.h#definePORT0voidSendFile(char*fname);/*发送文件*/voidSend(ints);/*发送一个字节*/voidSendFileName(char*fname);/*发送文件名*/voidReceiveFile();/*接收文件*/voidGetFileName(char*f);/*接收文件名*/voidInitPort(intport,unsignedcharpara);/*初始化端口*/voidSendPort(intport,charc);/*端口发送*/intReadPort(intport);/*读端口字节*/intCheckState(intport);/*检查端口状态*/intReceive(intport,int*G);/*接收一个字节*/main(intargc,char*argv)if(argc2)printf(PleaseinputR(receive)orS(sent)parametre:);exit(1);InitPort(PORT,231);if(*argv1=S)/*检查选择的有效性*/SendFile(argv2);elseif(*argv1=R)ReceiveFile();elseprintf(Errorparament.Pleaseinputagain.);exit(1);voidSendFile(char*fname)FILE*fp;intch,s;if(fp=fopen(fname,rb)=NULL)printf(Cantopenthefile.n);exit(1);SendFileName(fname);doch=(int)getc(fp);if(ferror(fp)printf(Errorreadingfile.n);break;s=ch%16;/*取文件中一个字节的低4位*/Send(s);s=ch/16;/*取文件中一个字节的高4位*/Send(s);while(!feof(fp);s=46;/*发送文件结束信息*/Send(s);Send(s);fclose(fp);voidSend(s)ints;intG;SendPort(PORT,s);G=ReadPort(PORT);/*等待握手信号*/if(s!=G)s=s+16;doSendPort(PORT,s);G=ReadPort(PORT);/*等待握手信号*/while(s!=G);voidSendFileName(fname)char*fname;ints,ch;printf(Nowtransmitthefile.Pleasewait.);while(*fname)ch=(int)fname+;s=ch%16;/*取文件名中一个字节的低4位*/Send(s);s=ch/16;Send(s);/*取文件名中一个字节的低4位*/s=32;/*发送文件名结束标志*/Send(s);Send(s);voidReceiveFile()FILE*fp;charch;intG1,G2,G3;charfname15;GetFileName(fname);printf(Receivingfile%s.n,fname);remove(fname);if(fp=fopen(fname,wb)=NULL)printf(Cantopenoutputfile.n);exit(1);/*循环为检测每次接受的数据是否为新数据,如果不是,*/*则用此次接收的数据覆盖上次接收的数据*/G1=ReadPort(PORT);G2=Receive(PORT,&G1);doG3=Receive(PORT,&G2);ch=(char)(G1%16+G2*16);/*恢复分开的数据,组合高4位和低4位*/putc(ch,fp);if(ferror(fp)printf(nErrorwritingfile.);exit(1);G2=Receive(PORT,&G3);G1=G3;while(G1/16!=48);printf(nTransmitfinished.);fclose(fp);intReceive(port,G)intport,*G;intGM;SendPort(port,*G);GM=ReadPort(port);if(GM/16=0)returnGM;elseif(GM/16=1)do*G=GM;SendPort(port,GM);GM=ReadPort(port);while(GM/16=1);returnGM;voidGetFileName(char*f)intG1,G2,G3;charch;G1=ReadPort(PORT);G2=ReadPort(PORT);doG3=Receive(PORT,&G3);ch=(char)(G1%16+G2/16);*f=ch;*f+;G2=Receive(PORT,&G3);G1=G3;while(G1/16!=32);printf(Filenametransmitfinished.n);voidInitPort(port,para)intport;unsignedcharpara;unionREGSreg;reg.x.dx=port;reg.h.ah=0;reg.h.al=para;int86(0x14,);voidSendPort(port,c)intport;charc;unionREGSreg;reg.x.dx=port;reg.h.al=c;reg.h.ah=1;int86(0x14,);if(reg.h.ah&128)printf(nSendmistakes!);exit(1);intReadPort(port)intport;unionREGSreg;while(!(CheckState(port)&256)if(kbhit()/*如端口长期无数据可人为终止等待*/printf(Pressanykeytoexit.);getch();exit(1);reg.x.dx=port;reg.h.ah=2;int86(0x14,);if(reg.h.ah&128)p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年气管切开患者护理题库及答案
- 2025年护理研究人卫题库及答案
- 组织施工的基本方式与特点教学设计中职专业课-建筑施工组织与管理-建筑类-土木建筑大类
- 七年级地理上册 3.3 降水和降水的分布说课稿4 (新版)新人教版
- 8 Around the world说课稿小学英语Level 6剑桥国际少儿英语(第二版)
- 2025年潮州市法院系统招聘真题
- 2024年河南省文化旅游投资集团有限公司权属企业招聘笔试真题
- 高中基本能力 《非洲你好》说课说课稿
- 宣威事业单位笔试真题2025
- 2024-2025学年学年高二地理 南方地区说课稿
- 慢性病防治健康教育知识讲座
- 中国石化加油站视觉形象(VI)标准手册-课件
- 小学数学新旧知识关联
- 退费账户确认书
- 国家开放大学《政治学原理》章节自检自测题参考答案
- 第9课 共同弘扬中华传统美德 《中华民族大团结》(初中 精讲课件)
- 小学五年级道德与法治(上册)月考试卷及答案(一套)
- 恒瑞医药简介课件
- GB/T 20671.4-2006非金属垫片材料分类体系及试验方法第4部分:垫片材料密封性试验方法
- 灌肠分类、操作及并发症处理
- FZ/T 74003-2014击剑服
评论
0/150
提交评论