亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? c語言編寫簡單的接口程序.txt

?? 一個很好的接口程序,能用于各種文件的傳送
?? TXT
字號:
用C語言編寫簡單的接口程序 
  
    在通信中,為了保證運行安全可靠,標(biāo)準(zhǔn)的串行口必須具有許多握手信號和狀態(tài)信息。這是因為通信 
的各個計算機CPU 速度不一樣(這會導(dǎo)致“錯幀”)以及發(fā)送機發(fā)送數(shù)據(jù)速度比接收機接收速度快( 
這會導(dǎo)致“過沖”)。為解決這個問題,我們采用一個簡單的握手信號,即發(fā)送機每次僅發(fā)送半個字節(jié) 
(低4 位)的數(shù)據(jù),而另外半個字節(jié)(高4 位)則用來傳送信息。我們可以對信息位(高4 位)進行如 
下簡單的編碼: 
   0H:發(fā)送的是新的半個字節(jié)數(shù)據(jù) 
   1H:重新發(fā)送上次傳送錯誤的數(shù)據(jù) 
   2H:文件名結(jié)束 
   3H:文件結(jié)束 
   這樣,每當(dāng)發(fā)送機發(fā)送一個字節(jié)以后,就等待接受機發(fā)回送信號,這回送信號就是發(fā)送機發(fā)送過來的 
那個字節(jié)。發(fā)送機接收到回送信號后,把它與剛發(fā)送的字節(jié)相比較,如果相同,就發(fā)送新的半個字節(jié),否 
則就重新發(fā)送。新數(shù)據(jù)與舊數(shù)據(jù)通過信息位來區(qū)分。下面就是我用C 語言編寫控制串行口的程序。以一個 
發(fā)送文件的程序為例,介紹一下用C 語言實現(xiàn)對接口的控制。 
   源程序為: 
