回 帖 发 新 帖 刷新版面

主题:串口命令查询函数的改进

 在串口通讯应用中,有时会遇到一些需要发送不同的字符串来控制程序实现不同的操作。许多初学者,多数情况下,在编写串口命令解析时都是通过一次次编写if判断来写程序,像下面这样:更多技术咨询15286823477 QQ:1448788112

  这样写,需要处理的命令较少时还可以,需要处理的命令多时,麻烦就来了,程序显得特点的长。有什么办法可以让程序变得简单呢?
  下面就教给大家改进命令查询解析函数。
  首先,我们应该想办法让一个个命令名字组合在一起这样就不用再一个个去编写if去比较了。对,可以把它们放在一个数组中,然后就可以用循环来处理了。

  可是这样的话,由于不用的命令执行的内容不一样,还不能直接用循环来做。聪明的同学可能想到,把要处理的事情也写成一个个独立的函数,同样把函数也放到一起。那么怎么把一个个函数放在一起呢?用函数数组就可以实现。
  既然要用函数数组,那对函数就要有一定的要求了---函数的类型必须一致。我们可以先用typedef声明一个函数指针类型,再定义一个这种类型的数组。假设我们的处理函数不需要传递参数也不用返回值,像下面这样写即可。

  有了这两个数组我们就可以用循环来处理接收到的字符串了。
  假如我们总共有4个命令。像下面这样写。

  代码量是不是变得小了很多?但是这样写不够完美,添加命令时不方便,管理起来也不方便。为什么不做成结构体来管理呢?改成结构体的话很简单,这里就不细说了。
  这里主要是给初学者一个提示,当遇到程序有许多重复的代码时,先不要急着去实现,多思考,巧构思,把重复的代码能用循环来实现则用循环来实现,将达到事半功倍的效果。比如按键扫描和触摸屏按键等等,都是可以通过变换数据的组织方式,达到精减代码的效果的,而且在程序组织上显

回复列表 (共1个回复)

沙发

技巧不错、不过感觉结构体也未必方便。

我来回复

您尚未登录,请登录后再回复。点此登录或注册