CN113391931B - 基于蓝牙的远程控制方法、装置、计算机设备和存储介质 - Google Patents

基于蓝牙的远程控制方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN113391931B
CN113391931B CN202110620125.4A CN202110620125A CN113391931B CN 113391931 B CN113391931 B CN 113391931B CN 202110620125 A CN202110620125 A CN 202110620125A CN 113391931 B CN113391931 B CN 113391931B
Authority
CN
China
Prior art keywords
bluetooth
instruction
socket
control
command execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110620125.4A
Other languages
English (en)
Other versions
CN113391931A (zh
Inventor
武雄彪
刘慧�
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Neoway Technology Co Ltd
Original Assignee
Shenzhen Neoway Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Neoway Technology Co Ltd filed Critical Shenzhen Neoway Technology Co Ltd
Priority to CN202110620125.4A priority Critical patent/CN113391931B/zh
Publication of CN113391931A publication Critical patent/CN113391931A/zh
Application granted granted Critical
Publication of CN113391931B publication Critical patent/CN113391931B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]
    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C17/00Arrangements for transmitting signals characterised by the use of a wireless electrical link
    • G08C17/02Arrangements for transmitting signals characterised by the use of a wireless electrical link using a radio link
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/544Remote

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Selective Calling Equipment (AREA)

Abstract

本申请涉及一种基于蓝牙的远程控制方法、装置、计算机设备和存储介质。方法包括:接收控制设备发送的蓝牙指令集,蓝牙指令集是通过控制设备接收用户触发的连接指令生成的;创建内部进程对,内部进程对包括并列执行的父进程和子进程;基于虚拟串口协议,利用父进程根据蓝牙指令集建立与控制设备之间的虚拟连接链路;利用父进程通过虚拟连接链路接收控制设备发送的控制指令,并利用进程间通信将控制指令转发至子进程;利用子进程获取控制指令,并依据控制指令进行相应的命令执行,得到命令执行结果;利用子进程将命令执行结果返回至父进程,并由父进程将命令执行结果通过虚拟连接链路发送至控制设备。采用本方法能够实现对Linux嵌入式设备的无线远程控制与调试。

Description

