在线观看av毛片亚洲_伊人久久大香线蕉成人综合网_一级片黄色视频播放_日韩免费86av网址_亚洲av理论在线电影网_一区二区国产免费高清在线观看视频_亚洲国产精品久久99人人更爽_精品少妇人妻久久免费

首頁(yè) > 文章中心 > 文件傳輸

文件傳輸

前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇文件傳輸范文,相信會(huì)為您的寫作帶來(lái)幫助,發(fā)現(xiàn)更多的寫作思路和靈感。

文件傳輸

文件傳輸范文第1篇

1、首先,點(diǎn)擊手機(jī)里面的微信APP進(jìn)入。

2、進(jìn)入到微信主頁(yè)面之后,點(diǎn)擊右上角的搜索按鈕。

3、然后,在搜索框輸入文件傳輸助手,然后點(diǎn)擊下面的文件傳輸助手。就找到了文件傳輸助手。

4、通過文件傳輸助手,可以發(fā)送文件、圖片等到微信上,這些消息也可以同步到電腦微信上。

(來(lái)源:文章屋網(wǎng) )

文件傳輸范文第2篇

關(guān)鍵詞:文件傳輸服務(wù)器;系統(tǒng)設(shè)計(jì);模型設(shè)計(jì);模塊化

1 引言

現(xiàn)在網(wǎng)絡(luò)中所傳輸?shù)臄?shù)據(jù)無(wú)非就是小的數(shù)據(jù)包或是大的媒體或文件流數(shù)據(jù)。通過研究一個(gè)具有實(shí)際功能的文件傳輸服務(wù)器,對(duì)于理解服務(wù)器通信軟件的設(shè)計(jì)具有一定意義。因?yàn)槲募鬏敺?wù)器既可以傳輸小的信息數(shù)據(jù),也可以傳輸大的文件數(shù)據(jù)流。本文主要探討了文件傳輸服務(wù)器的設(shè)計(jì)關(guān)鍵技術(shù)。

2 系統(tǒng)設(shè)計(jì)要求和設(shè)計(jì)思路

文件傳輸范文第3篇

1、首先在手機(jī)桌面上點(diǎn)擊打開微信”。

2、進(jìn)入微信的主頁(yè)面,點(diǎn)擊搜索欄,然后輸入文件”就會(huì)自動(dòng)跳出搜索項(xiàng),點(diǎn)擊下方的文件傳輸助手”。

3、接著點(diǎn)擊文件傳輸助手”,就會(huì)自動(dòng)跳轉(zhuǎn)到文件傳輸助手”的聊天頁(yè)面了。

4、最后在文件傳輸助手”聊天頁(yè)面里即可查詢自己以往的傳輸記錄。

(來(lái)源:文章屋網(wǎng) )

文件傳輸范文第4篇

一、引言

隨著計(jì)算機(jī)應(yīng)用的不斷深入和信息交流的不斷增加,許多UNIX系統(tǒng)用戶越來(lái)越感到,僅由一臺(tái)高性能微機(jī)運(yùn)行UNIX,帶多臺(tái)至幾十臺(tái)終端已不能滿足應(yīng)用的需要,因此,越來(lái)越多的系統(tǒng)正在向多用戶網(wǎng)絡(luò)方向發(fā)展。

UNIX TCP/IP網(wǎng)絡(luò)就是解決上述矛盾的一種系統(tǒng)。它將多臺(tái)運(yùn)行UNIX系統(tǒng)的超級(jí)微機(jī)用電纜線連接起來(lái),采用TCP/IP協(xié)議進(jìn)行通信,任一微機(jī)所連接的終端可登錄到網(wǎng)上其它任一主機(jī)上進(jìn)行操作,也可以通過網(wǎng)絡(luò)提供的功能,進(jìn)行其它網(wǎng)絡(luò)操作。

