新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 状态机在嵌入式系统中的应用

状态机在嵌入式系统中的应用

作者: 时间:2011-05-27 来源:网络 收藏
3.2 短信数据的发送

本文引用地址:https://www.eepw.com.cn/article/150700.htm

  如图2所示,需要通过串口1发送的数据包括:

  读取/删除短信数据、下行功率查询数据、信源信息查询数据、未读短信查询数据、短消息发送缓冲区数据、告警上报发送缓冲区数据。其中,读取/删除短信数据、下行功率查询数据、信源信息查询数据和未读短信查询数据,

  直接由GSM Modem处理,并作出处理结果应答。因此,这类数据直接通过串口1发送缓冲区发送。

  而短信数据(短消息发送缓冲区数据、告警上报发送缓冲区数据)发送需要两步操作:

  先发送短信的目的电话号码,再发送短信消息内容。发送是否完成,与GSM

  Modem和GSM网络有关。因此,这类数据的发送,先将发送操作的所有数据存储到短信数据缓冲区中,然后由软件通过短信数据缓冲区的,将数据通过串口1发送缓冲区发送给GSM

  Modem。

  3.2.1 短信数据结构

  短信数据包括短消息发送缓冲区数据和告警上报发送缓冲区数据。根据短信发送操作的两个步骤,短信数据缓冲区的数据结构定义如下:

  typedef struct{

  unsigned char bStBuf;//bStBuf = SmsTx_Emty或者= SmsTx_CmdRdy或者

  = SmsTx_Dly1或者= SmsTx_DatRdy或者= SmsTx_Dly2或者= SmsTx _Wait

  unsigned char cmd_len;

  char cmd_buf[32];

  unsigned short dat_len;

  char dat_buf[SMS_LEN+1];

  unsigned char retry_time;//重传次数

  }SmsTx_t;

  ① bStBuf成员: 用于描述短信数据缓冲区的

  ② cmd_len成员: 用于描述cmd_buf中数据的长度。

  ③ cmd_buf成员: 用于存储短消息发送中的控制命令,如AT+CMGS=13583823789。

  ④ dat_len成员: 用于描述存储短消息发送中的信息体长度。

  ⑤ dat_buf成员: 用于存储短消息发送中的信息体。

  ⑥ retry_time成员: 用于描述短消息在发送失败时,重传的次数。

  3.2.2 短信数据发送

  短信数据缓冲区的状态有6种:

  ① SmsTx_Empty: 短信数据缓冲区空。

  ② SmsTx_CmdRdy: 短信数据缓冲区控制命令准备好。

  ③ SmsTx_Dly1: 短信数据缓冲区延时1。

  ④ SmsTx_DatRdy: 短信数据缓冲区消息体准备好。

  ⑤ SmsTx_Dly2: 短信数据缓冲区延时2。

  ⑥ SmsTx_Wait: 短信数据缓冲区等待。

  其状态的转移情况如图4所示。

  

  图4 短信数据发送状态机

  状态机的转移过程通过短消息发送缓冲区数据的发送来说明,其告警上报发送缓冲区的数据发送与此相同。

  结语

  在整个移动2G光纤直放站近端机的监控软件中,除了短消息收发处理,还包括实时采样、实时告警上报等任务。其所有的软件设计都采用类似于短信收发处理的状态机、队列和软件定时器的设计思路,极大地提高移动2G光纤直放站近端机监控软件的效率。这种在前后台中使用状态机、队列和软件定时器的设计思路,可以到其他的前后台中,是一种值得学习、借鉴的软件设计思路。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