基于蓝牙的远程控制方法、装置、计算机设备和存储介质
技术领域
本申请涉及蓝牙技术领域,特别是涉及一种基于蓝牙的远程控制方法、装置、计算机设备和存储介质。
背景技术
目前,越来越多基于Linux的嵌入式设备被应用在各种产品中。当产品在应用阶段出现问题时,需要对其进行调试。然而,嵌入式设备的应用场景往往十分复杂,基本不可能通过拆除产品的方式来进行调试。
现有技术中通常采用USB(Universal Serial Bus)有线连接的方式将控制设备和嵌入式设备进行连接,从而对嵌入式设备进行调试。然而,对于基于Linux的嵌入式设备而言,由于其板载资源十分有限,开发阶段调试时所采用的UART(Universal AsynchronousReceiver/Transmitter)、USB等接口在产品开发完成后即被移除,从而无法利用上述方式将控制设备与嵌入式设备进行连接。
发明内容
基于此,有必要针对上述技术问题,提供一种能够无线对Linux嵌入式设备进行控制的基于蓝牙的远程控制方法、装置、计算机设备和存储介质。
一种基于蓝牙的远程控制方法,应用于Linux嵌入式设备,所述方法包括:
接收控制设备发送的蓝牙指令集,所述蓝牙指令集是通过控制设备接收用户触发的连接指令生成的;
创建内部进程对,所述内部进程对包括并列执行的父进程和子进程;
基于虚拟串口协议,利用父进程根据所述蓝牙指令集建立与所述控制设备之间的虚拟连接链路;
利用所述父进程通过所述虚拟连接链路接收所述控制设备发送的控制指令,并利用进程间通信将所述控制指令转发至子进程;
利用所述子进程获取所述控制指令,并依据所述控制指令进行相应的命令执行,得到命令执行结果;
利用所述子进程将所述命令执行结果返回至所述父进程,并由所述父进程将所述命令执行结果通过所述虚拟连接链路发送至所述控制设备。
在其中一个实施例中,所述Linux嵌入式设备中装设有Linux标准系统,所述创建内部进程对,包括:
基于Linux标准系统,通过当前进程利用进程函数和进程标识,创建子进程;
将所述当前进程作为父进程,所述父进程与所述子进程构成所述内部进程对。
在其中一个实施例中,所述方法还包括创建套接字对的步骤;其中,所述套接字对包括第一套接字和第二套接字,所述第一套接字与第二套接字的进程共享;
所述利用所述父进程通过所述虚拟连接链路接收所述控制设备发送的控制指令,包括:
利用所述父进程实时监听所述虚拟连接链路上的传输数据;
当接收到所述控制设备发送的控制指令时,利用所述父进程关闭第一套接字,并将所述控制指令写入第二套接字。
在其中一个实施例中,所述利用所述子进程获取所述控制指令,并依据所述控制指令进行相应的命令执行,得到命令执行结果,包括:
利用所述子进程关闭所述第二套接字,并从所述第一套接字中读取所述控制指令;
基于所述控制指令,通过所述子进程进行相应的命令执行,并得到命令执行结果。
在其中一个实施例中,所述利用所述子进程将所述命令执行结果返回至所述父进程,并由所述父进程将所述命令执行结果通过所述虚拟连接链路发送至所述控制设备,包括:
利用所述子进程将所述命令执行结果写入所述第一套接字,并由所述父进程读取所述第二套接字中的命令执行结果;
利用所述父进程将所述命令执行结果通过所述虚拟连接链路发送至所述控制设备,以供所述控制设备接收所述命令执行结果后进行回显展示。
在其中一个实施例中,所述方法还包括:
通过控制设备扫描周围的Linux嵌入式设备,生成设备列表;
通过控制设备获取基于用户在所述蓝牙设备列表中选择而生成的连接指令,并依据所述连接指令生成蓝牙指令集;其中,所述蓝牙指令集中包括蓝牙配对指令、虚拟连接链路建立指令、以及基于虚拟连接链路的数据传输指令。
在其中一个实施例中,所述控制指令包括调试指令,用于对所述Linux嵌入式设备进行无线调试;相应地,所述命令执行结果包括所述Linux嵌入式设备的日志信息、配置信息、以及异常信息中的至少一种。
一种基于蓝牙的远程控制装置,所述装置包括:
接收模块,用于接收控制设备发送的蓝牙指令集,所述蓝牙指令集是通过控制设备接收用户触发的连接指令生成的;
处理模块,用于创建内部进程对,所述内部进程对包括并列执行的父进程和子进程;
所述处理模块,还用于基于虚拟串口协议,利用父进程根据所述蓝牙指令集建立与所述控制设备之间的虚拟连接链路;
所述处理模块,还用于利用所述父进程通过所述虚拟连接链路接收所述控制设备发送的控制指令,并利用进程间通信将所述控制指令转发至子进程;
所述处理模块,还用于利用所述子进程获取所述控制指令,并依据所述控制指令进行相应的命令执行,得到命令执行结果;
所述处理模块,还用于利用所述子进程将所述命令执行结果返回至所述父进程,并由所述父进程将所述命令执行结果通过所述虚拟连接链路发送至所述控制设备。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
接收控制设备发送的蓝牙指令集,所述蓝牙指令集是通过控制设备接收用户触发的连接指令生成的;
创建内部进程对,所述内部进程对包括并列执行的父进程和子进程;
基于虚拟串口协议,利用父进程根据所述蓝牙指令集建立与所述控制设备之间的虚拟连接链路;
利用所述父进程通过所述虚拟连接链路接收所述控制设备发送的控制指令,并利用进程间通信将所述控制指令转发至子进程;
利用所述子进程获取所述控制指令,并依据所述控制指令进行相应的命令执行,得到命令执行结果;
利用所述子进程将所述命令执行结果返回至所述父进程,并由所述父进程将所述命令执行结果通过所述虚拟连接链路发送至所述控制设备。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收控制设备发送的蓝牙指令集,所述蓝牙指令集是通过控制设备接收用户触发的连接指令生成的;
创建内部进程对,所述内部进程对包括并列执行的父进程和子进程;
基于虚拟串口协议,利用父进程根据所述蓝牙指令集建立与所述控制设备之间的虚拟连接链路;
利用所述父进程通过所述虚拟连接链路接收所述控制设备发送的控制指令,并利用进程间通信将所述控制指令转发至子进程;
利用所述子进程获取所述控制指令,并依据所述控制指令进行相应的命令执行,得到命令执行结果;
利用所述子进程将所述命令执行结果返回至所述父进程,并由所述父进程将所述命令执行结果通过所述虚拟连接链路发送至所述控制设备。
上述基于蓝牙的远程控制方法、装置、计算机设备和存储介质,通过接收控制设备发送的蓝牙指令集,并利用蓝牙的虚拟串口协议建立Linux嵌入式设备与控制设备之间的虚拟连接链路,从而获取来自控制设备的控制指令;通过创建父进程和子进程,由父进程对虚拟连接链路进行实时监听,并将监听获取的控制指令利用进程间通信转发给子进程,由子进程执行控制指令并得到命令执行结果,再将命令执行结果返回至父进程,由父进程返回至控制设备,从而在Linux嵌入式设备无法利用有线的方式进行调试控制时,实现对Linux嵌入式设备的无线调试和远程控制,大大简化了调试步骤,使得技术人员能够更加方便地对Linux嵌入式设备进行远程无线调试控制。
附图说明
图1为一个实施例中基于蓝牙的远程控制方法的应用环境图;
图2为一个实施例中基于蓝牙的远程控制方法的流程示意图;
图3为另一个实施例中基于蓝牙的远程控制方法的流程示意图;
图4为一个实施例中基于蓝牙的远程控制装置的结构框图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
基于Linux的嵌入式设备(以下简称Linux嵌入式设备)应用场景十分复杂,通常所涉及的安装场景包括室内、高塔、地下、或者河流附近等,一旦设备出现异常,想要将设备拆除之后再进行调试、查看问题所在,这样的方式所花费的代价十分巨大。
而对于Linux嵌入式设备而言,由于其板载资源(例如内存、CPU容量等)十分有限,开发阶段调试时所采用的UART(Universal Asynchronous Receiver/Transmitter)、USB(Universal Serial Bus)等接口在产品开发完成后即被移除,从而无法利用有线连接的方式对Linux嵌入式设备进行连接,并进行调试与控制。
与此同时,由于Linux嵌入式设备的板载资源限制,大量Linux嵌入式设备无法安装庞大的远程登录套件,因此常用的SSH(Secure Shell,安全外壳协议)、Telnet等远程登录的方式也在这些Linux嵌入式设备上不可用。
有鉴于此,本申请提供一种基于蓝牙的远程控制方法,该方法应用于Linux嵌入式设备上,从而解决Linux嵌入式设备不便于有线连接以进行调试控制的问题。
本申请提供的基于蓝牙的远程控制方法,可以应用于如图1所示的应用环境中,包括控制设备110和目标设备120。其中,控制设备110包括显示屏和输入装置中的至少一种。控制设备110可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备等。
其中,目标设备120为基于Linux内核的嵌入式设备,其中装设有Linux标准系统。嵌入式设备由嵌入式处理器、相关支撑硬件和嵌入式软件系统组成。其中,嵌入式处理器包括集成电路芯片或包括通用处理器,例如,可以是微处理器(MCU)或者任何常规处理器等,例如中央处理器(CPU)。相关支撑硬件包括显示卡、存储介质(例如FLASH等)、以及通讯设备(例如蓝牙模块等)。嵌入式软件系统为基于Linux内核的操作系统。
在一个具体的场景中,控制设备110通过显示屏或输入装置接收用户的操作指令,并依据操作指令生成蓝牙连接指令,并依据蓝牙连接指令与目标设备120建立蓝牙连接,从而建立基于蓝牙协议的虚拟连接链路。在虚拟连接链路建立完毕后,控制设备110接收通过用户基于显示屏或输入装置输入而生成的控制指令,并将控制指令发送至目标设备120;目标设备120执行该控制指令,并将命令执行结果返回至控制设备110。
在一个实施例中,控制设备扫描周围的Linux嵌入式设备,生成设备列表;获取基于用户在蓝牙设备列表中选择而生成的连接指令,并依据连接指令生成蓝牙指令集;其中,蓝牙指令集中包括蓝牙配对指令、虚拟连接链路建立指令、以及基于虚拟连接链路的数据通过传输指令。
具体地,控制设备可以以一定时间间隔、或以一定频率对周围的蓝牙设备进行扫描,从而获取设备列表,该设备列表上记录有当前被扫描到的各蓝牙设备的名称、设备ID、IP地址、以及MAC地址等中的一种或多种。其中,蓝牙设备指的是装设有蓝牙模块的Linux嵌入式设备。在设备列表中,用户可以选择其中一个进行连接;控制设备基于用户的选择而生成的连接指令,依据连接指令生成多个指令,包括但不限于蓝牙配对指令、虚拟连接链路建立指令、以及基于虚拟连接链路的数据通过传输指令;各指令构成一个蓝牙指令集。
在一个实施例中,如图2所示,提供了一种基于蓝牙的远程控制方法,以该方法应用于图1中的目标设备120为例进行说明,包括以下步骤:
步骤S202,接收控制设备发送的蓝牙指令集,蓝牙指令集是通过控制设备接收用户触发的连接指令生成的。
具体地,目标设备接收控制设备发送的蓝牙指令集,并依据蓝牙配对指令完成与控制设备之间的蓝牙配对。
步骤S204,创建内部进程对,内部进程对包括并列执行的父进程和子进程。
具体地,在完成蓝牙配对后,目标设备创建子进程,该子进程与父进程并列,进程共享,该父进程和子进程构成目标设备的内部进程对。在一些实施例中,方法被集成在一段代码中,代码执行的一开始即产生一个进程,该进程即为父进程。
在一些实施例中,目标设备创建内部进程对,包括:基于Linux标准系统,通过当前进程利用进程函数和进程标识,创建子进程;将当前进程作为父进程,父进程与子进程构成内部进程对。
具体地,目标设备利用fork()函数通过系统调用创建子进程,并给该子进程分配资源(例如存储数据和代码的空间),并将父进程上所有的数据复制到子进程中,由此完成对子进程的创建。同时,为了区分父进程和子进程,利用PID(Process Identification,进程识别符)为各进程分别创建进程标识。
在一些实施例中,目标设备还创建套接字对,套接字对包括第一套接字和第二套接字,第一套接字与第二套接字的进程共享。具体地,目标设备利用socketpair()函数创建一对互相连接的套接字,即第一套接字socket0和第二套接字socket1,两个套接字分别位于父进程和子进程,并可以进行进程间通信(IPC)。该套接字可以用于全双工通信,每一个套接字均可以被读写。
通过socketpair()函数创建第一套接字和第二套接字,使得进程之间的通信非常方便,极大地简化了代码结构。同时,通过利用目标设备创建父进程和子进程。由父进程接收控制指令并由子进程执行,再由父进程返回命令执行结果,能够无需在目标设备上安装庞大的例如SSH、Telnet等登录组件,使得控制设备对Linux嵌入式设备的无线远程控制更为简单方便。
步骤S206,基于虚拟串口协议,利用父进程根据蓝牙指令集建立与控制设备之间的虚拟连接链路。
其中,虚拟串口协议指的是蓝牙串口协议(Serial Port Profile,SPP)。蓝牙SPP基于蓝牙RFCOMM协议而实现,其定义了在两个蓝牙设备之间创建串口进行数据传输的一种设备。蓝牙串口的目的是在两个不同设备(通信的两端)之间保证一条完整的通信路径,该通信路径即为虚拟连接链路(以下简称SPP链路)。
具体地,目标设备依据蓝牙配对指令与控制设备完成蓝牙配对后,利用父进程依据虚拟连接链路建立指令,建立与控制设备之间的消息通道,即虚拟连接链路。
步骤S208,利用父进程通过虚拟连接链路接收控制设备发送的控制指令,并利用进程间通信将控制指令转发至子进程。
其中,控制指令包括调试指令,用于对Linux嵌入式设备进行无线调试;相应地,命令执行结果包括Linux嵌入式设备的日志信息、配置信息、以及异常信息中的至少一种。例如,控制设备可以通过向目标设备发送各种shell命令,通过目标设备执行shell命令并向控制设备返回shell命令的执行结果,从而实现在控制设备上查看目标设备的相应的状态。示例性地,控制指令可以为例如logcat、dmesg等shell命令,控制设备通过发送这些shell命令获取目标设备的系统日志、Linux kernel日志信息等,有利于技术人员实时查看目标设备的各种系统信息。又如,控制指令可以为安装指令等;在Linux系统运行期间,如Wi-Fi/BT等模块需要用到firmware、NV ram、HCD等相关配置文件或程序,则控制设备可以通过发送安装指令,向目标设备导入不同的配置文件,从而改变目标设备的配置,有利于排查问题。例如,可以定义数据(flag标志位+文件内容+文件内容字节长度+文件存放路径信息),将各种更新的配置文件(例如MAC地址配置文件、BT snoop配置文件、firmware程序等)通过虚拟连接链路发送到目标设备并执行,从而进行调试或测试。
具体地,目标设备利用父进程实时监听虚拟连接链路上的传输数据;当通过虚拟连接链路接收到控制设备发送的控制指令时,将控制指令写入套接字,并等待子进程读取,从而实现将控制指令转发至子进程。
在一些实施例中,当父进程接收到控制设备发送的控制指令时,利用父进程关闭第一套接字,并将控制指令写入第二套接字。
具体地,由于套接字分别位于不同的进程,当父进程将控制指令写入第二套接字socket1时,须关闭第一套接字socket0。由于第一套接字与第二套接字进程共享,即,父子进程间遵循读时共享写时复制的原则,当父进程将控制指令写入第二套接字socket1时,子进程可以从第一套接字socket0中进行读取。示例性地,父进程完成蓝牙SPP链路的建立,并实时监听SPP链路上的传输数据。当目标设备接收到控制设备所发送过来的shell命令(即控制指令)时,利用父进程将shell命令写入第二套接字socket1,并等待子进程读取第一套接字socket0。
步骤S210,利用子进程获取控制指令,并依据控制指令进行相应的命令执行,得到命令执行结果。
具体地,目标设备利用子进程获取控制指令并进行相应的命令执行,得到相应的命令执行结果。其中,命令执行结果包括标准输出结果和标准错误结果中的至少一种。
在一些实施例中,目标设备利用子进程获取控制指令,并依据控制指令进行相应的命令执行,得到命令执行结果,包括:利用子进程关闭第二套接字,并从第一套接字中读取控制指令;基于控制指令,通过子进程进行相应的命令执行,并得到命令执行结果。
具体地,目标设备利用子进程从第一套接字socket0中读取控制指令,并执行该控制指令,从而获得命令执行结果。由于第一套接字和第二套接字是进程共享的,读操作时要关闭写操作对应的套接字,写操作时要关闭读操作对应的套接字,因此,此时目标设备利用子进程关闭第二套接字。
示例性地,子进程读取第一套接字socket0中的shell命令并执行,当正确执行并获得相应的结果时,子进程获得标准输出结果(stdout);当执行发生错误时,子进程获得标准错误结果。例如,当控制指令为查看系统日志时,子进程读取第一套接字socket0中的shell命令,并进行执行,从而获得相应的系统日志信息,此时,该系统日志信息为标准输出结果;子进程将系统日志信息写入第一套接字socket0。当该查看系统日志的指令有误时,子进程执行发生错误,此时获得“指令有误”或者“查询错误”的标准错误结果(stderr),并将该标准错误结果写入第一套接字socket0。
步骤S212,利用子进程将命令执行结果返回至父进程,并由父进程将命令执行结果通过虚拟连接链路发送至控制设备。
具体地,目标设备通过进程间通信,利用子进程将命令执行结果返回至父进程,并由父进程将命令执行结果通过SPP链路返回至控制设备。
在一些实施例中,目标设备利用子进程将命令执行结果返回至父进程,并由父进程将命令执行结果通过虚拟连接链路发送至控制设备,包括:利用子进程将命令执行结果写入第一套接字,并由父进程读取第二套接字中的命令执行结果;利用父进程将命令执行结果通过虚拟连接链路发送至控制设备,以供控制设备接收命令执行结果后进行回显展示。
具体地,目标设备利用子进程将命令执行结果写入第一套接字socket0。由于第一套接字和第二套接字的进程共享,因此,当子进程对第一套接字socket0执行写操作时,父进程可以从第二套接字socket1中进行读取。当父进程从第二套接字socket1中读取到命令执行结果后,通过SPP链路将命令执行结果发送至控制设备;控制设备接收到命令执行结果后,利用显示屏等进行回显展示。由此,控制设备基于蓝牙SPP完成对目标设备的远程控制。
通过利用目标设备创建父进程和子进程。由父进程接收控制指令并由子进程执行,再由父进程返回命令执行结果,能够无需在目标设备上安装庞大的例如SSH、Telnet等登录组件,使得控制设备对Linux嵌入式设备的无线远程控制更为简单方便。
在一个具体的实施例中,如图3所示,设备A为Linux嵌入式设备(即目标设备),设备B为控制设备。在完成SPP链路的建立后,目标设备进行初始化的工作,申请供父进程和子进程使用的内存空间,创建父子进程并创建父进程和子进程之间的IPC(进程间通信)。例如,使用Linux标准系统调用fork()创建父子进程:st->pid=fork();并利用PID值区分进程。其中,父进程操作第二套接字socket1,关闭第一套接字socket0。子进程操作第一套接字socket0,关闭第二套接字socket1。父进程向第二套接字socket1中写入数据时,子进程可以从第一套接字socket0中读取出该数据,反之,子进程向第一套接字socket0中写入数据时,父进程可从第二套接字socket1中读出数据。
目标设备A与控制设备B建立SPP链路后,目标设备A通过父进程持续监听SPP链路上的传输数据。通常,蓝牙协议栈会提供类似SPP接收数据回调的API接口,例如:spp_recv_data_callback_register(st->handle,st)。当父进程接收到控制设备B通过SPP链路向目标设备A发送的shell命令后,父进程在SPP数据接收回调中,将接受到的数据(即shell命令)写入第二套接字socket1中,并注册SPP的数据接收函数recv。即,目标设备A调用t->handle(st->handle=spp_recv_data_callback),在spp_recv_data_callback()中,将数据写入到第二套接字socket1中。然后,子进程利用recv函数接收并读取socket0的数据并执行shell命令。当shell命令执行完成后,子进程利用dup2函数将stdout和stderr重定向至socket0。例如,利用如下语句:“if(dup2(st->sk_fd[0],stdout)==-1)perror("dup2");if(dup2(st->sk_fd[0],stderr)==-1)perror("dup2");”完成对stdout和stderr的重定向。当子进程将shell命令的命令执行结果写入第一套接字socket0时,父进程可利用recv函数读取第二套接字socket1中的命令执行结果,并将命令执行结果返回至控制设备B,控制设备B接收命令返回消息。
上述基于蓝牙的远程控制方法中,通过接收控制设备发送的蓝牙指令集,并利用蓝牙的虚拟串口协议建立Linux嵌入式设备与控制设备之间的虚拟连接链路,从而获取来自控制设备的控制指令;通过创建父进程和子进程,由父进程对虚拟连接链路进行实时监听,并将监听获取的控制指令利用进程间通信转发给子进程,由子进程执行控制指令并得到命令执行结果,再将命令执行结果返回至父进程,由父进程返回至控制设备,从而在Linux嵌入式设备无法利用有线的方式进行调试控制时,实现对Linux嵌入式设备的无线调试和远程控制,大大简化了调试步骤,使得技术人员能够更加方便地对Linux嵌入式设备进行远程无线调试控制。
应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种基于蓝牙的远程控制装置400,包括:接收模块420和处理模块440,其中:
接收模块420,用于接收控制设备发送的蓝牙指令集,蓝牙指令集是通过控制设备接收用户触发的连接指令生成的;
处理模块440,用于创建内部进程对,内部进程对包括并列执行的父进程和子进程;
处理模块440,还用于基于虚拟串口协议,利用父进程根据蓝牙指令集建立与控制设备之间的虚拟连接链路;
处理模块440,还用于利用父进程通过虚拟连接链路接收控制设备发送的控制指令,并利用进程间通信将控制指令转发至子进程;
处理模块440,还用于利用子进程获取控制指令,并依据控制指令进行相应的命令执行,得到命令执行结果;
处理模块440,还用于利用子进程将命令执行结果返回至父进程,并由父进程将命令执行结果通过虚拟连接链路发送至控制设备。
在一些实施例中,处理模块还用于基于Linux标准系统,通过当前进程利用进程函数和进程标识,创建子进程;将当前进程作为父进程,父进程与子进程构成内部进程对。
在一些实施例中,方法还包括创建套接字对的步骤;其中,套接字对包括第一套接字和第二套接字,第一套接字与第二套接字的进程共享。处理模块还用于利用父进程通过虚拟连接链路接收控制设备发送的控制指令,包括:利用父进程实时监听虚拟连接链路上的传输数据;当接收到控制设备发送的控制指令时,利用父进程关闭第一套接字,并将控制指令写入第二套接字。
在一些实施例中,处理模块还用于利用子进程关闭第二套接字,并从第一套接字中读取控制指令;基于控制指令,通过子进程进行相应的命令执行,并得到命令执行结果。
在一些实施例中,处理模块还用于利用子进程将命令执行结果写入第一套接字,并由父进程读取第二套接字中的命令执行结果;利用父进程将命令执行结果通过虚拟连接链路发送至控制设备,以供控制设备接收命令执行结果后进行回显展示。
在一些实施例中,控制设备用于扫描周围的Linux嵌入式设备,生成设备列表;获取基于用户在蓝牙设备列表中选择而生成的连接指令,并依据连接指令生成蓝牙指令集;其中,蓝牙指令集中包括蓝牙配对指令、虚拟连接链路建立指令、以及基于虚拟连接链路的数据传输指令。
在一些实施例中,控制指令包括调试指令,用于对Linux嵌入式设备进行无线调试;相应地,命令执行结果包括Linux嵌入式设备的日志信息、配置信息、以及异常信息中的至少一种。
关于基于蓝牙的远程控制装置的具体限定可以参见上文中对于基于蓝牙的远程控制方法的限定,在此不再赘述。上述基于蓝牙的远程控制装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是前述实施例中的目标设备,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器和蓝牙串口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的蓝牙串口用于与外部的控制设备进行无线蓝牙通信。该计算机程序被处理器执行时以实现一种基于蓝牙的远程控制方法。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,该计算机设备具体可以是上述实施例中提及的目标设备,该计算机设备包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:接收控制设备发送的蓝牙指令集,蓝牙指令集是通过控制设备接收用户触发的连接指令生成的;创建内部进程对,内部进程对包括并列执行的父进程和子进程;基于虚拟串口协议,利用父进程根据蓝牙指令集建立与控制设备之间的虚拟连接链路;利用父进程通过虚拟连接链路接收控制设备发送的控制指令,并利用进程间通信将控制指令转发至子进程;利用子进程获取控制指令,并依据控制指令进行相应的命令执行,得到命令执行结果;利用子进程将命令执行结果返回至父进程,并由父进程将命令执行结果通过虚拟连接链路发送至控制设备。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:基于Linux标准系统,通过当前进程利用进程函数和进程标识,创建子进程;将当前进程作为父进程,父进程与子进程构成内部进程对。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:利用父进程实时监听虚拟连接链路上的传输数据;当接收到控制设备发送的控制指令时,利用父进程关闭第一套接字,并将控制指令写入第二套接字。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:利用子进程关闭第二套接字,并从第一套接字中读取控制指令;基于控制指令,通过子进程进行相应的命令执行,并得到命令执行结果。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:利用子进程将命令执行结果写入第一套接字,并由父进程读取第二套接字中的命令执行结果;利用父进程将命令执行结果通过虚拟连接链路发送至控制设备,以供控制设备接收命令执行结果后进行回显展示。
上述计算机设备,通过接收控制设备发送的蓝牙指令集,并利用蓝牙的虚拟串口协议建立Linux嵌入式设备与控制设备之间的虚拟连接链路,从而获取来自控制设备的控制指令;通过创建父进程和子进程,由父进程对虚拟连接链路进行实时监听,并将监听获取的控制指令利用进程间通信转发给子进程,由子进程执行控制指令并得到命令执行结果,再将命令执行结果返回至父进程,由父进程返回至控制设备,从而在Linux嵌入式设备无法利用有线的方式进行调试控制时,实现对Linux嵌入式设备的无线调试和远程控制,大大简化了调试步骤,使得技术人员能够更加方便地对Linux嵌入式设备进行远程无线调试控制。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:接收控制设备发送的蓝牙指令集,蓝牙指令集是通过控制设备接收用户触发的连接指令生成的;创建内部进程对,内部进程对包括并列执行的父进程和子进程;基于虚拟串口协议,利用父进程根据蓝牙指令集建立与控制设备之间的虚拟连接链路;利用父进程通过虚拟连接链路接收控制设备发送的控制指令,并利用进程间通信将控制指令转发至子进程;利用子进程获取控制指令,并依据控制指令进行相应的命令执行,得到命令执行结果;利用子进程将命令执行结果返回至父进程,并由父进程将命令执行结果通过虚拟连接链路发送至控制设备。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:基于Linux标准系统,通过当前进程利用进程函数和进程标识,创建子进程;将当前进程作为父进程,父进程与子进程构成内部进程对。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:利用父进程实时监听虚拟连接链路上的传输数据;当接收到控制设备发送的控制指令时,利用父进程关闭第一套接字,并将控制指令写入第二套接字。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:利用子进程关闭第二套接字,并从第一套接字中读取控制指令;基于控制指令,通过子进程进行相应的命令执行,并得到命令执行结果。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:利用子进程将命令执行结果写入第一套接字,并由父进程读取第二套接字中的命令执行结果;利用父进程将命令执行结果通过虚拟连接链路发送至控制设备,以供控制设备接收命令执行结果后进行回显展示。
上述存储介质,通过接收控制设备发送的蓝牙指令集,并利用蓝牙的虚拟串口协议建立Linux嵌入式设备与控制设备之间的虚拟连接链路,从而获取来自控制设备的控制指令;通过创建父进程和子进程,由父进程对虚拟连接链路进行实时监听,并将监听获取的控制指令利用进程间通信转发给子进程,由子进程执行控制指令并得到命令执行结果,再将命令执行结果返回至父进程,由父进程返回至控制设备,从而在Linux嵌入式设备无法利用有线的方式进行调试控制时,实现对Linux嵌入式设备的无线调试和远程控制,大大简化了调试步骤,使得技术人员能够更加方便地对Linux嵌入式设备进行远程无线调试控制。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种基于蓝牙的远程控制方法,其特征在于,应用于Linux嵌入式设备,所述Linux嵌入式设备由嵌入式处理器、相关支撑硬件和嵌入式软件系统组成,所述相关支撑硬件包括显示卡、存储介质以及蓝牙模块,不包括用于进行有线连接的UART和USB接口;所述方法包括:
接收控制设备发送的蓝牙指令集,并基于所述蓝牙指令集中的蓝牙配对指令,完成与控制设备之间的蓝牙配对;所述蓝牙指令集是通过控制设备接收用户触发的连接指令生成的;
基于Linux标准系统,通过当前进程利用进程函数和进程标识创建子进程,并将当前进程作为父进程,父进程与子进程构成内部进程对,且所述父进程与子进程通过进程标识符区分;分别创建位于子进程的第一套接字和位于父进程的第二套接字,其中,所述第一套接字与第二套接字的进程共享,第一套接字用于供子进程读取数据,第二套接字用于供父进程写入数据;
基于虚拟串口协议,利用父进程根据所述蓝牙指令集建立与所述控制设备之间的基于蓝牙协议的虚拟连接链路;
利用所述父进程对所述虚拟连接链路上的传输数据进行持续监听,当接收到所述控制设备发送的控制指令时,在虚拟连接链路的数据接收回调中将所述控制指令写入所述第二套接字,并注册虚拟连接链路的数据接收函数;
利用所述子进程调用所述数据接收函数,以从与所述第二套接字进程共享的所述第一套接字中读取所述控制指令,并依据所述控制指令进行相应的命令执行,得到命令执行结果;
利用所述子进程将命令执行结果重定向至第一套接字;
利用所述父进程调用所述数据接收函数读取第二套接字中的命令执行结果,并由所述父进程将所述命令执行结果通过所述虚拟连接链路发送至所述控制设备,以供所述控制设备接收命令执行结果后进行回显展示。
2.根据权利要求1所述的方法,其特征在于,所述利用所述子进程调用所述数据接收函数,以从与所述第二套接字进程共享的所述第一套接字中读取所述控制指令,并依据所述控制指令进行相应的命令执行,得到命令执行结果,包括:
利用所述子进程关闭所述第二套接字,并调用所述数据接收函数,以从与所述第二套接字进程共享的所述第一套接字中读取所述控制指令;
基于所述控制指令,通过所述子进程进行相应的命令执行,并得到命令执行结果。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过控制设备扫描周围的Linux嵌入式设备,生成设备列表;
通过控制设备获取基于用户在蓝牙设备列表中选择而生成的连接指令,并依据所述连接指令生成蓝牙指令集;其中,所述蓝牙指令集中包括蓝牙配对指令、虚拟连接链路建立指令、以及基于虚拟连接链路的数据传输指令。
4.根据权利要求1至3中任意一项所述的方法,其特征在于,所述控制指令包括调试指令,用于对所述Linux嵌入式设备进行无线调试;相应地,所述命令执行结果包括所述Linux嵌入式设备的日志信息、配置信息、以及异常信息中的至少一种。
5.一种基于蓝牙的远程控制装置,其特征在于,所述装置部署于Linux嵌入式设备,所述Linux嵌入式设备由嵌入式处理器、相关支撑硬件和嵌入式软件系统组成,所述相关支撑硬件包括显示卡、存储介质以及蓝牙模块,不包括用于进行有线连接的UART和USB接口;所述装置包括:
接收模块,用于接收控制设备发送的蓝牙指令集,并基于所述蓝牙指令集中的蓝牙配对指令,完成与控制设备之间的蓝牙配对;所述蓝牙指令集是通过控制设备接收用户触发的连接指令生成的;
处理模块,用于基于Linux标准系统,通过当前进程利用进程函数和进程标识创建子进程,并将当前进程作为父进程,父进程与子进程构成内部进程对,且所述父进程与子进程通过进程标识符区分;分别创建位于子进程的第一套接字和位于父进程的第二套接字,其中,所述第一套接字与第二套接字的进程共享,第一套接字用于供子进程读取数据,第二套接字用于供父进程写入数据;
所述处理模块,还用于基于虚拟串口协议,利用父进程根据所述蓝牙指令集建立与所述控制设备之间的基于蓝牙协议的虚拟连接链路;
所述处理模块,还用于利用所述父进程对所述虚拟连接链路上的传输数据进行持续监听,当接收到所述控制设备发送的控制指令时,在虚拟连接链路的数据接收回调中将所述控制指令写入所述第二套接字,并注册虚拟连接链路的数据接收函数;
所述处理模块,还用于利用所述子进程调用所述数据接收函数,以从与所述第二套接字进程共享的所述第一套接字中读取所述控制指令,并依据所述控制指令进行相应的命令执行,得到命令执行结果;
所述处理模块,还用于利用所述子进程将命令执行结果重定向至第一套接字,利用所述父进程调用所述数据接收函数读取第二套接字中的命令执行结果,并由所述父进程将所述命令执行结果通过所述虚拟连接链路发送至所述控制设备,以供所述控制设备接收命令执行结果后进行回显展示。
6.根据权利要求5所述的装置,其特征在于,所述处理模块还用于利用所述子进程关闭所述第二套接字,并调用所述数据接收函数,以从与所述第二套接字进程共享的所述第一套接字中读取所述控制指令;基于所述控制指令,通过所述子进程进行相应的命令执行,并得到命令执行结果。
7.根据权利要求5所述的装置,其特征在于,所述控制设备用于扫描周围的Linux嵌入式设备,生成设备列表;获取基于用户在蓝牙设备列表中选择而生成的连接指令,并依据所述连接指令生成蓝牙指令集;其中,所述蓝牙指令集中包括蓝牙配对指令、虚拟连接链路建立指令、以及基于虚拟连接链路的数据传输指令。
8.根据权利要求5至7中任一项所述的装置,其特征在于,所述控制指令包括调试指令,用于对所述Linux嵌入式设备进行无线调试;相应地,所述命令执行结果包括所述Linux嵌入式设备的日志信息、配置信息、以及异常信息中的至少一种。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的方法的步骤。
CN202110620125.4A 2021-06-03 2021-06-03 基于蓝牙的远程控制方法、装置、计算机设备和存储介质 Active CN113391931B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110620125.4A CN113391931B (zh) 2021-06-03 2021-06-03 基于蓝牙的远程控制方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110620125.4A CN113391931B (zh) 2021-06-03 2021-06-03 基于蓝牙的远程控制方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN113391931A CN113391931A (zh) 2021-09-14
CN113391931B true CN113391931B (zh) 2023-04-07

