标准的UDK协议数据包是分六步完成的,以下是六个步骤的介绍,以复位命令为例。
一 向设备发送写的命令
代码:
ret = BulkWriteTerminal(hHandle,0x02,(BYTE *)"\x55\x53\x42\x43\x00\x0e\x60\x82\x08\x00\x00\x00\x00\x00\x10\xfe\xf0\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00",31,10);
通过bushound抓的数据:
25.2 OUT 55 53 42 43 b8 2d 5a 89 08 00 00 00 00 00 0c fe f0 08 00 00 00 00 00 00 00 00 00 00 00 00 00
二 向设备发送命令
代码:
ret = BulkWriteTerminal(hHandle,0x02,(BYTE *)"\x13\x00\x05\x00\x12\x00\x00\x00",8,10); //复位
通过bushound抓的数据:25.2 OUT 13 00 05 00 12 00 00 00
三
读取发送复位命令的状态码
代码:
ret = BulkReadTerminal(hHandle,0x81,pbBuffer,256,10,&ibuflen);
通过bus hound 抓取的数据:25.2 IN 55 53 42 53 b8 2d 5a 89 00 00 00 00 00
四
经过以上三步,一条复位的命令已经发送完成,下面三步是读取复位命令的返回数据。
这一步标识开始读USB设备向PC机返回的数据。
ret = BulkWriteTerminal(hHandle,0x02,(BYTE *)"\x55\x53\x42\x43\x00\x0e\x60\x82\x00\x08\x00\x00\x80\x00\x10\xfe\xf1\x00\x00\x00\x00\x00\x00\x00\xf1\x00\x00\x00\x00\x00\x00",31,10);
通过bus hound 抓取的数据:
25.2 OUT 55 53 42 43 b8 2d 5a 89 00 20 00 00 80 00 0c fe f1 00 00 00 00 00 00 00 00 00 00 00 00 00 00
五
USB实际返回的数据
ret = BulkReadTerminal(hHandle,0x81,pbBuffer,256,10,&ibuflen);
通过bus hound 抓取的数据: 25.2 IN 31 00 14 3b 6e 00 00 57 44 36 22 64 86 93 51 bf 05 0a 07 3b 35 90 00
六
读取状态码:
ret = BulkReadTerminal(hHandle,0x81,pbBuffer,256,10,&ibuflen);
通过bus hound抓取的数据: 25.2 IN 55 53 42 53 b8 2d 5a 89 00 00 00 00 00