帖子
帖子
用户
博客
课程
1234
返回列表 发新帖
8
帖子
0
勋章
63
Y币
常山赵子云 发表于 2018-4-18 10:27
把你java发16进制的代码发出来,包括16进制的内容,跟你帖子中描述一致的内容。 ...

我的设备发的HEX是 020D620021C51F04013434B5C40001580000000631323331313536353936353235360001010003,apploader接受到base64 是Ag1BACHvv70fBAE0NO+/ve+/vQABWAAAAAYxMjMxMTU2NTk2NTI1NgABAQAD
20
帖子
1
勋章
7575
Y币
本帖最后由 常山赵子云 于 2018-4-18 18:18 编辑
嘉喻 发表于 2018-4-18 13:51
我的设备发的HEX是 020D620021C51F04013434B5C40001580000000631323331313536353936353235360001010003, ...

就你这代码:
String cmd = "Ag0CASHFHwQBNDS1xAABWAAAAAYxMjMxMTU2NTk2NTI1NgABAQADAk3QAgIABAM=";
        String hexStr = base642Hex(cmd);
        System.out.println(hexStr);

你自己输出一下,hexStr的值跟你说你发送的是“020D620021C51F04013434B5C40001580000000631323331313536353936353235360001010003”,看看是一样的吗?
hexStr输出的是:020d020121c51f04013434b5c40001580000000631323331313536353936353235360001010003024dd00202000403
8
帖子
0
勋章
63
Y币
常山赵子云 发表于 2018-4-18 18:16
就你这代码:
String cmd = "Ag0CASHFHwQBNDS1xAABWAAAAAYxMjMxMTU2NTk2NTI1NgABAQADAk3QAgIABAM=";
      ...

实在抱歉,忘记改了  String cmd = "Ag1BACHvv70fBAE0NO+/ve+/vQABWAAAAAYxMjMxMTU2NTk2NTI1NgABAQAD"; 之前的base64字符串是正确的数据,而新的这段才是apploader 接收到的数据。
20
帖子
1
勋章
7575
Y币
嘉喻 发表于 2018-4-18 18:27
实在抱歉,忘记改了  String cmd = "Ag1BACHvv70fBAE0NO+/ve+/vQABWAAAAAYxMjMxMTU2NTk2NTI1NgABAQAD";  ...

把你要发送的byte[],base64一下,看看是什么。你服务器发的什么,socket接收的是就是什么。socket模块收到后,也是直接对你发送的byte[]做base64,然后回调给js,这个过程不会有任何处理,除非你的byte[]有问题。
8
帖子
0
勋章
63
Y币
常山赵子云 发表于 2018-4-19 16:24
把你要发送的byte[],base64一下,看看是什么。你服务器发的什么,socket接收的是就是什么。socket模块收 ...

nodejs代码没发上不知道为什么,这里补上
  1. function hexStr2Base64(str) { /* hex 转 base64 */
  2.     return Buffer.from(str, 'hex').toString('base64');
  3. }

  4. function base642Hex(str) { /* base64 转 hex buffer */
  5.     return Buffer.from(str, 'base64');
  6. }

  7. var str1 = '020D620021C51F04013434B5C40001580000000631323331313536353936353235360001010003';//这里是设备返回的数据
  8. var str2 = 'Ag1iACHFHwQBNDS1xAABWAAAAAYxMjMxMTU2NTk2NTI1NgABAQAD';//正确的base64
  9. var str3 = 'Ag1BACHvv70fBAE0NO+/ve+/vQABWAAAAAYxMjMxMTU2NTk2NTI1NgABAQAD';//apploader 打印的base64

  10. console.log(hexStr2Base64(str1));
  11. console.log(base642Hex(str2));
  12. console.log(base642Hex(str3));
复制代码

安装  nodejs   可以直接运行
8
帖子
0
勋章
63
Y币
常山赵子云 发表于 2018-4-19 16:24
把你要发送的byte[],base64一下,看看是什么。你服务器发的什么,socket接收的是就是什么。socket模块收 ...

由于我是socket 直接打印的,所以不可能会是在我js里面修改了base64字符串,设备发送也不可能错,我用pc版的工具测试是正常的,并且我用sockettool测试,sockettool 发送16进制'ff',apploader 出来结果也是错误的。所以我认为还是插件接收的时候哪个地方转了字符串,而不是直接用的比特流转base64
8
帖子
0
勋章
63
Y币
常山赵子云 发表于 2018-4-19 16:24
把你要发送的byte[],base64一下,看看是什么。你服务器发的什么,socket接收的是就是什么。socket模块收 ...

这里是所有测试代码和工具,包括我写的操作介绍,应该够清晰了。
测试.zip 下载附件
2018-4-19 18:40上传497.43 KB下载次数: 204
8
帖子
0
勋章
63
Y币
常山赵子云 发表于 2018-4-19 16:24
把你要发送的byte[],base64一下,看看是什么。你服务器发的什么,socket接收的是就是什么。socket模块收 ...

亲,你们应该是做透传了,但是在转base64前一定是那里出错了,而且应该修改起来不是很困难,我也想尽快修复这个问题用,您就赶急些确认吧,要是测试工具和方法不全或者有问题,我可以继续提供,我还是满心诚意希望能够尽快解决这问题的,不要搞得这点儿问题成了持久战。
8
帖子
0
勋章
63
Y币
我已经给的够明确了吧,测试工具和测试流程,为啥还不能确认问题呢?
1234
您需要登录后才可以回帖 登录

本版积分规则