查看: 1914|回复: 4

[其他] 请问如何实现数据的打包发送?

[复制链接]

该用户从未签到

32

主题

138

帖子

0

中级会员

Rank: 3Rank: 3

积分
390
最后登录
2017-12-29
发表于 2017-5-11 10:30:29 | 显示全部楼层 |阅读模式
从来没用过数据打包发送数据,虽然原理都清楚却不知道如何下手。不知道怎么做,现在程序使用的就是CsIO的功能使用getchar或者scanf的方式通过串口接收串口猎人的输入。如何使用猎人发送一段数据,这些数据又该怎么进入下面这段程序中的UartHandler()函数?如果大家有串口数据打包传输的程序能否发我参考一下。

下面是一段我找到的解包机制程序,
unsigned char recstatu;//表示是否处于一个正在接收数据包的状态
unsignedchar ccnt;      //计数
unsigned char packerflag;//是否接收到一个完整的数据包标志
unsigned char rxbuf[100];//接收数据的缓冲区
void UartHandler()
{
       unsigned char tmpch;
       tmpch = UARTRBR;
       if(tmpch 是包头)                         //检测是否是包头
       {  
           recstatu = 1;
           ccnt   = 0 ;
           packerflag = 0;
           return ;
       }
       if(tmpch是包尾)                         //检测是否是包尾
       {
           recstatu = 0;
           packerflag =1;                     //用于告知系统已经接收到一个完整的数据包
           return ;
       }
      if(recstatu==1)                          //是否处于接收数据包状态
      {
            rxbuf[ccnt++]= tmpch;
      }
}


我知道答案 目前已有4人回答
回复

使用道具 举报

该用户从未签到

0

主题

54

帖子

0

注册会员

Rank: 2

积分
181
最后登录
2019-11-15
发表于 2017-5-11 13:28:09 | 显示全部楼层
自定义可以参考:包头+长度+校验位+停止位。或者直接用X/Y/Z协议,超级终端里都做好了,不用自己写上位机。
回复 支持 反对

使用道具 举报

该用户从未签到

32

主题

138

帖子

0

中级会员

Rank: 3Rank: 3

积分
390
最后登录
2017-12-29
 楼主| 发表于 2017-5-11 16:01:23 | 显示全部楼层
衔胆栖冰 发表于 2017-5-11 13:28
自定义可以参考:包头+长度+校验位+停止位。或者直接用X/Y/Z协议,超级终端里都做好了,不用自己写上位机。 ...

超级终端是什么?
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

54

帖子

0

注册会员

Rank: 2

积分
181
最后登录
2019-11-15
发表于 2017-5-11 16:04:02 | 显示全部楼层
胡孟龙 发表于 2017-5-11 16:01
超级终端是什么?

就像串口助手那样的东西
回复 支持 反对

使用道具 举报

该用户从未签到

32

主题

138

帖子

0

中级会员

Rank: 3Rank: 3

积分
390
最后登录
2017-12-29
 楼主| 发表于 2017-5-11 16:10:09 | 显示全部楼层
衔胆栖冰 发表于 2017-5-11 16:04
就像串口助手那样的东西

我现在的任务要求就是把串口猎人发的数据包解析出来
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-20 08:48 , Processed in 0.098596 second(s), 25 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表