關(guān) 閉

新聞中心

EEPW首頁 > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > USB總線在遠(yuǎn)程抄表系統(tǒng)中的應(yīng)用

USB總線在遠(yuǎn)程抄表系統(tǒng)中的應(yīng)用

作者: 時(shí)間:2009-12-22 來源:網(wǎng)絡(luò) 收藏


  在主程序中完成對系統(tǒng)、PDID12的初始化,以及完成對d12的枚舉,將數(shù)據(jù)的發(fā)送接收都放在中斷程序中。PDID12有3組端點(diǎn),使用默認(rèn)端點(diǎn)0和端點(diǎn)2。將端點(diǎn)2作為數(shù)據(jù)傳輸?shù)耐ǖ溃?dāng)PDID12從USB收到一個(gè)數(shù)據(jù)包時(shí),就對CPU產(chǎn)生一個(gè)外部中斷請求,CPU立即相應(yīng)中斷,在中斷服務(wù)子程序中,將數(shù)據(jù)包從PDIUSBD12內(nèi)部緩沖區(qū)移到循環(huán)數(shù)據(jù)緩沖區(qū)中,隨后清零PDIUSBD12的內(nèi)部緩沖區(qū),對數(shù)據(jù)校驗(yàn),如果接收得數(shù)據(jù)正確,直接調(diào)用RS485數(shù)據(jù)發(fā)送子程序,將數(shù)據(jù)發(fā)送到RS485網(wǎng)絡(luò)。

  3.3 計(jì)算機(jī)軟件設(shè)計(jì):

  計(jì)算機(jī)軟件主要包括,驅(qū)動(dòng)的設(shè)計(jì),動(dòng)態(tài)連接庫的設(shè)計(jì)。驅(qū)動(dòng)程序采用飛利浦提供的驅(qū)動(dòng),上位機(jī)程序使用api函數(shù)并封裝RS485的上層協(xié)議,提供給用戶使用的接口。本例采用VC編寫用戶程序和動(dòng)態(tài)連接庫。從驅(qū)動(dòng)中讀數(shù)據(jù)的程序如下,

  void readdata(unsigned char *rec)

  { unsigned char outbuf[105];

  HANDLE hFile, hDevice=0;

  BOOL bResult;

  ULONG nBytes = 25;

  hFile = open_file(PIPE02);

  if(hFile == INVALID_HANDLE_VALUE)

  {return;}

  hDevice = open_dev();

  bResult = ReadFile(hFile,outbuf,10,nBytes,NULL);

  if(bResult==FALSE)

  { DeviceIoControl(hFile,IOCTL_D12_RESET_PIPE,0,0,0,0,nBytes,NULL); }

  CloseHandle(hFile);

  CloseHandle(hDevice);

  }

  在使用這個(gè)函數(shù)的時(shí)候,只需要添加如下說明。

  extern C DllImport void readdata ( unsigned char * );

  4 結(jié) 論

  由于采用了USB,克服了原來使用RS232接口速度慢的瓶頸,提高了的數(shù)據(jù)傳輸速率,該方案已經(jīng)成功的得到應(yīng)用,穩(wěn)定可靠,有廣闊的應(yīng)用前景。


上一頁 1 2 3 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