![面就是用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)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
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ā)送文件結束信
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ā)送文件名結束標志*/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);/*恢復分開的數(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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中外投資合作合同樣本
- 個人房屋按揭貸款合同
- 二手電子產(chǎn)品購銷合同范本及風險防范
- 個人勞動合同標準范例
- 個人兼職合同模板
- 二手房轉(zhuǎn)讓合同書示例
- 個體工商戶合作合同范本解析
- 中外合資股權轉(zhuǎn)讓合同范本(互聯(lián)網(wǎng)企業(yè))
- 個人購房合同標準格式
- 專業(yè)人才培養(yǎng)合同標準文本
- 2024-2025學年成都市金牛區(qū)九年級上期末(一診)英語試題(含答案)
- 2024-2025學年廣東省深圳市南山區(qū)監(jiān)測數(shù)學三年級第一學期期末學業(yè)水平測試試題含解析
- 廣東2024年廣東金融學院招聘專職輔導員9人筆試歷年典型考點(頻考版試卷)附帶答案詳解
- 2025年研究生考試考研英語(二204)試卷與參考答案
- DB31∕731-2020 船舶修正總噸單位產(chǎn)品能源消耗限額
- 2024-年全國醫(yī)學博士外語統(tǒng)一入學考試英語試題
- 2024年衛(wèi)生專業(yè)技術資格考試衛(wèi)生檢驗技術(初級(師)211)相關專業(yè)知識試題及答案指導
- 《手衛(wèi)生知識培訓》培訓課件
- 江蘇省南京鼓樓區(qū)2024年中考聯(lián)考英語試題含答案
- 兒科護理學試題及答案解析-神經(jīng)系統(tǒng)疾病患兒的護理(二)
- 15篇文章包含英語四級所有詞匯
評論
0/150
提交評論