1.我想把1MB闪存的内容以较快的速度(2-5分钟)(8.7kB/s-3.5 kb /s)发送到电话。最好的方法是什么?
2.我曾经尝试使用ble_app_peripheral,在其中我实现了timer0以每3ms发送16B的通知包(值为600)。使用spi,我每次读取闪存的256B,并创建16B的数据包。使用电话,每当订阅通知发生更改时,我就将数据推送到表中,然后将表保存为txt格式。
问题是文本中有16B个单词是错误的。30 65536)。有些是重新排序的,有些是后一个包的错误值。你能帮我解决那个问题吗?
以下是一些例子:
一)闪值:
e0e1e2e3e4e5e6e7e8e9eaebecedeeef
f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
000102030405060708090 a0b0c0d0e0f
三种价值:
e0e1e2e3e4e5e6e7e8e9eaebecedeeef
000102030405060708090 a0b0c0d0e0f
000102030405060708090 a0b0c0d0e0f
b)闪值:
707172737475767778797 a7b7c7d7e7f
808182838485868788898 a8b8c8d8e8f
909192939495969798999 a9b9c9d9e9f
a0a1a2a3a4a5a6a7a8a9aaabacadaeaf
b0b1b2b3b4b5b6b7b8b9babbbcbdbebf
c0c1c2c3c4c5c6c7c8c9cacbcccdcecf
三种价值:
707172737475767778797 a7b7c7d7e7f
b0b1b2b3b4b5b6b7b8b9babbbcbdbebf
b0b1b2b3b4b5b6b7b8b9babbbcbdbebf
b0b1b2b3b4b5b6b7b8b9babbbcbdbebf
c0c1c2c3c4c5c6c7c8c9cacbcccdcecf
c0c1c2c3c4c5c6c7c8c9cacbcccdcecf
嗨gvarna01,
谢谢你在网上提出的问题。让我查一下您的问题,我会尽快回复您。
谢谢,PM_Dialog
嗨gvarna01,
我需要对您在应用程序中所做的事情做一些额外的说明。您提到您创建了包,每个包包含16个字节/因此,您将在计时器到期时发送每个包。我的假设正确吗?
您是否可以使用BLE嗅探器来检查通过空气传输的数据包?
谢谢,PM_Dialog
是的,我在timer0过期时发送值为750 (3.8ms)的每个数据包。我也使用了一个更高的值1000 (5ms),尽管一些数据包是错误的,即使是不同的手机(都是安德罗)。我没有嗅探器。相反,我在手机上启用了蓝牙HCI窥探日志。你可以看到附件的照片显示错误的包。你能重复这个问题吗?
然后,我设法放入一些代码来协商mtu值,以便发送4倍大的重组数据包(64字节),并以4倍低的速度发送每个数据包(timer0值=3000,15ms)。我尝试了三次发送1MB没有数据包错误。
我两次使用这些设置来防止内存分配问题:#define MSG_HEAP_SZ 4096 #define NON_RET_HEAP_SZ 4096
嗨gvarna01,
您可以分享您正在使用的向移动电话发送通知的代码片段吗?我会试着复制它。
谢谢,PM_Dialog