SCO UNIX TCP/IP網(wǎng)絡(luò)系統(tǒng)為用戶提供了許多通信功能,它包括遠(yuǎn)程登錄、文件傳輸、郵件發(fā)送以及其它有關(guān)網(wǎng)絡(luò)應(yīng)用、管理及控制方面的命令。這些功能均在命令級(jí)實(shí)現(xiàn),即用戶只需在命令提示符下鍵入相應(yīng)的命令,即可完成相應(yīng)的操作。但是,有許多應(yīng)用系統(tǒng)對(duì)網(wǎng)絡(luò)功能的調(diào)用是在應(yīng)用程序運(yùn)行過程中的,僅通過命令接口是不能完全滿足應(yīng)用的需要的,因此,用戶必須通過網(wǎng)絡(luò)提供的接口編制自己的網(wǎng)絡(luò)應(yīng)用程序。SCO UNIX TCP/IP為用戶提供了一組套接字接口,本文將介紹如何通過調(diào)用套接字以及TCP/IP提供的庫(kù)函數(shù)編制一個(gè)文

件傳輸應(yīng)用程序。

二、套接字接口及調(diào)用

1.套接字接口

一個(gè)用戶應(yīng)用系統(tǒng),即一個(gè)客戶進(jìn)程,通常需要與一個(gè)完成其功能有的服務(wù)進(jìn)程進(jìn)行通信。在UNIX系統(tǒng)中完成這種進(jìn)程間通信的一個(gè)方法是通過管道(PIPES)來(lái)實(shí)現(xiàn)的,UNIX網(wǎng)絡(luò)運(yùn)行系統(tǒng)也提供一個(gè)更靈活的強(qiáng)有力的獨(dú)立子系統(tǒng)以支持一個(gè)分布式環(huán)境的進(jìn)程間通信,這個(gè)子系統(tǒng)就稱作套接字(SOCKET)接口。套接字接口構(gòu)成了在單個(gè)主機(jī)內(nèi)及整個(gè)網(wǎng)際間的編程界面和進(jìn)程間通信的基礎(chǔ)。

一個(gè)套接字是一個(gè)軟件實(shí)體,它為進(jìn)程間通信提供了基本的構(gòu)件,它是進(jìn)程間通信的端點(diǎn),對(duì)互連網(wǎng)地址來(lái)說(shuō),下面的一對(duì)全名套接字唯一確定了通信雙方的連接:

其中,node是4字節(jié)地址,port為2字節(jié)長(zhǎng),左邊的是本地套接字,右邊是遠(yuǎn)程或外部套接字。

套接字具有類型,其類型是由面向程序員的通信特性決定的,它與套接字支持的特殊協(xié)議有關(guān)。時(shí)程通常是在相同類型的套接字之間通信。目前程序員可使用下面三種類型的套接字。

·流套接字:提供雙向的、可靠的、有序的且不重復(fù)的無(wú)記錄邊界的數(shù)據(jù)流,它是最常用的一種類型。

·數(shù)據(jù)報(bào)套接字:它支持雙向數(shù)據(jù)流,但記錄邊界被保持,接收進(jìn)程必須重新定序,消除重復(fù)并提供可靠保證,它適用于單個(gè)報(bào)文的可靠性不重要的場(chǎng)合。

·原始套接字:使用原始套接字,程序員能訪問低層通信協(xié)議(如IP),它不是為一般用戶設(shè)置的,而是為了開發(fā)新的通信協(xié)議,或是為了訪問現(xiàn)有協(xié)議中較隱蔽功能而設(shè)置的。

2.套接字的調(diào)用

TCP/IP的系統(tǒng)調(diào)用主要是通過對(duì)套接字的操作來(lái)實(shí)現(xiàn)的,下面給出了部分常用的TCP/IP系統(tǒng)調(diào)用:

·scoket 創(chuàng)建套接字

·bind 為套接字賦一個(gè)名字

·connect 啟動(dòng)一個(gè)連接

·accept 接受連接

·listen 監(jiān)聽連接

·write/send 發(fā)送信息

·read/recv 接收信息

·close 關(guān)閉套接字

三、UNIX網(wǎng)絡(luò)庫(kù)例程的應(yīng)用

網(wǎng)絡(luò)庫(kù)例程的主要用途是確定和建立網(wǎng)絡(luò)地址。

