![面就是用C語言編寫控制串行口的程序_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/15/705b8e61-af46-4857-958d-e5a361abab17/705b8e61-af46-4857-958d-e5a361abab171.gif)
![面就是用C語言編寫控制串行口的程序_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/15/705b8e61-af46-4857-958d-e5a361abab17/705b8e61-af46-4857-958d-e5a361abab172.gif)
![面就是用C語言編寫控制串行口的程序_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/15/705b8e61-af46-4857-958d-e5a361abab17/705b8e61-af46-4857-958d-e5a361abab173.gif)
![面就是用C語言編寫控制串行口的程序_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/15/705b8e61-af46-4857-958d-e5a361abab17/705b8e61-af46-4857-958d-e5a361abab174.gif)
![面就是用C語言編寫控制串行口的程序_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/15/705b8e61-af46-4857-958d-e5a361abab17/705b8e61-af46-4857-958d-e5a361abab175.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、面就是用C語言編寫控制串行口的程序。#include "dos.h"#include "stdlib.h"#include "stdio.h"#define PORT 0void SendFile(char *fname); /* 發(fā)送文件*/void Send(int s); /*發(fā)送一個字節(jié)*/void SendFileName(char *fname); /*發(fā)送文件名*/void
2、 ReceiveFile(); /*接收文件*/void GetFileName(char *f); /*接收文件名*/void InitPort(int port,unsigned char para); /*初始化端口*/void SendPort(int port,char c); /*端口發(fā)送*/int ReadPort(int port); /*讀端口字節(jié)*/int CheckState(int
3、port); /*檢查端口狀態(tài)*/int Receive(int port,int *G); /*接收一個字節(jié)*/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; /*取文件中一個字節(jié)的低4位*/Send(s);s=ch/16; /*取文件中一個字節(jié)的高4位*/Send(s);while(!feof(fp);s=46; /*發(fā)送文件結(jié)束信
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; /*取文件名中一個字節(jié)的低4位*/Send(s);s=ch/16;Send(s); /*取文件名中一個字節(jié)的低4位*/s=32; /*發(fā)送文件名結(jié)束標(biāo)志*/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);/*循環(huán)為檢測每次接受的數(shù)據(jù)是否為新數(shù)據(jù),如果不是,*/*則用此次接收的數(shù)據(jù)覆蓋上次接收的數(shù)據(jù)*/G1=ReadPort(PORT);G2=Receive(PORT,&G1);do G3=Receive(PORT,&G2);c
9、h=(char)(G1%16+G2*16);/*恢復(fù)分開的數(shù)據(jù),組合高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()/*如端口長期無數(shù)據(jù)可人為終止等待*/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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年深冷技術(shù)設(shè)備合作協(xié)議書
- 北師大版歷史八年級上冊第21課《民族工業(yè)的曲折發(fā)展》聽課評課記錄
- 首師大版道德與法治七年級上冊10.1《多樣的情緒》聽課評課記錄
- 人教版地理七年級下冊《8.3撒哈拉以南非洲》聽課評課記錄
- 湘教版地理八年級上冊2.2《中國的氣候》聽課評課記錄
- 湘教版地理八年級下冊《第三節(jié) 東北地區(qū)的產(chǎn)業(yè)分布》聽課評課記錄2
- 環(huán)境工程投資咨詢合同(2篇)
- 新版華東師大版八年級數(shù)學(xué)下冊《16.2.1分式的乘除》聽評課記錄5
- 浙教版數(shù)學(xué)七年級下冊《5.5 分式方程》聽評課記錄2
- 湘教版數(shù)學(xué)七年級下冊5.2《旋轉(zhuǎn)》聽評課記錄
- 保潔班長演講稿
- 課題研究實施方案 范例及課題研究方法及技術(shù)路線圖模板
- 牙髓炎中牙髓干細胞與神經(jīng)支配的相互作用
- 勞務(wù)雇傭協(xié)議書范本
- 【2022屆高考英語讀后續(xù)寫】主題升華積累講義及高級句型積累
- JGJ52-2006 普通混凝土用砂、石質(zhì)量及檢驗方法標(biāo)準(zhǔn)
- 環(huán)境監(jiān)測的基本知識
- 電動車棚施工方案
- 《中國十大書法家》課件
- 超實用可編輯版中國地圖全圖及分省地圖
- 西方法律思想史ppt
評論
0/150
提交評論