#include "dos.h" 
#include "stdlib.h" 
#include "stdio.h" 
#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(argc,argv) 
  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 parament.Please input again."); 
    exit(1); 
  } 
} 
void SendFile(fname) 
  char *fname; 
{ 
  FILE *fp; 
  int ch,s; 
  if(!(fp=fopen(fname,"rb"))){ 
    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 file.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 fname[15]; 
  GetFileName(fname); 
  printf("Receiving file %s.\n",fname); 
  remove(fname); 
  if(!(fp=fopen(fname,"wb"))){ 
    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(f) 
  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; 
  reg.x.dx=port; 
  reg.h.ah=0; 
  reg.h.al=para; 
  int86(0x14, &reg, &reg); 
} 
void SendPort(port,c) 
  int port; 
  char c; 
{ 
  union REGS reg; 
  reg.x.dx=port; 
  reg.h.al=c; 
  reg.h.ah=1; 
  int86(0x14, &reg, &reg); 
  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, &reg, &reg); 
  if(reg.h.ah &128){ 
    printf("\nRead mistake!"); 
    exit(1); 
  } 
  return reg.h.al; 
} 
int CheckState(port) 
  int port; 
{ 
  union REGS reg; 
  reg.x.dx=port; 
  reg.h.ah=3; 
  int86(0x14, &reg, &reg); 
  return reg.x.ax; 
} 
   以上程序可傳送各種格式的文件,也有一定的自動糾錯能力,但對于異常情況的處理能力比較弱, 
 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青国产91久久久久久| 国产精品自拍在线| 99riav一区二区三区| av在线不卡免费看| 7777精品伊人久久久大香线蕉超级流畅 | 日韩精品中文字幕一区| 国产欧美日韩另类一区| 日韩一区精品字幕| 色成年激情久久综合| 久久久久国产精品厨房| 日韩不卡一区二区三区| 在线亚洲精品福利网址导航| 国产欧美一区二区三区鸳鸯浴 | 91精品国产综合久久久蜜臀粉嫩 | 青青草伊人久久| 成人动漫中文字幕| 26uuu精品一区二区在线观看| 一区二区三区精品在线| 丁香一区二区三区| 精品精品欲导航| 日韩福利电影在线| 欧美三级一区二区| 国产精品剧情在线亚洲| 国产福利精品导航| 精品国产乱码久久| 麻豆精品一区二区综合av| 欧美日韩国产精品成人| 一区二区欧美国产| 91国产视频在线观看| 伊人开心综合网| 色国产综合视频| 一区二区在线观看免费| 91福利国产成人精品照片| 亚洲美女在线一区| 91精品1区2区| 亚洲第一电影网| 欧美精品在线视频| 午夜久久久影院| 7777精品伊人久久久大香线蕉 | 国产精品欧美经典| 国产剧情一区在线| 国产午夜亚洲精品不卡 | 婷婷国产在线综合| 欧美日本韩国一区二区三区视频| 亚洲一区av在线| 欧美美女激情18p| 日韩电影一区二区三区四区| 日韩一区二区三区观看| 激情图区综合网| 国产精品污www在线观看| 成人看片黄a免费看在线| 国产精品久久久久影院老司| 色综合久久久久| 日韩精品1区2区3区| 精品电影一区二区| jizzjizzjizz欧美| 亚洲一区二区欧美激情| 日韩精品一区国产麻豆| 国产.欧美.日韩| 一级中文字幕一区二区| 日韩免费高清电影| 国产精品亚洲第一区在线暖暖韩国 | 国产欧美在线观看一区| 色综合婷婷久久| 蜜臀av一区二区在线免费观看| 国产日韩欧美麻豆| 欧美午夜免费电影| 狠狠色狠狠色综合| 伊人一区二区三区| 久久亚区不卡日本| 欧美日韩一区久久| 国产精品一区在线| 亚洲aaa精品| 国产精品美女久久久久久| 欧美浪妇xxxx高跟鞋交| 岛国精品在线播放| 日本一道高清亚洲日美韩| 国产欧美久久久精品影院| 欧美日韩久久久久久| 国产一级精品在线| 午夜久久久久久久久久一区二区| 欧美国产日韩亚洲一区| 欧美一区二区三区四区在线观看| 99久久久精品免费观看国产蜜| 日韩va亚洲va欧美va久久| 亚洲天堂2016| 国产视频一区二区在线| 欧美一区二区视频网站| 日本乱人伦一区| 成人激情av网| 国产精品一级在线| 久久精品噜噜噜成人av农村| 亚洲国产精品麻豆| 日韩美女精品在线| 成人蜜臀av电影| 久久久久久久久伊人| 91视频一区二区三区| 精品在线播放免费| 日韩精品成人一区二区在线| 亚洲男人天堂av网| 国产精品欧美久久久久一区二区| 精品国产一区二区三区久久影院| 欧美福利电影网| 欧美色大人视频| 欧美自拍偷拍午夜视频| 99在线视频精品| 久久久激情视频| 热久久国产精品| 亚洲精品大片www| 中文字幕av不卡| 久久久久久久久伊人| 欧美v日韩v国产v| 日韩亚洲欧美在线| 制服丝袜中文字幕一区| 在线播放中文一区| 欧美另类变人与禽xxxxx| 欧美喷潮久久久xxxxx| 欧美三电影在线| 欧美丰满嫩嫩电影| 欧美肥胖老妇做爰| 宅男噜噜噜66一区二区66| 欧美蜜桃一区二区三区| 欧美高清你懂得| 欧美变态凌虐bdsm| 久久精品视频在线看| 国产精品天美传媒沈樵| 亚洲男人的天堂网| 亚洲一区二区三区国产| 日韩av午夜在线观看| 美女视频黄 久久| 国产电影一区在线| 99精品一区二区| 99re视频精品| 日本国产一区二区| 99久久精品一区| 色婷婷av一区二区三区gif| 在线观看av一区二区| 欧美高清视频www夜色资源网| 正在播放一区二区| 久久丝袜美腿综合| 国产精品女同一区二区三区| 日韩美女视频一区| 日本不卡一二三| 国产成人啪免费观看软件| 99久久婷婷国产综合精品电影| 在线看日韩精品电影| 91精品久久久久久久91蜜桃| 中文字幕免费一区| 亚洲五月六月丁香激情| 蜜臂av日日欢夜夜爽一区| 福利91精品一区二区三区| 色综合夜色一区| 欧美成人精品二区三区99精品| 国产日韩欧美麻豆| 午夜av一区二区| 国产精品99久久久| 欧美午夜精品久久久| 欧美一区二区三区四区久久| 国产色综合一区| 午夜久久久久久久久久一区二区| 国产一区二区三区蝌蚪| 在线观看一区二区精品视频| 精品国产乱码久久久久久闺蜜| 亚洲免费毛片网站| 国产一区二区不卡| 在线不卡欧美精品一区二区三区| 中文字幕的久久| 黄页网站大全一区二区| 欧美午夜不卡视频| 国产精品美女久久久久久2018 | 久久电影网站中文字幕| 成人av电影免费在线播放| 欧美一区二区成人6969| 亚洲精品美国一| 不卡的电视剧免费网站有什么| 欧美精品日韩精品| 一区二区三区欧美日韩| 成人美女视频在线观看18| 欧美一二三四在线| 午夜久久久久久| 色婷婷久久99综合精品jk白丝| 国产成人夜色高潮福利影视| 美日韩一级片在线观看| 色狠狠一区二区| 中文字幕免费观看一区| 毛片基地黄久久久久久天堂| 欧美日韩一级黄| 一区二区三区四区视频精品免费| 成人精品国产一区二区4080| 精品国产欧美一区二区| 免费观看日韩电影| 在线电影院国产精品| 亚洲图片欧美一区| 91黄色在线观看| 伊人色综合久久天天| 色噜噜狠狠色综合欧洲selulu| 亚洲四区在线观看| 色偷偷久久一区二区三区| 亚洲视频小说图片| 91麻豆国产香蕉久久精品|