Family

ID=77619932

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110620125.4A Active CN113391931B (zh) 2021-06-03 2021-06-03 基于蓝牙的远程控制方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN113391931B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114194205B (zh) * 2021-12-03 2024-01-09 广州小鹏汽车科技有限公司 一种基于蓝牙进程的车辆控制方法、车辆及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002023344A2 (en) * 2000-09-15 2002-03-21 Wind River Systems, Inc. System and method for communicating software debug, diagnostic and maintenance information between devices
US7318172B2 (en) * 2004-08-31 2008-01-08 Broadcom Corporation Wireless remote firmware debugging for embedded wireless device
CN107613483A (zh) * 2017-09-25 2018-01-19 福州汇思博信息技术有限公司 进程间基于虚拟蓝牙设备通信的方法及智能设备
CN108319480A (zh) * 2018-02-01 2018-07-24 微鲸科技有限公司 蓝牙服务启动方法、装置及电子设备
CN111343623A (zh) * 2020-03-06 2020-06-26 深圳市新威尔电子有限公司 基于蓝牙无线通讯的嵌入式芯片串口加载系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
何小平等.基于Unix域Socket的父子进程间心跳机制的实现.福建电脑.2007,(第7期),第96-97页. *

Also Published As

Publication number Publication date
CN113391931A (zh) 2021-09-14

