新聞中心

EEPW首頁 > 測試測量 > 設計應用 > 數據傳輸進程子面板

數據傳輸進程子面板

作者: 時間:2017-01-06 來源:網絡 收藏
一.概述

Tcp傳輸文件夾的任務也完成了,想要把程序做的完美一點,于是想起了win8中在copy文件或文件夾時的傳輸進程面板,顯示了要從何位置傳輸多少文件到何位置,已傳輸多少的進度條還有顯示實時速度和平均速度的圖標,于是我借鑒了win8的做法,想要實現這樣一個功能,使得數據傳輸過程更加清晰。下圖為win8系統傳輸文件的面板

本文引用地址:http://m.butianyuan.cn/article/201701/336636.htm


二.需求分析

做一個一樣的子面板并不難,然而子面板和主程序的通信與控制將成為重點。類似于上面的面板,子面板需要以下的數據信息:被傳輸的文件(或文件夾)名稱,數量,絕對路徑,接受的它的IP地址,當前已傳輸的比例,實時傳輸速度,平均速度。以上信息都要通過主程序傳輸給子面板,傳輸方式就是我上一篇文章中講到的隊列。

三.具體程序

程序的程序設計思路框圖沒什么可說的,就是在tcp的傳輸子循環(huán)中把生成的上面所需要的信息組成一個簇以隊列的方式發(fā)送給子面板,子面板經過相關計算后顯示在子面板的前面板,主程序接收后同時關閉子面板即可,下面分別說以下每一部分的具體程序框圖。

1.主程序部分

首先主程序中通過一系列的數據組合,還有類似已傳輸量,總運行時間,這些數據都需要通過移位寄存器進行累計,最后組成一個簇,然后發(fā)給隊列,這個簇包含以下信息(按順序敘述):已傳輸文件個數,初始時間(開始傳輸的計時時間),文件路徑,客戶IP地址,文件個數,文件總量(B),已傳輸總量(B),每次傳輸量形成的數組,實時速度(發(fā)送每一小段的速度)構成的數組,當前時間(計時器計時的當前時間);


接下來用隊列發(fā)送數據給子Vi,隊列的數據格式為簇的格式,同時我們需要設定該循環(huán)停止的條件就是n個文件中的n-1個文件已經傳輸完畢,并且第n個結束傳輸信號為真,這樣就關閉子Vi,然后關閉該循環(huán)。


2.子面板部分

經過設計,子面板的主界面如下圖所示


上圖中進度條和圖標顯示的很明白,其中兩個藍色按鈕本來是模仿win8中的兩個按鈕分別用來暫停傳輸和取消傳輸的,但是由于程序目前還木有做這一部分,所以這個問題以后再說,兩個按鈕左邊的空白就是顯示從何處傳輸何數據給何地址的空白,下面對后面板程序做一簡單說明。

首先說一下子Vi的整體框圖,它一共包含三部分,如下圖所示,用一個順序結構將三部分分開:初始化,數據計算顯示以及程序是否關閉的程序。第一部分就是設定速度圖表的顏色以及按鈕初始化;第三部分主要是根據文件是否傳輸完畢作為條件結構的輸入來判斷并關閉子Vi前面板和停止運行子Vi,下面主要說一下第二部分,數據的計算和處理里面的圖表的描繪。


其他的數據大多是直接傳輸顯示的,還有幾個例如平均速度,文件路徑等是經過了一定的處理后在界面上顯示的,而圖表相對麻煩一點


圖表的x軸是已經傳輸的百分比,總長為100%,這需要把每一小塊傳輸結束后所傳輸的總量用數組保存,然后通過一個for循環(huán)讓數組的每一個值除以總的需要傳輸的量就是x軸的數據;而y軸顯示的是x軸所對應的每一小塊傳輸的時候的實時速度,然后也將它們累計起來成一個數組作為xy圖的y輸入數組即可,這一部分實現以以后程序就基本結束了。


上一頁 1 2 下一頁

關鍵詞: 數據傳輸子面

評論


技術專區(qū)

關閉