版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jì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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上??苿?chuàng)職業(yè)技術(shù)學(xué)院《職業(yè)生涯教育與就業(yè)指導(dǎo)(含創(chuàng)新創(chuàng)業(yè)教育)(二)》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海交通職業(yè)技術(shù)學(xué)院《酒店實務(wù)案例及情景模擬》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海建橋?qū)W院《精細(xì)與功能高分子》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海濟(jì)光職業(yè)技術(shù)學(xué)院《機(jī)械工程控制基礎(chǔ)A》2023-2024學(xué)年第一學(xué)期期末試卷
- 護(hù)理精益改善項目匯報
- 上海海洋大學(xué)《小動物疾病》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海海洋大學(xué)《國際工程項目投資與融資》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海海關(guān)學(xué)院《專題設(shè)計(商業(yè)空間設(shè)計)》2023-2024學(xué)年第一學(xué)期期末試卷
- 教科研中期報告范文
- 2024年中國水基淬火液市場調(diào)查研究報告
- 【MOOC】信息安全-復(fù)旦大學(xué) 中國大學(xué)慕課MOOC答案
- 附屬醫(yī)院物業(yè)保潔服務(wù)方案及報價
- 中國慢性阻塞性肺疾病基層診療指南(2024年)解讀
- 大米營銷策劃方案
- 2024年影視制作委托合同協(xié)議書
- 石文化與寶玉石鑒賞智慧樹知到期末考試答案2024年
- 鉆咀培訓(xùn)資料
- 《設(shè)計調(diào)查問卷》教學(xué)設(shè)計范文
- 常用抗凝藥物的應(yīng)用及護(hù)理PPT課件
- 枇杷栽培技術(shù)26661
- 離退休干部管理崗試題
評論
0/150
提交評論