有一个需求:stm32是通过4g模组下载bin文件来升级自己本身,我使用的是串口中断接收数据,每次获取1k的数据,目前接收每k数据正常,但是他这个模组有一个特性是每K数据的开头会有固定的数据例如connet 1024然后中间是1k的数据内容,结尾有一个ok表示接收完成
因为是要烧录bin文件到flash,所以每次得剔除掉开头和结尾固定的那几个字符,我目前的水平解决的方式是for循环依次把需要的数据复制到另一个缓存区B,程序写法是
for (int j = 16;j < 1040;j++) //串口接收缓存区剔除开头connect\r\n 1024和结尾\r\nOK,重新保存到另一个缓存
{
//printf("断点:%d\r\n", j);
filebuff[j - 16] = EC20rev[j];
HAL_Delay(10);
}
为啥是16开始,因为这样可以避免开头的connect\r\n 1024 连空格算上,从第16个开始是有用的数据内容,一直循环1024次才能获取到需要的数据
这个操作目前是可以解决问题,但是耗时太久,因为每获取1K的文件都要如此,我测试过好几次,下载大概25k左右的bin文件需要10分钟左右。
所以请教各位老 师,如何快速且有效的提取中间部分内容?
在此万分感谢