user_ourdev 发表于 2012-5-9 11:41:27

DTU的缓存问题

现在用单片机和GPRS模块做DTU,假如单片机对外通信是串口115200,单片机对GPRS模块通信也是串口115200,这样在透传模式下,是不是就不需要缓存了?直接接收一个发送一个就OK了?
如果不行,该如何设计缓存工作的原理呢?谢谢

Hamyou 发表于 2012-5-9 11:44:02

不要缓存不行吧,假如突然网络阻塞,怎么办

user_ourdev 发表于 2012-5-9 14:52:13

Hamyou 发表于 2012-5-9 11:44 static/image/common/back.gif
不要缓存不行吧,假如突然网络阻塞,怎么办

透传模式下,单片机怎么知道是否网路阻塞呢?

lqs10 发表于 2012-5-9 15:01:57

GU900D可以支持每个TCP连接10K 字节的缓存,就是说,如果你一直发送数据给模块,模块如果网络阻塞而不能传输,模块内部会把数据暂时缓存起来,在网络畅通后,会自动把缓存的数据继续发出。不知道这种是否能解决你的问题呢?

user_ourdev 发表于 2012-5-9 15:13:02

lqs10 发表于 2012-5-9 15:01 static/image/common/back.gif
GU900D可以支持每个TCP连接10K 字节的缓存,就是说,如果你一直发送数据给模块,模块如果网络阻塞而不能传 ...

谢谢你的回答,你的意思就是说GPRS模块内部有缓存,本身就有防网络阻塞的功能,对吧?
我的意思是做一个DTU,DTU是由MCU+GPRS模块组成,MCU负责配置GPRS模块和对外通信等,如果MCU和外部通信速率和MCU和GPRS模块通信速率相等的话,是不是透传模式下,就不用在MCU内部再建立缓存了?

lqs10 发表于 2012-5-9 15:16:19

不是每个模块都内建缓存的,一半模块都不会负责做这个缓存。所以,DTU才有生存的空间啊。{:biggrin:}。其实,无论何种模式,如果模块支持缓存,它都是存在的,哪你MCU就不需要做了,你MCU的缓存能比模块内部的缓存空间大吗?

user_ourdev 发表于 2012-5-9 15:35:59

lqs10 发表于 2012-5-9 15:16 static/image/common/back.gif
不是每个模块都内建缓存的,一半模块都不会负责做这个缓存。所以,DTU才有生存的空间啊。。其实 ...

哦,明白了很多。我用的是华为的MG323模块,貌似没有内部缓存。那透传的时候,它如何告诉MCU网络拥堵以让MCU停产传数据呢?AT命令吗?

user_ourdev 发表于 2012-5-9 19:11:27

lqs10 发表于 2012-5-9 15:16 static/image/common/back.gif
不是每个模块都内建缓存的,一半模块都不会负责做这个缓存。所以,DTU才有生存的空间啊。。其实 ...

是通过 AT命令中的查询GPRS信号来判断网路拥堵吗

lqs10 发表于 2012-5-13 18:22:31

GU900D是通过调用CIPSEND来发送,如果返回失败,说明缓存已经满了,不能再发送。
其它模块有其它做法,具体可以看指令手册,但能支持10K BUFFER的几乎没有吧。
页: [1]
查看完整版本: DTU的缓存问题