簡體   English   中英

Android Beam 和 SNEP 轉 pn532

[英]Android Beam and SNEP to pn532

我們正在嘗試通過 nfc-p2p、android-beam 和 snep 將大文件從 android 手機發送到 mikroprocessor。

這就是我們迄今為止所擁有的。 我可以將 pn532(目標)與電話(發起方)連接起來。 我的 android 應用程序使用 setNdefPushMessage 通過 nfc 發​​送 NdefMessage。 一旦我點擊電話(Beam-UI),它就開始與我的 pn532 上的 SAP 4 連接,在讀取命令(tgGetData)之后,我收到以下信息:

00 FF 86 7A D5 87 00 13 20 00 10 02 00 00 03 BD C1 01 00 00 03 B6 54 30 68 61 6C 6C 6F 20 64 61 73 20 69 73 74 20 65 69 6E 20 74 65 73 74 31 68 61 6C 6C 6F 20 64 61 73 20 69 73 74 20 65 69 6E 20 74 65 73 74 32 68 61 6C 6C 6F 20 64 61 73 20 69 73 74 20 65 69 6E 20 74 65 73 74 33 68 61 6C 6C 6F 20 64 61 73 20 69 73 74 20 65 69 6E 20 74 65 73 74 34 68 61 6C 6C 6F 20 64 61 73 20 69 73 74 20 65 69 6E 20 74 65 73 74

清理:PN532 標頭: 00 FF 86 7A D5 87 00未設置 MI 位!
LLCP 標頭: 13 20 00 I-Package from SAP 32 to 4
SNEP 標頭: 10 02 00 00 03 BD版本 10 請求 PUT len 0x3bd
NDEF 標頭: C1 01 00 00 03 B6 54 c1:start+EndMessage
留言……剩下的

我使用 MUI 128 完成了連接。

我的問題:它說 SNEP 包的長度為 0x3BD 字節,但我只收到了這個短部分。 此消息中沒有任何指示它是否是拆分消息。

我的其余數據在哪里? 我試圖從 pn532 讀取更多包,但沒有。

** 編輯:經過一夜的嘗試,我終於到了某個地方。 什么至少有時有效:(所有從 PN532 的角度來看)
接收:連接
發送:連接完成[MUI=128]
接收:SYMM
發送:SYMM
接收:我先分片數據(如上圖)
發送:RR
接收:SYMM
發送:我 SNEP:響應 CONTINUE
接收:RR
發送:我 SNEP:請求繼續
接收:我第二個碎片數據
發送:RR
接收:RR
發送:我 SNEP:請求繼續
接收:我第三個數據片段

就像我說的,這只適用於某些時候。 大多數情況下,我的 PN532 只是響應錯誤代碼 0x29 -> 啟動器丟棄了連接。 所以問題是它可能是時間問題還是其他什么原因導致在發送其余數據之前斷開連接。

SNEP 被設計為運行在 LLCP 數據鏈路連接(使用 CONNECT 建立的一對源和目標 SAP)之上的簡單請求/響應協議。 客戶端請求服務器執行一個操作,服務器返回響應。 通過 PUT 操作,客戶端將數據附加到請求中。 如果該請求超過了 LLCP 信息 PDU 的最大信息單元大小,則客戶端以適當的片段傳輸該請求。 第一個片段通知服務器它應該准備從客戶端接收的八位字節數。 如果服務器能夠接收到數據,它會用 Continue 響應回答第一個片段,如果數據大小超過服務器的能力,它可以用 Reject 響應停止交換。 客戶端收到 Continue 響應后,它將發送所有剩余的片段,而無需期待中間響應。 服務器在收到所有請求數據后最終發送成功響應,如長度值所示。 相同的原則適用於大型 SNEP 響應,只有 Continue 或 Reject 是請求消息(因為它們是由客戶端發送的)。

暫無
暫無

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

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