在客戶方與服務(wù)方進(jìn)行通信前,在遠(yuǎn)程節(jié)點(diǎn)上確定一個(gè)服務(wù)需要進(jìn)行多級(jí)映射。為便于使用,每個(gè)服務(wù)被指定一個(gè)名字,這個(gè)名字必須被翻譯成網(wǎng)絡(luò)地址,最后,該地址被用來(lái)確定一個(gè)物理位置和到服務(wù)的路徑??梢?,確定遠(yuǎn)程節(jié)點(diǎn)上的一個(gè)服務(wù)需要三級(jí)映射,這三級(jí)映射的具體實(shí)現(xiàn)隨著網(wǎng)絡(luò)結(jié)構(gòu)不同而有所變化。

UNIX網(wǎng)絡(luò)庫(kù)例程是C程序語(yǔ)言函數(shù)調(diào)用,它提供下列映射的標(biāo)準(zhǔn)例程:

·主機(jī)名字到網(wǎng)絡(luò)地址

·網(wǎng)絡(luò)地址到網(wǎng)絡(luò)號(hào)

·協(xié)議名字到協(xié)議號(hào)

·服務(wù)名字到端口號(hào)及服務(wù)器使用的適當(dāng)協(xié)議

1.映射主機(jī)名字

例程gethostbynamne,gethostbyaddr,gethostent均可完成主機(jī)名字與地址映射,它們分別將主機(jī)名或節(jié)點(diǎn)地址映射成一個(gè)hostent結(jié)構(gòu):

struct hostent{

char * h_name;/* 正式主機(jī)名 */

char * * h_aliasea;/* 別名表 */

int h_addrtype;/* 主機(jī)的地址類型 */

int h_length;/* 地址長(zhǎng)度*/

char * * h_addr_list; /* 地址表 */

#define h_addr h_addr_list[0]

}

2.映射網(wǎng)絡(luò)名字

getnetbyname, getnetbynumber,getnetent是分別用于映射網(wǎng)絡(luò)名字的例程,使用這些例程,可將網(wǎng)絡(luò)名映射到網(wǎng)絡(luò)號(hào),或把網(wǎng)絡(luò)號(hào)映射到網(wǎng)絡(luò)名,并返回一個(gè)netent結(jié)構(gòu):

struct netent{

char * n_name;/* 正式的網(wǎng)絡(luò)名 */

char * * n_aliasea;/* 別名表 */

int n_addrtype;/* 網(wǎng)絡(luò)地址類型 */

unsignedlong n_net;/* 網(wǎng)絡(luò)號(hào) */

}

3.映射服務(wù)名字

通過指定一個(gè)服務(wù)名和一個(gè)可選的合法協(xié)議,例程getservbyname,getservbyport,get

servent映射服務(wù)名字到一個(gè)servent結(jié)構(gòu):

struct servent{

char * s_name;/* 正式的服務(wù)名 */

char * * s_aliasea;/* 別名表 */

int s_port;/* 服務(wù)駐留的端口號(hào) */

char * s_proto; /* 所使用的協(xié)議 */

}

四、文件傳輸程序的編制

利用網(wǎng)絡(luò)所提供的套接字接口和庫(kù)例程,采用客戶/服務(wù)器模式來(lái)編制文件傳輸程序。

程序流程如下:

@@T8S09300.GIF;圖1@@

在通信之前,要為服務(wù)分配端口地址,這個(gè)地址分配是在/etc/services文件中設(shè)置的。

服務(wù)方進(jìn)程啟動(dòng)后,它創(chuàng)建套接字,指定服務(wù)名和合法協(xié)議,并在指定端口地址上監(jiān)聽服務(wù)請(qǐng)求。

客戶方進(jìn)程開始后,也要?jiǎng)?chuàng)建套接字,指定服務(wù)名和協(xié)議號(hào),并啟動(dòng)一個(gè)與服務(wù)方的連接,連接成功后,則立刻開始數(shù)據(jù)傳送,直到文件傳送結(jié)束。

五、結(jié)束語(yǔ)

