一种shell透传多路AT指令的方法

allin2025-09-14  89


本发明涉及物联网,具体涉及一种shell透传多路at指令的方法。


背景技术:

1、at命令,是一种用于终端设备与pc应用之间连接与通信的指令集。at命令广泛应用于终端设备和数据通信中的控制协议。at指令有多种类型,包括测试指令、查询指令、设置指令和执行指令等。这些指令可以用于测试终端设备或调制解调器的某些功能是否正常工作,查询或设置参数的当前值,以及控制终端设备的具体操作。这些指令会被设备解析并执行相应的动作,让我们可以远程控制设备,实现各种功能,在物联网产品中有着广泛的使用。shell是一个命令解释器,它通过接受用户输入的shell命令来启动、暂停、停止程序的运行或对计算机进行控制。shell 是一个应用程序,它接收用户命令,然后调用相应的应用程序。

2、shell和at都是mmi的一种方式:shell命令格式一般为:command [选项] [参数],命令、选项、参数之间都是以空格分隔。at命令的格式一般为 at+命令=参数,或者是 atx=参数,或者是at。shell和at模块层次位置相同,处于驱动之上,用户应用之下的支撑层。这两种命令在输入的形式上有所区别,且不从属,并不兼容。如附图1所示,假设a表示上位机,b表示下位机主控,b只带了两个支持at的模块c、d(图中子模块1、2);a与b直连,a与c/d不直接连接;那么通信就涉及到a与b之间交互、b 与c/d之间交互、a 与c/d之间交互;目前见到的方案中,如果要实现a 与 c/d之间交互,那么需要从b进行纯转发,不支持c/d与a的交互;如果a 与 b之间交互,a就没法与c/d交互。这样的话上位机a就无法做到同时实现与b/c/d无感交互,即需要b能区别at和shell两种命令方式,常规的做法是在shell的下层也就是链路层进行判断,将at与shell区分,并作不同处理,这样链路层会比较臃肿,shell的代码也不能复用。

3、由此,如何提供一种对at指令的转换方法,使得实现上位机和主控板、上位机和多路子模块之间at命令的数据无缝衔接,改善物联网开发的方便性,成为了领域内的重要研究课题。


技术实现思路

1、1.所要解决的技术问题:

2、针对上述技术问题,本发明提供一种基于shell应用的at转发算法实现,实现上位机和主控板、上位机和多路子模块之间at命令的数据无缝衔接,大大方便了终端用户的开发、调试和使用,既可以提高产品开发效率,又为产品应用带来了更多便利性。

3、2.技术方案:

4、一种shell透传多路at指令的方法,应用于上位机与主控模块以及主控模块下属子模块之间的通信;所述主控模块与多路子模块通信相连;其特征在于:所述主控模块设置at透传子模块;当上位机与主控模块之间进行通信时,主控模块接收的指令先传输至at透传子模块;所述at透传子模块调用shell命令程序识别接收到的指令是否为at指令;

5、如果是at指令则利用原有shell处理流程,将该指令进行shell预处理使该指令能够进入shell对应的处理函数,该函数会重新组织将参数组织成at命令格式,并到命令表查找该命令对应的物理模块;经过指令恢复后发送该指令对应的子模块,进而实现shell透传多路at指令。

6、进一步地,所述at透传子模块调用shell命令程序识别接收到的指令是否为at指令方法为:shell进程程序等待并接收上位机的操作指令,分析收到的操作命令中是否含有at指令的关键词,如果包含关键词,将该指令送入shell的void at(int argc, char *argv[])函数,该函数能够实现主模块与at设备之间的at通讯,以及向上位机的透传;子模块在接收到上位机传递来的指令时shell应用程序分析收到的操作命令中是否为经过shell处理的at指令,如果是经过shell处理后的指令,将指令恢复至原有的at指令;所述at指令的关键词包括包含“at”、“at+”、“at” “at+”中的一种或多种。

7、进一步地,所述利用原有shell处理流程,将该指令进行shell预处理为:将at指令中的“+”更换为空格;将指令恢复至原有的at指令为将修改后的指令中的空格更换为“+”。

8、进一步地,所述指令恢复后发送该指令对应的子模块具体包括:如果该主控模块只与一个子模块相连,则该恢复后的指令直接传输至该子模块;如果与该主控模块相连的子模块有多个,shell命令程序根据预设的规则判断上位机想访问的子模块;所述预设的规则包括预先设定默认的at通信设备对应的子模块、或者通过查询本地的at命令表中查询目标子模块;如果获得到目标子模块,根据当前转发通道配置,直接将上位机的at命令转发给该子模块对应的设备,并等待至设备返回结果后,将收到的相应数据转发给上位机,实现at命令和响应数据的透传。

9、进一步地,还包括,如果主控下的多个子模块存在同样的at命令,并且上位机没有指定通信对象的子模块,at透传子模块接收到该命令后,其所在的主控则回复nok,要求上位机指定需要访问的具体子模块。

