/** ****************************************************************************** * @file String.c * @author 度云未来 DOIOT * @brief 针对公司模块AT指令的处理库 ****************************************************************************** * @attention *

© Copyright (c) 2019 成都度云未来 * All rights reserved.

* 注意:本程序针对cubemx 生成的hal库程序快速开发 * 环境:keil5.0 * STM32Cube FW_F1 V1.8.0 ********************************************************************************/ typedef struct{ uint8_t (*Hex_str)(char *ascii_str,char hex_str[]); uint8_t (*char_2_hex)(char c1,char c2); uint8_t (*char_2_dec)(char c1,char c2); uint16_t (*dec_arry)(char ascii_str[],uint8_t dex_arry[]); uint16_t (*hex_arry)(char ascii_str[],uint8_t hex_arry[]); uint8_t (*R_CUT)(char *str,char buff[],uint8_t len); uint8_t (*L_CUT)(char *str,char buff[],uint8_t len); }TO; typedef struct{ uint8_t (*Hex_Str)(uint8_t ascii_str[]); uint8_t (*Ascii_Str)(uint8_t ascii_str[]); uint16_t (*dec_arry)(uint8_t ascii_str[]); uint16_t (*hex_arry)(uint8_t ascii_str[]); uint8_t (*R_CUT)(char *str,uint8_t len); uint8_t (*L_CUT)(char *str,uint8_t len); uint8_t (*L_Shift)(char *str,uint8_t len); }Convert; typedef struct{ uint8_t (*hexStr)(uint8_t arry[],char hex_str[],uint16_t len); uint8_t (*decStr)(uint8_t arry[],char dec_str[],uint16_t len); uint8_t (*asciiStr)(uint8_t arry[],char dec_str[],uint16_t len); uint8_t (*R_CUT)(uint8_t arry[],uint8_t arry_len,uint8_t cut_len); uint8_t (*L_CUT)(uint8_t arry[],uint8_t arry_len,uint8_t len); }Array; typedef struct { int a; }_AT; typedef struct{ TO to; Convert convert; }STR; void STR_init(STR * st); void Array_init(Array *ar); extern STR Str; extern Array array; /**@brief AsciiStr_2_HexStr : string 按ascii理解,单个单个的转变成 hex 字符串 * @param ascii_str : 字符串或数组,是数组的情况下需要保证有结束位 * @param hex_str : 生成的新字符串 * 例子: "stm32f103" "73746D33326631" */ uint8_t AsciiStr_2_HexStr(char *ascii_str,char hex_str[]); /**@brief str_2_dec_arry:【string 数据按10进制理解,两两转化成 8位数组 arry】 * @param ascii_str : 字符串或数组,导入后自身会被转化成hex的字符串 * return 会返回长度 * 例子: char s[]="32323232" ---> uint8_t arry={32,32,32,32}; */ uint16_t str_2_dec_arry(char ascii_str[],uint8_t dex_arry[]); /**@brief str_2_hex_arry:【string 数据按10进制理解,两两转化成 8位数组 arry】 * @param ascii_str : 字符串或数组,导入后自身会被转化成hex的字符串 * return 会返回长度 * 例子: char s[]="32323232" ---> uint8_t arry={0x32,0x32,0x32,0x32}; */ uint16_t str_2_hex_arry(char ascii_str[],uint8_t hex_arry[]); /**@brief char_2_hex:两个字符按16进制理解转换成一个十六进制,return返回 * 例子: char c1='1' char c2='1' uint8_t a=11; */ uint8_t char_2_hex(char c1,char c2); /**@brief char_2_dec两个字符按10进制理解转换成一个十进制,return返回 * 例子: char c1='1' char c2='1' uint8_t a=0x11; */ uint8_t char_2_dec(char c1,char c2); /**@brief R_CUT:右靠裁剪len长至buff,str为原数据,之所以选择加一个buff是为了保护原数据 */ uint8_t R_CUT(char *str,char buff[],uint8_t len); /**@brief L_CUT:左靠裁剪len长至buff,str为原数据,之所以选择加一个buff是为了保护原数据 */ uint8_t L_CUT(char *str,char buff[],uint8_t len); /**@brief AsciiStr_convert_HexStr:ascii字符数组转hex字符数组 * @param ascii_str : 字符串或数组,导入后自身会被转化成hex的字符串 * 例子: "stm32f103" "73746D33326631" */ uint8_t AsciiStr_convert_HexStr(uint8_t ascii_str[]); /**@brief str_2_dec_arry:【string 数据按10进制理解,两两转化成 8位数组 arry】 * @param ascii_str : 字符串或数组,导入后自身会被转化成hex的字符串 * return 会返回长度 * 例子: char s[]="32323232" ---> uint8_t arry={32,32,32,32}; */ uint16_t str_convert_dec_arry(uint8_t ascii_str[]); /**@brief str_2_hex_arry:【string 数据按10进制理解,两两转化成 8位数组 arry】 * @param ascii_str : 字符串或数组,导入后自身会被转化成hex的字符串 * return 会返回长度 * 例子: char s[]="32323232" ---> uint8_t arry={0x32,0x32,0x32,0x32}; */ uint16_t str_convert_hex_arry(uint8_t ascii_str[]); /**@brief AsciiStr_convert_HexStr:ascii字符数组转hex字符数组 * @param ascii_str : 字符串或数组,导入后自身会被转化成hex的字符串 * 例子: "73746D33326631" "stm32f103" */ uint8_t HexStr_convert_AsciiStr(uint8_t ascii_str[]); /**@brief R_CUT:右靠裁剪len长至buff,直接改变原数据 */ uint8_t Convert_R_CUT(char *str,uint8_t len); /**@brief L_CUT:左靠裁剪len长至buff,直接改变原数据 */ uint8_t Convert_L_CUT(char *str,uint8_t len); /**@brief Shift_left:字符串左移,直接改变原数据 */ uint8_t Shift_left(char *str,uint8_t len); /*----------------------------------------------------------------------------------*/ /**@brief Arry_2_hexstr : 8位数组按数据理解转换成16进制表示的字符串 * @param arry : 输入数组 * @param hex_str : 生成的字符串 * 例子: uint8_t arry={0x32,0x32,0x32,0x32}; ---> "32323232" */ uint8_t Arry_2_hexstr(uint8_t arry[],char hex_str[],uint16_t len); /**@brief Arry_2_decstr : 8位数组按数据理解转换成16进制表示的字符串 * @param arry : 输入数组 * @param hex_str : 生成的字符串 * 例子: uint8_t arry={0x32,0x32,0x32,0x32}; ---> "32323232" */ uint8_t Arry_2_decstr(uint8_t arry[],char dec_str[],uint16_t len); /**@brief Arry_2_AsciiStr : 8位数组按ascii理解转换成16进制表示的字符串 * @param arry : 输入数组 * @param hex_str : 生成的字符串 * 例子: uint8_t arry={0x32,0x32,0x32,0x32}; ---> "2222" */ uint8_t Arry_2_AsciiStr(uint8_t arry[],char dec_str[],uint16_t len); /**@brief R_CUT:右靠裁剪len长至buff, */ uint8_t Arry_R_CUT(uint8_t arry[],uint8_t arry_len,uint8_t cut_len); /**@brief L_CUT:左靠裁剪len长至buff, */ uint8_t Arry_L_CUT(uint8_t arry[],uint8_t arry_len,uint8_t len);