本文只是在多用戶網(wǎng)絡(luò)應(yīng)用方面的一個(gè)初控,利用網(wǎng)絡(luò)所提供的接口,我們可以在更深層次對(duì)其進(jìn)行研究,開發(fā)出功能更強(qiáng)、更為靈活、適用的網(wǎng)絡(luò)應(yīng)用軟件。 參考文獻(xiàn)

文件傳輸范文第5篇

關(guān)鍵詞: VxWorks; FTP; 分包傳輸; 在線更新

中圖分類號(hào): TN919?34; TP311.1 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2013)24?0050?05

Research and implementation of file transfer method under VxWork

WANG Hao1, JIA Liang1, LI Yong?tian2

(1. Electronic and Information Engineering Institute, Shenyang Aerospace University, Shenyang 110136, China;

2. Beijing Fangtian Changjiu Science and Technology Ltd, beijing 100084, China)

Abstract: In a project development process, in order to meet the needs of online Flash update of DSP application program in data acquisition system, first of all, the application program is downloaded to the system controller memory by means of the Tornado development environment built?in FTP server, then encapsulated into packets to transmit, and finally the application program update is realized. The program solves the problem that when data dump space is less than the size of data transfer file, and the subpackage transmission in several times is required. The entire software development process is performed in the Tornado development environment, which is able to complete the subpackage error?free transmission of application files. The practical application shows that the software program designed according to the scheme can achieve a good Flash online update, has the characteristics of subpackage transmission and data accuracy, and can meet the design requirements.

Keywords: VxWorks; FTP; subpackage transmission; online update

隨著計(jì)算機(jī)技術(shù)、半導(dǎo)體技術(shù)以及軟件技術(shù)的飛速發(fā)展,嵌入式微處理器的性能也得到不斷提高,嵌入式操作系統(tǒng)的種類更是層出不窮,從而使得嵌入式系統(tǒng)在越來(lái)越多的領(lǐng)域得到更加廣泛的應(yīng)用。其中,美國(guó)Wind River System公司于1983年設(shè)計(jì)開發(fā)的一種嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS)VxWorks憑借其可移植性強(qiáng)等優(yōu)點(diǎn)得到了廣泛的應(yīng)用[1]。VxWorks提供的系統(tǒng)接口要比其他操作系統(tǒng)豐富,因此選擇它來(lái)作為嵌入式采集系統(tǒng)的軟件控制平臺(tái),可以大大提高開發(fā)的效率[2]。本文應(yīng)用Motorola公司的MCP?750PowerPC嵌入式CPCI單板機(jī)作為系統(tǒng)控制器及北京方天長(zhǎng)久科技有限公司的FTC?6010作為數(shù)據(jù)采集板組成數(shù)據(jù)采集系統(tǒng)。在開發(fā)過程中,考慮到了數(shù)據(jù)采集板有可能工作在不方便拆卸的場(chǎng)合,無(wú)法使用下載器對(duì)數(shù)據(jù)采集板上的DSP進(jìn)行應(yīng)用程序的更新,本文的研究重點(diǎn)就是實(shí)現(xiàn)對(duì)數(shù)據(jù)采集板上的DSP應(yīng)用程序進(jìn)行在線FLASH更新,從而擺脫下載器的束縛?;谝陨峡紤],規(guī)定了一份適合于本數(shù)據(jù)采集系統(tǒng)需要的分包文件傳輸協(xié)議,并在此基礎(chǔ)上用C語(yǔ)言封裝了一個(gè)基于VxWorks下的功能模塊,此功能模塊的設(shè)計(jì)成功的實(shí)現(xiàn)了DSP程序在線FLASH更新,滿足了開發(fā)的需要。

1 數(shù)據(jù)采集系統(tǒng)分析介紹

1.1 系統(tǒng)總體結(jié)構(gòu)及軟硬件開發(fā)環(huán)境

