打印

MC52I 单片机 stm32

[复制链接]
1387|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
m__dd|  楼主 | 2013-11-23 10:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
GPRS模块向串口助手(或者单片机)发送数据时9600波特率,1、若为同一包数据,每个字符之间间隔多长时间。2、2包数据间最少间隔时间多长

即:我该如何判断单片机已接受GPRS发送的一包/帧完整数据?

想了两种方法:一个是判断包头包尾,比如GPRS一般应答时先发送2个“\r\n”,包尾发送一个“\r\n”.但是有的不是,不好做到统一。另一种方法是通过时间间隔:比如当接受的一个字符时,打开计数器开始计时(定时器中断已使能,假设50ms中断一次),每次进串口接受中断则将计数器清零,这样若同一包数据是连续的数据流,则不会进入定时器中断。当间隔50ms还没有接收到数据则会进入定时器中断,一旦进入定时器中断则认为一包数据接收完毕,设置完成标志位。  这样的好处是能够统一,且都在中断里处理,无需应用层程序。但问题是上面的两个问题,即时间间隔问题!

看英文文档看的头疼也没找到相关的,求指导。   新号分不多,

相关帖子

沙发
jt4117| | 2013-11-23 12:48 | 只看该作者
好好看看模块协议吧。  检测到包尾就算一包结束。  模块发送数据也不一定是匀速的。 根据时间计算根本不靠谱。

使用特权

评论回复
板凳
m__dd|  楼主 | 2013-11-23 15:53 | 只看该作者
jt4117 发表于 2013-11-23 12:48
好好看看模块协议吧。  检测到包尾就算一包结束。  模块发送数据也不一定是匀速的。 根据时间计算根本不靠 ...

谢谢回答,包头和包尾数据都一样,都是“\r\n”,怎么破啊。   

使用特权

评论回复
地板
m__dd|  楼主 | 2013-11-23 16:58 | 只看该作者
jt4117 发表于 2013-11-23 12:48
好好看看模块协议吧。  检测到包尾就算一包结束。  模块发送数据也不一定是匀速的。 根据时间计算根本不靠 ...

或者有没有推荐资料,看一看

使用特权

评论回复
5
chunyang| | 2013-11-23 21:17 | 只看该作者
楼主可以去看看ModBus协议,在理解其结构的基础上适当简化来做自己的协议。ModBus是典型的主从式通讯协议。

使用特权

评论回复
6
m__dd|  楼主 | 2013-11-29 22:09 | 只看该作者
jt4117 发表于 2013-11-23 12:48
好好看看模块协议吧。  检测到包尾就算一包结束。  模块发送数据也不一定是匀速的。 根据时间计算根本不靠 ...

我的是和GPRS模块通讯,而非直接与网络,它的数据流应该是匀速的。我接收数据小,不大于50字节,模块返回的数据对网络拥堵影响应该不大。

使用特权

评论回复
7
adef_13| | 2013-11-30 19:38 | 只看该作者
哇,这个一点都不懂,看起来好厉害啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

79

帖子

0

粉丝