10、进一步地,应用于物联网感知层设备与上位机之间的通信;所述物联网感知层设备包括嵌入式主控模块、多个感知设备模块或通讯模块构成;其中多个感知设备模块或通讯模块与主控模块之间通过预设有线通信方式相连;所述预设有线通信方式包括usart、spi;所述上位机与控制模块之间所述通过shell透传多路at指令的方法实现两者之间的shell命令以及at指令的兼容通信。

11、3.有益效果:

12、(1)本发明通过在shell中增加at透传处理函数处理shell命令和at命令之间的格式转换,增加at透传子模块设定shell命令使上位机可以主动选择通信目标子模块,在主控端实现at命令软路由功能。使上位机可以通过shell,直接以at命令的方式与主控和模块1~模块n之间通信。主控板通过软件的方式,灵活处理来自上位机的at命令,既可以实现数据透传,也能保证主控本地shell命令的执行不受影响。

13、(2)本方法中采用shell对at指令进行处理,其中使用shell的优点包括:用户通过shell可与主控板系统进行交互式会话;上位机可以灵活地利用位置参数传递参数值;程序模块结构化;提供了通配符,重定向,管道等机制,方便了模式匹配、i/0处理和数据传输;便于用户开发新命令。



技术特征:

1.一种shell透传多路at指令的方法,应用于上位机与主控模块以及主控模块下属子模块之间的通信;所述主控模块与多路子模块通信相连;其特征在于:所述主控模块设置at透传子模块;当上位机与主控模块之间进行通信时,主控模块接收的指令先传输至at透传子模块;所述at透传子模块调用shell命令程序识别接收到的指令是否为at指令;

2.根据权利要求1所述的一种shell透传多路at指令的方法,其特征在于:所述at透传子模块调用shell命令程序识别接收到的指令是否为at指令方法为:shell进程程序等待并接收上位机的操作指令,分析收到的操作命令中是否含有at指令的关键词,如果包含关键词,将该指令送入shell的void at(int argc, char *argv[])函数,该函数能够实现主模块与at设备之间的at通讯,以及向上位机的透传;子模块在接收到上位机传递来的指令时shell应用程序分析收到的操作命令中是否为经过shell处理的at指令,如果是经过shell处理后的指令,将指令恢复至原有的at指令;所述at指令的关键词包括包含“at”、“at+”、“at” “at+”中的一种或多种。

3.根据权利要求2所述的一种shell透传多路at指令的方法,其特征在于:所述利用原有shell处理流程,将该指令进行shell预处理为:将at指令中的“+”更换为空格;将指令恢复至原有的at指令为将修改后的指令中的空格更换为“+”。

4.根据权利要求3所述的一种shell透传多路at指令的方法,其特征在于:所述指令恢复后发送该指令对应的子模块具体包括:如果该主控模块只与一个子模块相连,则该恢复后的指令直接传输至该子模块;如果与该主控模块相连的子模块有多个,shell命令程序根据预设的规则判断上位机想访问的子模块;所述预设的规则包括预先设定默认的at通信设备对应的子模块、或者通过查询本地的at命令表中查询目标子模块;如果获得到目标子模块,根据当前转发通道配置,直接将上位机的at命令转发给该子模块对应的设备,并等待至设备返回结果后,将收到的相应数据转发给上位机,实现at命令和响应数据的透传。

5.根据权利要求4所述的一种shell透传多路at指令的方法,其特征在于:还包括,如果主控下的多个子模块存在同样的at命令,并且上位机没有指定通信对象的子模块,at透传子模块接收到该命令后,其所在的主控则回复nok,要求上位机指定需要访问的具体子模块。

6.根据权利要求1所述的一种shell透传多路at指令的方法,其特征在于:应用于物联网感知层设备与上位机之间的通信;所述物联网感知层设备包括嵌入式主控模块、多个感知设备模块或通讯模块构成;其中多个感知设备模块或通讯模块与主控模块之间通过预设有线通信方式相连;所述预设有线通信方式包括usart、spi;所述上位机与控制模块之间所述通过shell透传多路at指令的方法实现两者之间的shell命令以及at指令的兼容通信。


技术总结
本发明公开一种shell透传多路AT指令的方法,应用于上位机与主控模块及其子模块之间的通信;主控模块设置AT透传子模块;当上位机与主控模块进行通信时,主控模块接收的指令先传输至AT透传子模块;AT透传子模块调用shell命令程序识别接收到的指令是否为AT指令;如果是AT指令则利用原有shell处理流程,将该指令进行shell预处理使该指令能够进入shell对应的处理函数,该函数会重新组织将参数组织成AT命令格式,并到命令表查找该命令对应的物理模块;经过指令恢复后发送该指令对应的子模块,进而实现shell透传多路AT指令。本发明实现了上位机和主控板、上位机和多路子模块之间AT命令的数据无缝衔接。

技术研发人员:朱小康,朱敏
受保护的技术使用者:江苏海事职业技术学院
技术研发日:
技术公布日:2024/10/31
转载请注明原文地址: https://www.8miu.com/read-24004.html

最新回复(0)