數(shù)據(jù)采集系統(tǒng)基于CPCI總線實(shí)現(xiàn),系統(tǒng)總體結(jié)構(gòu)及軟硬件開發(fā)環(huán)境如圖1所示,上位機(jī)Tornado IDE(VxWorks集成開發(fā)環(huán)境)通過以太網(wǎng)絡(luò)和MCP?750PowerPC嵌入式單板機(jī)相連,MCP?750作為CPCI總線控制器通過CPCI總線控制數(shù)據(jù)采集板(FTC?6010),同時(shí)通過串口輸出信息到上位機(jī),便于操作。

圖1 系統(tǒng)總體結(jié)構(gòu)及軟硬件開發(fā)環(huán)境

1.2 DSP應(yīng)用程序在線FLASH更新時(shí)數(shù)據(jù)流向

圖2簡(jiǎn)要給出了DSP應(yīng)用程序在線FLASH更新時(shí)數(shù)據(jù)的流向,上位機(jī)使用FTP通過網(wǎng)絡(luò) 將應(yīng)用程序的二進(jìn)制文件下載到系統(tǒng)控制器的內(nèi)存中,再?gòu)南到y(tǒng)控制器的內(nèi)存中通過CPCI總線將文件傳送至數(shù)據(jù)采集板上DSP外接的FLASH中,最后實(shí)現(xiàn)FLASH的更新。在傳送過程中,由于系統(tǒng)控制器與數(shù)據(jù)采集板上的DSP需要通過DPSRAM進(jìn)行交互,而DPSRAM的存儲(chǔ)空間有限,此時(shí)就需要將應(yīng)用程序文件分包進(jìn)行傳輸,傳輸協(xié)議的制定就顯得至關(guān)重要了,需要保證數(shù)據(jù)傳輸正確,傳輸過程不丟包。

圖2 DSP應(yīng)用程序在線FLASH更新時(shí)數(shù)據(jù)流向

2 FTP文件傳輸

2.1 FTP介紹

文件傳輸協(xié)議(File Transfer Protocol,F(xiàn)TP)是TCP/IP 的一種具體應(yīng)用,工作在OSI 模型的第7層, TCP 模型的第4層, 即應(yīng)用層。FTP要求客戶向服務(wù)器提供用戶注冊(cè)名和口令, 服務(wù)器拒絕非法用戶的訪問。但是鏈接一旦建立成功, 一個(gè)或多個(gè)文本或圖像二進(jìn)制文件都能被傳送, FTP 不必?fù)?dān)心可靠性和連接的管理, 因?yàn)镕TP 依靠TCP 正確執(zhí)行這些功能[3]。Tornado開發(fā)環(huán)境自帶FTP服務(wù)器,常見用于系統(tǒng)成功引導(dǎo)后,下載VxWorks的運(yùn)行時(shí)映象,需正確配置用戶名,密碼和路徑[4]。

2.2 VxWorks下FTP程序的編寫

可以直接使用VxWorks提供的幾個(gè)API函數(shù)進(jìn)行FTP程序的編寫,實(shí)現(xiàn)從上位機(jī)將應(yīng)用程序文件下載到系統(tǒng)控制器的內(nèi)存中的目的,這里主要介紹三個(gè):ftpXfer、ftpReplyGet和ftpCommand,幾個(gè)函數(shù)的原型和主要用法如下[5]:

ftpXfer的作用是初始化通過FTP傳輸?shù)奈募?/p>

STATUS ftpXfer

char * host,

/*ftp服務(wù)器的IP地址,點(diǎn)分十進(jìn)制,格式類似于"10.0.0.1" */

char * user, /*訪問ftp服務(wù)器的用戶名 */

char * passwd, /*訪問ftp服務(wù)器的密碼 */

char * acct, /*一般不用,直接填寫為空字符串就可以了*/

char * cmd, /*發(fā)送給FTP服務(wù)器的命令,例如讀取命令為"RETR"*/

char * dirname, /*待訪問文件所在的目錄*/

char * filename, /*待訪問文件的文件名*/

int * pCtrlSock, /*存儲(chǔ)返回的文件描述符,也就是常說(shuō)的fd*/

int * pDataSock /*存儲(chǔ)返回的待訪問文件的文件描述符*/

