论坛风格切换切换到宽版
发帖 回复
返回列表  提醒:不能用迅雷等P2P下载,否则下载失败标(二级)的板块,需二级才能下载,没二级不要购买,下载不了
  • 874阅读
  • 6回复

[技术文章]轻量级通讯协议源码(适用于单片机之间通讯) [复制链接]

上一主题 下一主题
离线ajtdnta
 

性别:
人妖
发帖
9
金币
9
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看楼主 倒序阅读 使用道具 0楼 发表于: 2020-08-14
/* Y))sk-  
应用场景之一:串口通讯 |-D.  
*/ (5&"Y?#o,  
int pack_encode(char *src, int src_len, char *dst, int *dst_len) Z5A<TC/:  
{ xpwzzO*U  
    int i = 0; B,T.bgp\  
    int j = 0; ?]N&H90^5  
FG\?_G  
    if (!src || !dst || !dst_len) [y>.)BU  
        return -1; Q2JjBV<  
WcFZRy-erc  
    dst[j++] = 0x7E; S:s^si2/  
    for (i = 0; i < src_len; i++) o9>X"5CmX  
    { O~VUViS6$  
        if (src == 0x7E) r1]^#&V;MC  
        { "o^zOU  
            dst[j++] = 0x7D; CuNHDYQ&3  
            dst[j++] = 0x5E; b}*hodzF  
        } LBB[aF,Lr  
        else if (src == 0x7D) n3\vq3^?  
        { Fu$sfq  
            dst[j++] = 0x7D; z16++LKmM  
            dst[j++] = 0x5D; [-ecKPx  
        } Q23y.^W%c  
        else S\m]ze  
        { A )cb  
            dst[j++] = src; NYeg,{q  
        } B?'ti{p A9  
    } v*LL7b0 A  
    dst[j++] = 0x7E; ?}>tfDu'  
    *dst_len = j; sJWwkR  
    return 0; ~-/AKaK}  
} [geY:v_B  
/2@@v|QL  
int pack_decode(char *src, int src_len, char *dst, int *dst_len) }1wuH  
{ P.Bk-#}$  
    int i = 0; x&d<IU)5  
    int j = 0; yrX]w3kr%  
p pq#5t^[)  
    if (!src || !dst || !dst_len || src[0] != 0x7E || src[src_len - 1] != 0x7E) C#R9Hlb  
        return -1; bOdD:=f  
&AVi4zV  
    src_len--; B|&<  
    for (i = 1; i < src_len; i++) #z.x3D@^r6  
    { RZZB?vx  
        if (src == 0x7D && (i + 1) < src_len) <#-ERQw  
        { :?J$ +bm}  
            i++; ~08v]j q  
            if (src == 0x5E) ilP&ctn6+c  
            { s5HbuyR^  
                dst[j++] = 0x7E; /<@tbZJ*8  
            } uRIr,U^  
            else if (src == 0x5D) _u0dt) $  
            { D<`X B*  
                dst[j++] = 0x7D; !`gg$9  
            } {~SR>I3sv  
            else |*b8-a8<  
            { ;k0*@c*  
                return -1; 2+.m44>Ti  
            } *uIHa"  
        } .JqIAC~  
        else Jj!T7f*-GX  
        { <bH>\@p7}  
            dst[j++] = src; -l",!sV  
        } 5>HI/QG  
    } O  tr@jgw  
    *dst_len = j; 2+enRR~  
    return 0; !q X 7   
} o|+tRl  
_AFgx8  
int main(int argc, char *argv[]) .f}I$ "2  
{ }IV7dKzl  
    int i = 0; QMIXz[9w  
    int len = 0; UX?_IgJh<"  
    char buff[128] = {0x7F}; Jd |hwvwFe  
    char temp[128] = {0}; Pw")|85  
    char result[128] = {0}; ]OVjq ?  
ZA!vxQ?P,  
    pack_encode(buff, 1, temp, &len); Na=q(OKN  
    printf("encode reault:len=%d,", len); qRUz;M4  
    for (i = 0; i < len; i++) %63<Iz"  
        printf("%02x ", temp); D526X0  
    printf("\n"); eRGip2^cq+  
Zy'bX* s|  
    pack_decode(temp, len, result, &len); qG;WX n  
    printf("decode reault:len=%d,", len); ."R 2^`  
    for (i = 0; i < len; i++) .Ee8s]h5W  
        printf("%02x ", result); 'j.{o  
    printf("\n"); k: {$M yK  
u@o3p*bQ  
    if (memcmp(result, buff, len) != 0) ?0.+DB $  
    { t~Uqsa>n@'  
        printf("fuck!test failed\n"); htjJ0>&  
    } 8Vq,J:+  
    else p\(%bO   
    { A%9"7]:   
        printf("yes!, test ok\n"); )P$ IXA\  
    } QoqdPk#1  
03,+uf  
    return 0; ?0%lB=qQ  
} (\Dd9a8V-  
9gFC]UVWh  
/* 43/|[  
打包,解包、测试都在上面了,拿去用吧,不用感谢。 Jzr(A^vwo  
*/
[ 此帖被ajtdnta在2020-08-14 17:05重新编辑 ]


评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

一般

差劲
离线mj8abcd

性别:
帅哥
发帖
10527
金币
4759
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看该作者 1楼 发表于: 2020-08-14
  


离线墙头草

性别:
人妖
发帖
1213
金币
2022
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看该作者 2楼 发表于: 2020-08-21


离线qq603599910

性别:
人妖
发帖
7
金币
3
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看该作者 3楼 发表于: 2020-09-18
相关用了挺多,因为PC和STC15W通讯,就几个指令,所以电脑端发送单字节 A,B,C。。。。,然后单片机端接收到用switch判断做相应干活.


离线sqyfzx

性别:
人妖
发帖
189
金币
120
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看该作者 4楼 发表于: 2022-09-07
学习一下看看


离线love_change

性别:
人妖
发帖
318
金币
296
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看该作者 5楼 发表于: 2022-09-08
int pack_decode(char *src, int src_len, char *dst, int *dst_len) Wn;B~  
这句那位大佬解释下,这个函数开头的int和括号里面的int分别是,返回值类型,和变量类型吗


离线gyh02133

性别:
帅哥
发帖
585
金币
28
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看该作者 6楼 发表于: 2022-09-08
这个不好用


快速回复
限150 字节
 
上一个 下一个