测试增加一个字符串很快成功【数组不行】
分支9成功
再次回去分支8吧
syntax = "proto2";
message SimpleMessage {
required int32 lucky_number = 1;
required bool success = 2;
required string dev_id = 3;
}
作为.proto文件
执行脚本.C.H加入工程
测试转化为流:
#include "simple.pb.h"
#include "cmd_pb.h"
uint8_t dev_id[6]={"1234"};
BytesType Bdev_id;
uint8_t requestBuff[SIZE];
memset(requestBuff,0,SIZE);
pb_ostream_t requestStream = pb_ostream_from_buffer(requestBuff, SIZE);
SimpleMessage A = SimpleMessage_init_zero;
A.lucky_number=24;
A.success=0;
pb_add_bytes(&Bdev_id , dev_id , strlen((char *)dev_id));
pb_encode_bytes(&A.dev_id , &Bdev_id);
if(pb_encode_respone(&requestStream ,SimpleMessage_fields ,&A))
{
G_printHEX(requestBuff,requestStream.bytes_written);//08 18 10 00 1A 04 31 32 33 34
printf("\r\n requestStream.max_size=%d\r\n",requestStream.max_size);//50表达你设定数组的大小
printf("\r\n requestStream.bytes_written=%d\r\n",requestStream.bytes_written);//10表达的数据大小
printf("\r\n requestStream.errmsg=%s\r\n",requestStream.errmsg);
}
可以看到类似TLV 它PB没有压缩数据!!!
08 18
10 00
1A 04 31 32 33 34
测试串口发给MCU解析
#include "simple.pb.h"
#include "cmd_pb.h"
typedef struct _RXSimpleMessage {
uint8_t dev_id[50];
} RXSimpleMessage;
RXSimpleMessage B={0};
void smuart_test(void)
{
static uint8_t flag=0;
smuart_init();
while(1)
{
if(flag == 0)
{
if( 1 || smuart_TXRX_L2((uint8_t *)"hello",6,(uint8_t *)"world"))
{
flag = 1;
}
}
if(flag==1)
{
puart_reinit();
mode_clear();
flag = 2;
}
if(flag==2)
{
if(tflg.idle)
{
printf("OK 1 PAGE len=%d\r\n",udata.len);
printf("%s\r\n",udata.rxBuff);
printf("\r\n");
G_printHEX(udata.rxBuff,udata.len);
printf("\r\n");
pb_istream_t requestStream = pb_istream_from_buffer((const uint8_t*)udata.rxBuff, udata.len);
SimpleMessage A = SimpleMessage_init_zero;
pb_decode_bytes(&A.dev_id , B.dev_id);
G_printHEX(B.dev_id,10);
if(pb_decode(&requestStream, SimpleMessage_fields, &A) == TRUE )
{
printf("\r\nA.lucky_number = %d\r\n",A.lucky_number);
G_printHEX(B.dev_id,10);
printf("\r\nA.success = %d\r\n",A.success);
}
else
printf("\r\nfail \r\n");
mode_clear();
}
}
HAL_Delay(200);
}
}
串口发HEX 08 18 10 00 1A 04 31 32 33 34
log
OK 1 PAGE len=10
08 18 10 00 1A 04 31 32 33 34
00 00 00 00 00 00 00 00 00 00
A.lucky_number = 24
31 32 33 34 00 00 00 00 00 00
A.success = 0