此例程按以下順序發(fā)起通過FTP服務(wù)器傳輸文件:

(1)建立一個(gè)連接到指定的主機(jī)上的FTP服務(wù)器;

(2)在指定的主機(jī)上設(shè)置好用戶名,密碼和賬號(hào);

(3)發(fā)送文件傳輸類型命令;

(4)發(fā)送文件所在的目錄以及文件名命令;

(5)將指定的轉(zhuǎn)移命令和指定的文件名作為參數(shù),建立一個(gè)數(shù)據(jù)連接。典型的傳輸命令為STOR %S:寫入到一個(gè)遠(yuǎn)程文件;RETR%S:讀取一個(gè)遠(yuǎn)程文件。

由此產(chǎn)生的控制和數(shù)據(jù)連接文件描述符分別通過pCtrlSock和pDataSock返回。

調(diào)用這個(gè)程序后,數(shù)據(jù)可以被讀取或?qū)懭氲竭h(yuǎn)程服務(wù)器返回的文件描述符pDataSock中。當(dāng)所有傳入的數(shù)據(jù)被讀?。ㄗx取數(shù)據(jù)套接字由EOF表示)和/或所有傳出的數(shù)據(jù)已寫入,應(yīng)關(guān)閉數(shù)據(jù)套接字fd。

這時(shí)候應(yīng)該調(diào)用函數(shù)ftpReplyGet(),用來(lái)接收控制套接字的最后的回復(fù)。

int ftpReplyGet

int ctrlSock, /*連接FTP control socket文件描述符fd*/

BOOL expecteof /* TRUE = EOF expected, FALSE = EOF is error */

若沒有錯(cuò)誤,應(yīng)調(diào)用函數(shù)ftpCommand()關(guān)閉control socket。

int ftpCommand

int ctrlSock, /* 連接FTP control socket文件描述符fd */

char * fmt, /* 待傳遞的ftp命令 */

int arg1, /* ftp命令的參數(shù)*/

int arg2,

int arg3,

int arg4,

int arg5,

int arg6

如果FTP命令不涉及數(shù)據(jù)傳輸(例如文件刪除或重命名),pDataSock應(yīng)該是NULL,在這種情況下,不會(huì)建立數(shù)據(jù)連接。函數(shù)返回為OK或ERROR(有socket不能創(chuàng)建或不能進(jìn)行連接)。

FTP文件傳輸?shù)娜窟^程如圖3所示。

圖3 VxWorks下FTP文件傳輸過程

程序關(guān)鍵代碼如下:

/* initiate a transfer via a remote FTP server to read a remote file */

if(ERROR==ftpXfer(UNIX_HOST,USER,PASSWD,"","RETR %s",W_DIR,F(xiàn)ILE,&ctrlSock,

&dataSock))

{

perror("Error in initiating a transfer via a remote FTP server");

return ERROR;

}

/* read the remote file data to buffer */

while((NumBytes=read(dataSock,buff,sizeof(buff)))>0)

{

buff+=NumBytes;

}

