栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Python小插件自动提取规格书中的AT命令

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python小插件自动提取规格书中的AT命令

闲聊

AT命令的形式开发模块功能,往往需要在c语言环境中实现,为了方便调用AT命令,就需要把AT命令先定义在列表中。有些模块的AT命令可达上百条,一条一条复制粘贴没效率,想到Python开发简单,使用也方便,就用它来开发个小插件一劳永逸吧。

直接上源码

复制源码新建文件改后缀名为.py双击即可生成各个文件了

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import codecs

# 打印当前目录
print("当前工作目录 : %s")
# 打开源文件,以AT指令规格书的目录为源文件
input = codecs.open('atcmdraw.txt', 'r', 'utf-8')
atCmdOutputFile = codecs.open('atcmd.txt', 'w', 'utf-8')
# 保存从源文件中提取AT指令说明部分,无此文件则创建该文件
atCmdInforOutputFile = codecs.open('atcmdInfor.txt', 'w', 'utf-8')
# 保存从源文件中提取AT指令并生成结构体数组,无此文件则创建该文件
# 单体如下:
#    {
#        .index = AC_QIDNSCFG,
#        .readInfor = "AT+QIDNSCFG",
#        .cmdInfor = "配置DNS服务器地址",
#    },
atCmdStructListOutputFile = codecs.open('atcmdStruct.c', 'w', 'utf-8')
# 保存AT指令对应的以枚举变量的方式的序号,,无此文件则创建该文件
atCmdIndexOutputFile = codecs.open('atcmdIndex.h', 'w', 'utf-8')

index = 0   #用于计算AT指令对应的序号,并转换成枚举变量成员
# 将源文件的内容全部以行的形式读出来存放在列表中
lineList = input.readlines()
newList = []# 定义列表,用于存放包含有效AT指令
# 根据目录中标题的格式提取有效的AT指令
for line in lineList:
    if (line.find('. AT') != -1):
        newList.append(line)
# 将结构体数组注释写入文件中
atCmdStructListOutputFile.write('//移远物联网AT指令集rn')
# 将定义结构体变量命名写入文件中
atCmdStructListOutputFile.write('atCommandStruct_ts atCommandStructList[] = rn{rn')
# 循环将所有有效AT指令信息写入各个文件中
for line in newList:
    if (line.find('. AT') != -1):
        print(line)
        # 去除源文件中的目录标题的序号,然后以空格为分隔符将各个部分信息分离
        # 最终格式如下:
        # ['AT+QISDE', '控制是否回显', 'AT+QISEND', '要发送的数据', '...............................................38rn']
        itemList = line.lstrip('0123456789. ').split(' ')
        print(itemList)
        # 字符串中的双引号需要转成转义字符
        cmd = itemList[0].replace('"','\"')
        print(cmd)
        # 以空格为分隔符将各个部分信息分离后的长度大于等于3,就把所有成员串成一个字符
        if len(itemList) >= 3:
            for i in range(2 , len(itemList)):
                itemList[1] = itemList[1] + itemList[i]
        # 串联后的字符中存在多余字符,以英文字符.为分隔符将各个部分信息分离,第一部分即为AT指令说明了
        cmdInfor = itemList[1].split('.')[0]
        # 组合AT指令序号的枚举变量成员,比如:AT+QCFG="nwscanmode",转成AC_QCFG_nwscanmode作为枚举成员
        # 需要将不合法的字符替换成合法的
        cmdIndex = 'AC_' + cmd.replace('AT*','').replace('AT+','').replace('=','_').replace('*','_').replace('&','_').replace('^','_').replace('(/','_').replace('/','_').replace('\"','').replace(')','')
        # 将AT指令说明部分写入文件中
        atCmdInforOutputFile.write(cmdInfor + 'rn')
        # 将AT指令部分写入文件中
        atCmdOutputFile.write(cmd+ 'rn')
        # 组合结构体数组初始化格式
        # 单体如下:
        #    {
        #        .index = AC_QIDNSCFG,
        #        .readInfor = "AT+QIDNSCFG",
        #        .cmdInfor = "配置DNS服务器地址",
        #    },
        atCmdStructListOutputFile.write('   {rn')
        atCmdStructListOutputFile.write('       .index = '+ cmdIndex + ',rn')
        atCmdStructListOutputFile.write('       .readInfor = "'+cmd + '",rn')
        atCmdStructListOutputFile.write('       .cmdInfor = "'+cmdInfor + '",rn')
        atCmdStructListOutputFile.write('   },')
        # 最后以行不需要换新行,防止多余的空行
        if index != len(newList) - 1:
            atCmdStructListOutputFile.write('rn')
        # 组合成枚举变量成员及其注释,如下:
                                        #    AC_AT_V,        //显示当前设置
        atCmdIndexOutputFile.write('    ' + ' '.format(index) + cmdIndex + ',        //' + cmdInfor)
        # 最后以行不需要换新行,防止多余的空行
        if index != len(newList) - 1:
            atCmdIndexOutputFile.write('rn')
        index = index + 1
# 结构体变量收尾
atCmdStructListOutputFile.write('rn};')
# 操作完之后将各个文件关闭
atCmdOutputFile.close()
atCmdInforOutputFile.close()
atCmdStructListOutputFile.close()
atCmdIndexOutputFile.close()

生成文件

结构体数组格式,包含AT命令,AT命令说明已经对应的枚举标号
https://download.csdn.net/download/dropLin/85854353

   {
       .index = AC_QSIMSTAT,
       .readInfor = "AT+QSIMSTAT",
       .cmdInfor = "(U)SIM卡插拔状态上报",
   },

枚举变量定义
https://download.csdn.net/download/dropLin/85854412

     AC_GMR,        //请求TA固件版本ID
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1001841.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号