面就是用C語言編寫控制串行口的程序_第1頁
面就是用C語言編寫控制串行口的程序_第2頁
面就是用C語言編寫控制串行口的程序_第3頁
面就是用C語言編寫控制串行口的程序_第4頁
面就是用C語言編寫控制串行口的程序_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論