2014-01-24 173 views
0

我在Qt中使用qextserialport類來實現設備之間的串行傳輸。現在,我需要使用串口在通過USB連接的設備之間發送文件。在過去的幾周裏,我已經使用了各種功能的串口,但我不知道從哪裏開始實施。我考慮讀取事件驅動的數據,直到沒有更多的數據要讀取爲止,然後手動確定文件的大小(字節數),並將其與數據一起發送,以便數據丟失時清楚。我也有一個正確的函數來計算CCIITT 16位校驗和,所以我可以用它來檢查。我的問題因此是:通過qextserialport發送文件

有人可以請給我一個鏈接到一個網站,可以幫助解決我的問題,並向我解釋什麼是最簡單和有效的方式發送文件並通過qextserialport類接收文件在Qt。任何幫助將是awsum!

回答

0

您需要一個協議。簡單的可能是:文件名作爲原始二進制數的

  • 發送長度,例如,在網絡字節順序 (最大名稱長度65535個字節)2個字節

  • 發送多少字節文件名的,使用UTF-8

  • 發送的文件大小作爲原始二進制數編碼,例如4個字節以網絡字節順序(最大文件大小4場音樂會)

  • 發送多少字節文件續的ents

您可能想要添加文件日期和校驗和等信息。更高級的將文件分割成塊,所以如果有傳輸錯誤,你不必重新發送一切。等

此外,研究協議像Kermit,xmodem,zmodem看看它是如何在調制解調器和BBS時代完成的。也許可以使用現有的協議,而不是創建自己的協議。

注意:雖然您可以使用QDataStream,但它需要可靠的通道,因此它不像起初看起來那麼容易(需要額外的緩衝)。