if(NumBytes

{

perror ("Error in reading"); /* read error */

return (ERROR);

}

close(dataSock);

/* Get an FTP command reply to see whether EOF is encountered */

if(ftpReplyGet(ctrlSock,TRUE)!=FTP_COMPLETE)

{

perror ("positive completion failed");

return (ERROR);

}

/* Send QUIT FTP command */

if(ftpCommand(ctrlSock,"QUIT",0,0,0,0,0,0)!=FTP_COMPLETE)

{

perror ("QUIT FTP command positive completion failed");

return (ERROR);

}

close (ctrlSock);

3 分包文件傳輸協(xié)議的制定與實(shí)現(xiàn)

3.1 分包文件傳輸協(xié)議制定

通過本文前兩節(jié)的分析和應(yīng)用,文件已經(jīng)成功的從上位機(jī)下載到了系統(tǒng)控制器的內(nèi)存當(dāng)中,本節(jié)著重介紹如何從系統(tǒng)控制器的內(nèi)存中將文件封裝成數(shù)據(jù)包分次傳送給DPSRAM,如何通知DSP將數(shù)據(jù)包取走,如何得到DSP的應(yīng)答之后傳送下一個(gè)數(shù)據(jù)包,如何判斷數(shù)據(jù)包全部傳送完成等,簡(jiǎn)而言之,就是分包文件傳輸協(xié)議的制定,圖4用流程圖的形式對(duì)整個(gè)過程進(jìn)行了詳細(xì)的描述。

下面以數(shù)據(jù)包包含的信息要素為例介紹分包文件傳輸協(xié)議,每個(gè)數(shù)據(jù)包包含以下信息要素,如圖5所示。

系統(tǒng)控制器將數(shù)據(jù)包寫入DPSRAM之后,會(huì)發(fā)起DPSRAM左端口中斷,DSP檢測(cè)到中斷后從DPSRAM中取走數(shù)據(jù)包。

控制命令字的主要作用是告知DSP,此數(shù)據(jù)包數(shù)據(jù)空間中的數(shù)據(jù)是用于FLASH更新用的,需要將其寫入FLASH中。

數(shù)據(jù)包長(zhǎng)度的主要作用是告知DSP即將要讀取的數(shù)據(jù)包中數(shù)據(jù)空間的長(zhǎng)度,以便DSP將其寫入到FLASH對(duì)應(yīng)的空間中。

圖4 分包文件傳送過程

圖5 數(shù)據(jù)包的信息要素

數(shù)據(jù)包序號(hào)的主要作用是告知DSP,此次傳輸?shù)氖堑趲讉€(gè)數(shù)據(jù)包,防止傳輸過程中丟包。

數(shù)據(jù)寫入標(biāo)記分為3種:根據(jù)數(shù)據(jù)包序號(hào),如果傳輸?shù)氖堑谝粋€(gè)數(shù)據(jù)包,則表示數(shù)據(jù)包傳輸開始;如果傳輸?shù)氖侵虚g的數(shù)據(jù)包,則表示數(shù)據(jù)包繼續(xù)傳輸;如果接收到的是最后一個(gè)數(shù)據(jù)包,則表示數(shù)據(jù)包傳輸完成。

CRC校驗(yàn)和的主要作用是便于DSP比較數(shù)據(jù)傳輸之前的檢驗(yàn)和與自己根據(jù)接收到的數(shù)據(jù)計(jì)算出來(lái)的校驗(yàn)和是否一致,借此判斷數(shù)據(jù)傳輸過程中有無(wú)丟數(shù)現(xiàn)象發(fā)生。文件總的大小的主要作用是告知DSP需要擦除多大的FLASH空間用于存儲(chǔ)更新后的文件。

3.2 分包文件傳輸協(xié)議實(shí)現(xiàn)

協(xié)議的實(shí)現(xiàn)主要用到了以下幾個(gè)關(guān)鍵函數(shù):

(1)數(shù)據(jù)包協(xié)議頭的封裝

UINT32 gfWriteLong(UINT32 x,UINT32 y)

{

*(UINT32*)x=y;

return y;

}

此函數(shù)用于封裝數(shù)據(jù)包協(xié)議頭,將數(shù)據(jù)包協(xié)議頭信息寫入相應(yīng)的地址空間中。

(2)CRC校驗(yàn)和算法[6]

本文采用一種按位計(jì)算的方法計(jì)算校驗(yàn)和,和DSP計(jì)算出來(lái)的校驗(yàn)和相比較,防止數(shù) 據(jù)傳輸過程中出現(xiàn)差錯(cuò),關(guān)鍵代碼如下:

UINT32 gfCRCCheckSum(char *ptr,unsigned long len)

{

unsigned char i;unsigned long crc=0;

while(len??!=0)

{

for(i=0x80;i!=0;i/=2)

{

if((crc&0x8000)!=0)

{

crc*=2;

crc^=0x1021;

}

else

{

crc*=2;

}

if((*ptr&i)!=0)

{

crc^=0x1021;

}

}

ptr++;

}

return crc;

}

(3)應(yīng)答機(jī)制

