44.QT boot工具添加hex解析--Apple的学习笔记

一,前言

43.QT自定义boot工具(上下位机联调)--Apple的学习笔记中描述不支持hex格式,但是MCU编译的时候我们常用的还是此格式文件。那么作为QT的上位机boot工具,必须要支持hex格式文件的解析。

二,需求

本人就是做通信协议的,解析处理是我的基本功。但是具体的格式忘记了,所以百度搜索了下,然后就有了设计思路。我做了个c语言的,先在vs2019中调试通过,也便于将来改成动态库。

三,遇到的问题

  1. 字符串转十进制简单的方法,只要分这3类即可
unsigned char hexFile::ASCII_TO_DEC(char data)
{
    if ('0' <= data&&data <= '9')
        return data - '0';
    else if ('A' <= daa&&data <= 'F')
        return data - 'A' + 10;
    else if ('a' <= data&&data <= 'f')
        return data - 'a' + 10;
    else
        return 0;
}
  1. 传递指针问题
    我原来设计在函数内部分配数据空间,但是释放空间则在调用的类中,所以调用的类中需要传入空间地址。结果跑飞了。原来我搞错了,就是一个指针赋值,所有指针必须指向有地址空间的指针才是有效赋值。后来做了如下测试代码,才发现的问题。最后解决方法是把释放空间也打包在被调用的类中了。

#include 
#include 
char *bindat=NULL;
void intHexToBin(char* data)
{
    bindat=data; //这是一段会跑飞的代码,因为bindat指向了NULL
    bindat = (char *)malloc(8);
    bindat[0]=1;
    bindat[1]=2;
}
int main()
{
    char * testval=NULL;
    intHexToBin(testval);
    printf("%d,%d\n",testval[0],testval[1]);
    return 0;
}

四,效果

image.png

五,小结

上位机暂时补充完成了,接着要把整个系统中的自定义booloader先要改成标准uds协议了。

你可能感兴趣的:(44.QT boot工具添加hex解析--Apple的学习笔记)