在做系统测试的时候发现,LWIP(LAN8720)发送十六进制数据时,当发送的数据中有0x00时,网络就判断一串数据结束啦。 例如,发送数据为:aa 55 05 00 00 00 03 00 05 00 12 55 aa,通过调试发送,网络发送的数据只有aa 55 05,后面的数据都没有发送。 意思就是遇到0x00,网络就认为是空数据。 现在的疑问就是,如果我要发送数据0,怎么办呢? 如果发送两个字节的数,例如发送数字3,十六进制为00 03,那怎么发送呢? 希望能够得到解答,急~~ |
使用write函数,不会出现上述情况啊,而且write函数是有数据长度参数的 |
不能吧,应该是可以的。除非你发送的是字符串,字符串是以00为结束的。 |
LAN8720可不会帮你判断00就停止,肯定是你的代码哪里把00自己处理了 |
数据处理问题把 |
非常感谢大家的解答,问题已经解决。我发送的时候,使用strlen来判断发送数据的长度和申请内存。按道理应该按字节来进行申请的。我把strlen和sizeof两个弄混淆啦 |