Similar Documents

Publication Publication Date Title
US20180285053A1 (en) Screenshot method and apparatus
WO2023284699A1 (zh) 基于Linux系统的协议栈数据传输方法、计算机设备和存储介质
CN104298591B (zh) 一种WebApp远程调试方法及系统
CN112565443A (zh) 物联网数据解析方法、装置、设备及存储介质
WO2019057089A1 (zh) 网卡镜像抓包方法、终端以及可读存储介质
CN108491278B (zh) 一种处理业务数据的方法和网络设备
CN109683997B (zh) 通过沙箱访问应用程序接口的方法、沙箱及沙箱设备
US11770458B1 (en) Systems for exchanging data using intermediate devices
US10499311B2 (en) Method and apparatus for implementing network sharing
CN108280020B (zh) 计算机设备的监控方法、装置、终端及计算机存储介质
CN107404418B (zh) 互联网产品测试方法、装置、设备及存储介质
WO2022032990A1 (zh) 一种命令信息传输方法、系统、装置及可读存储介质
CN112162873B (zh) 一种远程调用方法、电子装置和存储介质
JP6195465B2 (ja) 同期サーバ側スクリプティングを用いた遠隔カードコンテンツ管理
CN113391931B (zh) 基于蓝牙的远程控制方法、装置、计算机设备和存储介质
US10261937B2 (en) Method and system for communication of device information
CN112506676B (zh) 进程间的数据传输方法、计算机设备和存储介质
CN104570967B (zh) 基于Android系统的远程控制方法及系统
US20160328200A1 (en) Testing screens of a multi-screen device
CN106302011B (zh) 基于多端的测试方法及终端
CN109510740A (zh) 一种自动监控网卡mtu值的方法、装置、终端及存储介质
US11416383B1 (en) Systems for remote communication with test devices
CN112671814B (zh) 一种跨平台的设备开发方法、装置及系统
CN111147400B (zh) 一种命令行配置同步的方法、装置及电子设备
US20110270970A1 (en) Network device testing system and method

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant