1. 你所谓的接收是从什么地方来的?直接一次性接收,还是可能分批接收到?
2. 不定长的具体范围是什么?无限,还是有限范围内的不定长。
3. 是一次性接收后处理,还是可能多次传输处理
对于1.如果是外部接收,比如串口之类,可能要上协议来保证数据接收的完整性
对于2. 其实这影响了数据真正存储方式,如果是有限范围内的不定长,可以在结构体中设置定长数组子结构来存储,这样存储过程就是 字符串复制填充过程,如果是真正的不定长,则结构体中只能存储个指针地址,这又细分为一次性接收完(或者传输中直接有一次性不定长的长度信息),根据字符串长度申请空间的首地址,然后填充,否则需要字符串存储簇单链表,每个簇的子结构至少还包括指向下个簇的指针信息(如果该信息为NULL表示没有下个簇啦),和定长(比如128byte)的字符串存储区,如果接收信息填不满则末尾补0等等机制。
对于3,则更复杂,还涉及数据使用后怎么管理已经申请区域方面的问题,因为单片机内部资源相对比较少,需要合理安排,比如是否构造资源池,已经资源池的管理问题。
1. 你所谓的接收是从什么地方来的?直接一次性接收,还是可能分批接收到?
2. 不定长的具体范围是什么?无限,还是有限范围内的不定长。
3. 是一次性接收后处理,还是可能多次传输处理
对于1.如果是外部接收,比如串口之类,可能要上协议来保证数据接收的完整性
对于2. 其实这影响了数据真正存储方式,如果是有限范围内的不定长,可以在结构体中设置定长数组子结构来存储,这样存储过程就是 字符串复制填充过程,如果是真正的不定长,则结构体中只能存储个指针地址,这又细分为一次性接收完(或者传输中直接有一次性不定长的长度信息),根据字符串长度申请空间的首地址,然后填充,否则需要字符串存储簇单链表,每个簇的子结构至少还包括指向下个簇的指针信息(如果该信息为NULL表示没有下个簇啦),和定长(比如128byte)的字符串存储区,如果接收信息填不满则末尾补0等等机制。
对于3,则更复杂,还涉及数据使用后怎么管理已经申请区域方面的问题,因为单片机内部资源相对比较少,需要合理安排,比如是否构造资源池,已经资源池的管理问题。
举报