Android Beam和SNEP到pn532

时间:2015-02-25 11:57:29

标签: android nfc nfc-p2p android-beam

我们正试图通过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从SAP 32到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:响应继续
收到:RR
发送:我SNEP:请求继续
收到:我的第二个碎片数据
发送:RR
收到:RR
发送:我SNEP:请求继续
收到:我的第三个数据片段

就像我说的那样,这只会有效一段时间。大部分时间我的PN532只响应错误代码0x29 - >发起人摧毁了连接。所以te问题是它可能是一个时间问题,还是在发送其余数据之前还有什么原因导致连接丢失。

1 个答案:

答案 0 :(得分:1)

SNEP被设计为在LLCP数据链路连接(使用CONNECT建立的一对源和目标SAP)之上运行的简单请求/响应协议。客户端请求服务器执行操作,服务器返回响应。通过PUT操作,客户端将数据附加到请求。如果请求然后超过LLCP信息PDU的最大信息单元大小,则客户端以适当的片段发送请求。第一个片段通知服务器应准备从客户端接收的八位字节数。如果服务器能够接收数据,则使用Continue响应来回答第一个片段,如果数据大小超过服务器的能力,则可以使用Reject响应停止交换。在客户端收到“继续”响应后,它将发送所有剩余的片段而不期待中间响应。服务器最终在收到所有请求数据后发送成功响应,如长度值所示。同样的原则适用于大型SNEP响应,只有Continue或Reject是请求消息(因为它们是由客户端发送的)。