版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
面就是用C語言編寫控制串行口的程序面就是用C語言編寫控制串行口的程序面就是用C語言編寫控制串行口的程序xxx公司面就是用C語言編寫控制串行口的程序文件編號:文件日期:修訂次數(shù):第1.0次更改批準(zhǔn)審核制定方案設(shè)計(jì),管理制度面就是用C語言編寫控制串行口的程序。
#include
""
#include
""
#include
""
#define
PORT
0
void
SendFile(char
*fname);
/*
發(fā)送文件*/
void
Send(int
s);
/*發(fā)送一個字節(jié)*/
void
SendFileName(char
*fname);
/*發(fā)送文件名*/
void
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
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(*argv[1]==''''S'''')
/*檢查選擇的有效性*/
SendFile(argv[2]);
else
if(*argv[1]==''''R'''')
ReceiveFile();
else{
printf("Error
input
again.");
exit(1);
}
}
void
SendFile(char
*fname)
{
FILE
*fp;
int
ch,s;
if((fp=fopen(fname,"rb"))==NULL)
{
printf("Can''''t
open
the
file.\n");
exit(1);
}
SendFileName(fname);
do{
ch=(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é)束信息*/
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;
do{
SendPort(PORT,s);
G=ReadPort(PORT);/*等待握手信號*/
}while(s!=G);
}
void
SendFileName(fname)
char
*fname;
{
int
s,ch;
printf("Now
transmit
the
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
fname[15];
GetFileName(fname);
printf("Receiving
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);
ch=(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);
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);
do{
G3=Receive(PORT,&G3);
ch=(char)(G1%16+G2/16);
*f=ch;
*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;
int86(0x14,?,?);
}
void
SendPort(port,c)
int
port;
char
c;
{
union
REGS
reg;
int86(0x14,?,?);
if&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();
ex
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年6月浙江省高考生物試卷真題(含答案解析)
- 中國戶外廣告投光燈行業(yè)市場調(diào)查研究報(bào)告
- 2024至2030年中國射頻前端接收濾波放大單元數(shù)據(jù)監(jiān)測研究報(bào)告
- 2024至2030年中國凸面平焊法蘭數(shù)據(jù)監(jiān)測研究報(bào)告
- 2024至2030年中國HDPE再生顆粒數(shù)據(jù)監(jiān)測研究報(bào)告
- 2024年中國耐熱硅橡膠屏蔽軟電纜市場調(diào)查研究報(bào)告
- 2024年中國彩照模塊市場調(diào)查研究報(bào)告
- 2024年中國手機(jī)外殼塑膠無塵噴涂線市場調(diào)查研究報(bào)告
- 程力勞動合同
- 倉單轉(zhuǎn)賣合同
- 2024延遲退休政策詳解
- 人力資源行業(yè)人才招聘網(wǎng)站設(shè)計(jì)與優(yōu)化方案
- 高職計(jì)算機(jī)專業(yè)《數(shù)據(jù)庫原理與應(yīng)用》說課稿
- 2024至2030年中國新型肥料行業(yè)發(fā)展現(xiàn)狀分析及市場分析預(yù)測報(bào)告
- 8 網(wǎng)絡(luò)新世界 第三課時(教學(xué)設(shè)計(jì))統(tǒng)編版道德與法治四年級上冊
- 2024-2030年全球與中國金屬線柵偏振片行業(yè)市場現(xiàn)狀調(diào)研分析及發(fā)展前景報(bào)告
- 抑郁癥培訓(xùn)課件
- 2025年研究生考試考研思想政治理論(101)自測試卷與參考答案
- GA/T 2134-2024法庭科學(xué)有損FLASH存儲設(shè)備數(shù)據(jù)恢復(fù)取證檢驗(yàn)方法
- 文華財(cái)經(jīng)指標(biāo)期貨最好的指標(biāo)期貨超短線看指標(biāo)期貨傻瓜式買賣指標(biāo)公式源碼
- 施工現(xiàn)場安全隱患檢查表
評論
0/150
提交評論