簡體   English   中英

通過qextserialport發送文件

[英]Sending a file via qextserialport

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

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

您需要一個協議。 簡單的可能是:

  • 將文件名的長度作為原始二進制數發送,例如以網絡字節順序發送2個字節(最大名稱長度65535個字節)

  • 發送那么多字節的文件名,使用UTF-8編碼

  • 發送文件大小作為原始二進制數,例如以網絡字節順序發送4個字節(最大文件大小為4 gigs)

  • 發送那么多字節的文件內容

您可能要添加信息,例如文件日期和校驗和。 更高級的方法是將文件拆分為塊,因此,如果發生傳輸錯誤,則不必重新發送所有內容。 等等。

另外,研究諸如Kermit,xmodem,zmodem之類的協議,以了解在調制解調器和BBS時代是如何完成的。 也許使用這樣的現有協議,而不是創建自己的協議。

注意:雖然可以使用QDataStream ,但它需要可靠的通道,因此它並不像乍看起來那樣簡單(需要額外的緩沖)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM