搜索
bottom↓
回复: 34

求思路,串口接收不固定数据长度包,可以怎么处理

[复制链接]
头像被屏蔽

出0入0汤圆

发表于 2013-9-17 21:14:58 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-9-17 21:22:34 | 显示全部楼层
对帧头和帧尾都不做处理的吗?

出0入0汤圆

发表于 2013-9-17 21:25:17 | 显示全部楼层
好好约定协议,建议参考工业标准: modbus

出0入0汤圆

发表于 2013-9-17 21:29:11 | 显示全部楼层
参考NEMA0183协议就可以,以'$'字符为一帧开头,'\r'或‘\n’为结尾
头像被屏蔽

出0入0汤圆

 楼主| 发表于 2013-9-17 21:32:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

出0入0汤圆

 楼主| 发表于 2013-9-17 21:32:53 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

出0入0汤圆

 楼主| 发表于 2013-9-17 21:33:31 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-9-17 21:35:42 | 显示全部楼层
那就参考modbus吧,用定时器判断数据接收结束

出0入0汤圆

发表于 2013-9-17 22:24:33 | 显示全部楼层
本帖最后由 proteldxp 于 2013-9-17 22:27 编辑

约定一个数据格式:帧起始位+数据长度+数据包+结束位,必要时可以加上校验位。
头像被屏蔽

出0入0汤圆

 楼主| 发表于 2013-9-17 22:51:49 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-9-17 22:56:05 | 显示全部楼层
liujie14565 发表于 2013-9-17 22:51
亲   假如 数据包 没有 定义   帧尾 的 状态下    可以怎么判断接收完毕

超时20MS,,
头像被屏蔽

出0入0汤圆

 楼主| 发表于 2013-9-17 23:00:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-9-18 00:51:03 | 显示全部楼层
1.STM32有个串口空闲中断,能检测是否连续发过来。
2,硬件定时器,空闲3个包就是超时。
3.软件计算,数据最后需要有结束符号,或者固定协议,modbus等。

没想到了。。。

出0入0汤圆

发表于 2013-9-18 09:12:11 | 显示全部楼层
状态机
http://wuqidongxing.blog.163.com ... 950200791910512879/

出0入0汤圆

发表于 2013-9-18 09:29:21 | 显示全部楼层
應該不太難,接收後一定時間內,沒數據回來就是完了

出0入0汤圆

发表于 2013-9-18 09:30:48 | 显示全部楼层
但是要我寫好,可能也要數天呢

出0入33汤圆

发表于 2013-9-18 09:37:13 | 显示全部楼层
没有帧尾就加上帧尾,加不上就加帧头,帧头报告长度,收满长度收工。

出0入0汤圆

发表于 2013-9-18 09:43:58 | 显示全部楼层
定时器就那么紧缺?感觉用定时器挺好的啊。

出0入131汤圆

发表于 2013-9-18 09:52:18 | 显示全部楼层
vtte 发表于 2013-9-18 09:37
没有帧尾就加上帧尾,加不上就加帧头,帧头报告长度,收满长度收工。

+10086     

出0入0汤圆

发表于 2013-9-18 16:23:10 | 显示全部楼层
vtte 发表于 2013-9-18 09:37
没有帧尾就加上帧尾,加不上就加帧头,帧头报告长度,收满长度收工。

用dwin的gdus就是這樣了

出0入0汤圆

发表于 2013-9-18 17:13:36 | 显示全部楼层
没有帧头帧尾,又没有长度信息,那除了字符间隔还能有啥办法

出0入0汤圆

发表于 2013-9-18 17:30:29 | 显示全部楼层
如果对发送方无法做限制:

用一个定时器做接收超时, 这种效果最好.
如果定时器实在挪不出来. 在无线循环与接收中断中使用状态机机制.
头像被屏蔽

出0入0汤圆

 楼主| 发表于 2013-9-18 17:54:20 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-9-18 18:05:36 | 显示全部楼层

出0入0汤圆

发表于 2013-9-18 19:21:36 | 显示全部楼层
unsigned int i;
void main(void)
{
    .........


    i = 0;
    while(1)
    {
        if(i)
        {
            i++;
           if(i > (根据循环工作量取得一个常量经验值))
            {
                  // 认为接收到一帧, 对接收到的数据帧进行处理;
                  // 未防止接收数据丢失, 开启两个接收缓冲区, 关中断, 处理数据前切换接收缓冲区,  将 i 赋值为0等安全操作..... 重新开中断.
            }
        }
    }
}


void uartisr(void) interrupt 4
{
      if(RI)
      {
            RI = 0;

            // 将接收到的数据放入缓冲
             ........

            i = 1;
      }
}

出0入0汤圆

发表于 2013-9-18 21:03:11 | 显示全部楼层
liujie14565 发表于 2013-9-17 22:51
亲   假如 数据包 没有 定义   帧尾 的 状态下    可以怎么判断接收完毕

有数据长度啊,判断长度到了就说明接收完了。

出0入0汤圆

发表于 2013-9-23 13:37:35 | 显示全部楼层
没有帧头,帧尾又没有数据长度,你的这套通信协议是有多随便啊, 怎么保证数据的准确性嘞。

出0入0汤圆

发表于 2013-9-23 14:23:32 | 显示全部楼层
串口如果没有明确的帧定义,那就悲剧了

出0入0汤圆

发表于 2013-9-23 14:48:39 | 显示全部楼层
定这个协议的人脑袋可能有问题,他是定来让人看的,不是让计算机解析的

要不,你发些接收到的数据来,咱们帮你分析分析
头像被屏蔽

出0入0汤圆

 楼主| 发表于 2013-9-23 15:33:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-9-23 16:06:34 | 显示全部楼层
liujie14565 发表于 2013-9-23 15:33
就是 GSM 模块 返回 的 信息  ,  不同的 操作 返回的  数据 长度 不一致

你是说用PDU通讯吗?
如果是,你查查PDU解析吧

出0入0汤圆

发表于 2013-9-23 16:31:34 | 显示全部楼层
liujie14565 发表于 2013-9-23 15:33
就是 GSM 模块 返回 的 信息  ,  不同的 操作 返回的  数据 长度 不一致

GSM?
你即然是串口,想必指的是AT指令吧?
所有AT指令都是以 \r\n 结尾的

怎么没有结束符呢、?

出0入96汤圆

发表于 2013-9-23 16:54:45 | 显示全部楼层
windboy 发表于 2013-9-23 16:31
GSM?
你即然是串口,想必指的是AT指令吧?
所有AT指令都是以 \r\n 结尾的

+86 10086正解

出0入8汤圆

发表于 2013-9-23 17:08:50 | 显示全部楼层
超时为啥要单独站个硬件定时器  软件可以做啊。

出0入0汤圆

发表于 2013-9-23 17:48:26 | 显示全部楼层
额,定时器可以吧
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 14:31

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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