應(yīng)答機(jī)制的作用是得到DSP接收完一個(gè)數(shù)據(jù)包之后反饋回來(lái)的信息(用數(shù)值表示),如為數(shù)據(jù)傳輸正確,則打印出提示提示語(yǔ)句后接著傳送下一個(gè)數(shù)據(jù)包;如為校驗(yàn)和出錯(cuò),則說(shuō)明數(shù)據(jù)包傳送過程中發(fā)生了丟數(shù)等現(xiàn)象,打印出語(yǔ)句后直接結(jié)束退出;如為FLASH更新完成,則說(shuō)明所有數(shù)據(jù)包傳送完成,且正確的寫入到FLASH中了,打印出提示語(yǔ)句后直接結(jié)束退出;如為FLASH更新出錯(cuò),則說(shuō)明所有數(shù)據(jù)包傳送完成,但沒有正確的寫入到FLASH中,打印出提示語(yǔ)句后直接結(jié)束退出。

關(guān)鍵代碼如下:

STATUS gfDSPACKCMD(int handle,UINT32 ACKAddress)

{

UINT32 ACKCMD;

ACKCMD=*(*ACKAddress);

switch(ACKCMD)

{

case DSP_ACK_OK:

printf("\nData Packet Send Success and Data Right?。躰\n");

break;

case ERROR_CHECKSUM:

printf("\nData packet CRC CheckSum ERROR?。躰");

break;

case FLASH_UPDATE_OK:

printf("\n\nFlash Data Updates Over?。。。躰");

break;

case ERROR_FLASH_DATA:

printf("\nFlash data write error?。躰");

break;

default:

printf("\nAcknowledge command word error!\n");

break;

}

return OK;

}

4 實(shí)際應(yīng)用

基于以上分析研究,編寫了相應(yīng)的程序,并在數(shù)據(jù)采集系統(tǒng)中進(jìn)行了多次試驗(yàn),試驗(yàn)結(jié)果如表1所示,從試驗(yàn)結(jié)果可以看出,本文所介紹的方法可以保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性,滿足了DSP程序在線FLASH更新的需求。

表1 FLASH更新測(cè)試結(jié)果

5 結(jié) 論

本文結(jié)合實(shí)際項(xiàng)目開發(fā)過程中遇到的實(shí)際問題,概述了一種 VxWorks下簡(jiǎn)單文件傳輸?shù)脑砗途唧w的軟件實(shí)現(xiàn)方法。實(shí)際應(yīng)用證明,按照此種方式編寫的程序代碼簡(jiǎn)單,實(shí)用,可以很好的進(jìn)行文件數(shù)據(jù)分包傳輸。

參考文獻(xiàn)

[1] 李署東,吳昊,杜祝.VxWorks下點(diǎn)對(duì)點(diǎn)簡(jiǎn)單文件傳輸?shù)膶?shí)現(xiàn)[J].中國(guó)水運(yùn),2011,11(1):84?87.

[2] 唐曉平.VxWorks在cPCI高速數(shù)據(jù)采集系統(tǒng)中的應(yīng)用研究[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2008.

[3] 黃世權(quán).FTP協(xié)議分析和安全研究[J].微計(jì)算機(jī)信息,2008,24(2?3):93?94.

[4] 馮先成,李寒,張鐵男.基于MPC850 VxWorks系統(tǒng)的BSP設(shè)計(jì)[J].計(jì)算機(jī)與數(shù)字工程,2012,40(6):39?43.

公安县| 霍山县| 屏边| 太白县| 丰都县| 台山市| 南汇区| 屏东市| 屯昌县| 景宁| 新乡县| 舒城县| 南岸区| 合阳县| 水富县| 铁岭市| 庄河市| 甘洛县| 云梦县| 班戈县| 马尔康县| 花莲市| 新泰市| 隆子县| 成武县| 英超| 普宁市| 乐都县| 盈江县| 嘉祥县| 庐江县| 霸州市| 曲阜市| 鹤山市| 彰化市| 威远县| 钟祥市| 澄城县| 河池市| 九台市| 汕头市|