首页> 中国专利> 一种基于Linux或Unix内核操作系统的串口映射方法及装置

一种基于Linux或Unix内核操作系统的串口映射方法及装置

摘要

本发明公开了一种基于Linux或Unix内核操作系统的串口映射方法,包括如下步骤:从基本输入输出系统(BIOS)获取第一串口列表;其中,所述第一串口列表存储了面板的至少一个物理串口的串口信息;从操作系统获取第二串口列表;其中,所述第二串口列表存储了所述操作系统的至少一个逻辑串口的串口信息;根据所述串口信息对所述第一串口列表的物理串口和第二串口列表中的逻辑串口进行匹配,生成所述第一串口列表与所述第二串口列表的串口映射文件。本发明还提供一种基于Linux或Unix内核操作系统的串口映射装置,可在不需要人为干涉的情况下自动生成描述物理串口与逻辑串口映射关系的串口映射文件,提高了识别匹配的效率和准确率。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-01-01

    授权

    授权

  • 2016-11-09

    实质审查的生效 IPC(主分类):G06F13/10 申请日:20160509

    实质审查的生效

  • 2016-10-12

    公开

    公开

说明书

技术领域

本发明涉及串口识别领域,尤其涉及一种基于Linux或Unix内核操作系统的串口映射方法及装置。

背景技术

Linux系统是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统,它能运行主要的UNIX工具软件、应用程序和网络协议,继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。在Linux系统下接入外部设备时,需要通过串口进行通信,然而Linux系统下的逻辑串口的顺序可能与面板的物理串口的顺序可能不一致,导致无法正常通信。

现有的解决方案主要是利用人工进行匹配。例如,一种方法是将硬件设备固定接入到面板上的某个物理串口,然后在应用软件中根据硬件设备特有的通信指令特性穷举每个串口进行识别;另一种方法是在应用软件固定打开某个串口的端口链接,通过人为方式切换每个物理串口,从而找到对应的物理串口。但人工匹配的方法由于需要人为的参与,容易导致效率低下、错误率高的问题,且由于需要固定的硬件设备和特定的识别辅助软件的支持,也会额外增加成本。

发明内容

针对上述问题,本发明的目的在于提供一种串口映射方法、装置及终端,可实现物理串口与逻辑串口的自动映射。

本发明提供了一种串口映射方法,包括如下步骤:

从基本输入输出系统(BIOS)获取第一串口列表;其中,所述第一串口列表存储了面板的至少一个物理串口的串口信息;

从基于Linux或Unix内核的操作系统获取第二串口列表;其中,所述第二 串口列表存储了所述操作系统的至少一个逻辑串口的串口信息;

根据所述串口信息对所述第一串口列表的物理串口和第二串口列表中的逻辑串口进行匹配,生成所述第一串口列表与所述第二串口列表的串口映射文件,以使所述操作系统在检测到外部设备接入时,根据所述串口映射文件及所述外部设备当前接入的物理串口获取映射的逻辑串口,并根据与所述逻辑串口对应的程序与所述外部设备进行通信。

优选地,所述从基本输入输出系统获取第一串口列表具体为:通过在用户层调用中断指令,从基本输入输出系统获取第一串口列表;所述串口信息包括收发器类型、中断号及端口地址。

优选地,所述根据所述串口信息对所述第一串口列表的物理串口和第二串口列表中的逻辑串口进行匹配,生成所述第一串口列表与所述第二串口列表的串口映射文件,具体包括:

获取为所述第一串口列表配置的第一指针当前指向的物理串口的串口信息;

获取为所述第二串口列表配置的第二指针当前指向的逻辑串口的串口信息;

根据所述第一指针当前指向的物理串口的串口信息及所述第二指针当前指向的逻辑串口的串口信息,判断所述物理串口与所述逻辑串口是否匹配;

若不匹配,则在确定所述第二指针当前指向的逻辑串口不位于所述第二串口列表的列表末尾时,控制所述第二指针移动到位于当前指向的所述逻辑串口之后的下一个逻辑串口;

若匹配,则记录所述物理串口与所述逻辑串口的映射关系,并判断所述第一指针当前指向的物理串口是否位于所述第一串口列表的列表末尾;

若否,则控制所述第一指针移动到位于当前指向的所述物理串口之后的下一个物理串口,并在所述第二串口列表中删除所述第二指针当前指向的逻辑串口后,控制所述第二指针指向所述第二串口列表内的第一个逻辑串口;

若是,则根据所有已记录的映射关系,生成所述第一串口列表与所述第二串口列表的串口映射文件。

优选地,所述根据所述第一指针当前指向的物理串口的串口信息及所述第 二指针当前指向的逻辑串口的串口信息,判断所述物理串口与所述逻辑串口是否匹配,具体包括:

根据哈希算法及所述第一指针当前指向的物理串口的串口信息生成第一哈希值;

根据哈希算法及所述第二指针当前指向的逻辑串口的串口信息生成第二哈希值;

根据所述第一哈希值及所述第二哈希值判断所述物理串口与所述逻辑串口是否匹配。

优选地,还包括:

在确定所述第二指针当前指向的逻辑串口位于所述第二串口列表的列表末尾时,控制所述第一指针移动到位于当前指向的所述物理串口之后的下一个物理串口,并控制所述第二指针指向所述第二串口列表内的第一个逻辑串口。

本发明还提供一种基于Linux或Unix内核操作系统的串口映射装置,包括:

第一列表获取单元,用于从基本输入输出系统获取第一串口列表;其中,所述第一串口列表存储了面板的至少一个物理串口的串口信息;

第二列表获取单元,用于从基于Linux或Unix内核的操作系统获取第二串口列表;其中,所述第二串口列表存储了所述操作系统的至少一个逻辑串口的串口信息;

匹配单元,用于根据所述串口信息对所述第一串口列表的物理串口和第二串口列表中的逻辑串口进行匹配,生成所述第一串口列表与所述第二串口列表的串口映射文件,以使所述操作系统在检测到外部设备接入时,根据所述串口映射文件及所述外部设备当前接入的物理串口获取映射的逻辑串口,并根据与所述逻辑串口对应的程序与所述外部设备进行通信。

优选地,所述第一列表获取单元具体用于,通过在用户层调用中断指令,从基本输入输出系统获取第一串口列表;所述串口信息包括收发器类型、中断号及端口地址。

优选地,所述匹配单元具体包括第一指针模块、第二指针模块、串口匹配 模块,指针处理模块、映射关系记录模块及映射文件生成模块,其中:

所述第一指针模块,用于获取为所述第一串口列表配置的第一指针当前指向的物理串口的串口信息;

所述第二指针模块,用于获取为所述第二串口列表配置的第二指针当前指向的逻辑串口的串口信息;

所述串口匹配模块,用于根据所述第一指针当前指向的物理串口的串口信息及所述第二指针当前指向的逻辑串口的串口信息,判断所述物理串口与所述逻辑串口是否匹配;若不匹配,则通知所述指针处理模块,若匹配,则通知所述映射关系记录模块;

所述指针处理模块,用于在确定所述第二指针当前指向的逻辑串口不位于所述第二串口列表的列表末尾时,控制所述第二指针移动到位于当前指向的所述逻辑串口之后的下一个逻辑串口;

所述映射关系记录模块,用于记录所述物理串口与所述逻辑串口的映射关系,并判断所述第一指针当前指向的物理串口是否位于所述第一串口列表的列表末尾;若否,则通知所述指针处理模块,若是,则通知所述映射文件生成模块;

所述指针处理模块,还用于控制所述第一指针移动到位于当前指向的所述物理串口之后的下一个物理串口,并在所述第二串口列表中删除所述第二指针当前指向的逻辑串口后,控制所述第二指针指向所述第二串口列表内的第一个逻辑串口;

所述映射文件生成模块,用于根据所述映射关系记录模块记录的映射关系,生成所述第一串口列表与所述第二串口列表的串口映射文件。

优选地,所述串口匹配模块具体包括:

第一哈希值计算子模块,用于根据哈希算法及所述第一指针当前指向的物理串口的串口信息生成第一哈希值;

第二哈希值计算子模块,用于根据哈希算法及所述第二指针当前指向的逻辑串口的串口信息生成第二哈希值;

哈希值匹配子模块,用于根据所述第一哈希值及第二哈希值判断所述物理串口与所述逻辑串口是否匹配。

优选地,所述指针处理模块,还用于在确定所述第二指针当前指向的逻辑串口位于所述第二串口列表的列表末尾时,控制所述第一指针移动到位于当前指向的所述物理串口之后的下一个物理串口,并控制所述第二指针指向所述第二串口列表内的第一个逻辑串口。

本发明提供的基于Linux或Unix内核操作系统的串口映射方法及装置,通过对从基本输入输出系统获取的第一串口列表内的物理串口和从操作系统下获取的第二串联列表内的逻辑串口进行自动匹配,从而在不需要人为干涉的情况下自动生成描述物理串口与逻辑串口映射关系的串口映射文件,提高了识别匹配的效率和准确率。此外,由于不需要专门的外部设备和辅助软件,还同时减低了成本。

附图说明

为了更清楚地说明本发明的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的基于Linux或Unix内核操作系统的串口映射方法的流程示意图。

图2是本发明实施例提供的第一串口列表的数据结构图。

图3是本发明实施例提供的第二串口列表的数据结构图。

图4是本发明实施例提供的生成串口映射文件的流程示意图。

图5是本发明实施例提供的基于Linux或Unix内核操作系统的串口映射装置的结构示意图。

图6是图5所示的第一列表单元获取第一串口列表的示意图。

图7是图5所示的匹配单元的结构示意图。

图8是图7所示的串口匹配模块的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供了一种基于Linux或Unix内核操作系统的串口映射方法及装置,用于自动生成物理串口与逻辑串口的映射关系,实现串口的自动识别和匹配,以下分别进行详细描述。

请参阅图1,图1是本发明实施例提供的基于Linux或Unix内核操作系统的串口映射方法的流程示意图。所述串口映射方法可由基于Linux或Unix内核操作系统的串口映射装置(以下称为串口映射装置)来执行,并至少包括如下步骤:

S101,从基本输入输出系统(BIOS)获取第一串口列表;其中,所述第一串口列表存储了面板的至少一个物理串口的串口信息。

请一并参阅图2,具体的,在本发明实施例中,所述串口映射装置可通过在用户层调用中断指令,并将所述中断指令发送给所述基本输入输出系统(Basic Input Output System,BIOS),所述BIOS在接收到所述中断指令后,向所述串口映射装置返回第一串口列表,其中,所述第一串口列表内按顺序存储了面板的所有物理串口及每个物理串口的串口信息,所述物理串口的串口信息可包括收发器类型、中断号及端口地址。

S102,从基于Linux或Unix内核的操作系统获取第二串口列表;其中,所述第二串口列表存储了所述操作系统的至少一个逻辑串口的串口信息。

请一并参阅图3,具体地,在本发明实施例中,所述串口映射装置在操作系统的用户层输入特定指令读取第二串口列表,其中,所述第二串口列表存储了所述操作系统的所有逻辑串口的串口信息,同样的,所述逻辑串口的串口信息 可包括收发器类型、中断号及端口地址。

在本发明实施例中,所述操作系统可为Linux系统,则一般地,所述特定指令可为/proc/tty/driver/serial。然而应当理解的是,在本发明的其他实施例中,所述操作系统还可为其他操作系统,如UNIX系统等,具体的指令也可根据实际的系统配置进行指定,本发明不做具体限定。

S103,根据所述串口信息对所述第一串口列表的物理串口和第二串口列表中的逻辑串口进行匹配,生成所述第一串口列表与所述第二串口列表的串口映射文件,以使所述操作系统在检测到外部设备接入时,根据所述串口映射文件及所述外部设备当前接入的物理串口获取映射的逻辑串口,并根据与所述逻辑串口对应的程序与所述外部设备进行通信。

在本发明实施例中,所述串口映射装置在获得所述第一串口列表和第二串口列表后,根据所述串口信息对所述第一串口列表的物理串口和第二串口列表中的逻辑串口进行匹配,并根据匹配的结果生成所述第一串口列表与所述第二串口列表的串口映射文件。

请一并参阅图4,具体地,可包括如下步骤:

S1031,获取为所述第一串口列表配置的第一指针当前指向的物理串口的串口信息。

在本发明实施例中,所述串口映射装置可定义一个第一指针,所述第一指针用于指向所述第一串口列表内的物理串口,并可在所述第一串口列表内移动,以指向不同的物理串口,其中,所述第一指针指向一个物理串口时,所述串口映射装置将获取该物理串口的串口信息。

S1032,获取为所述第二串口列表配置的第二指针当前指向的逻辑串口的串口信息。

在本发明实施例中,同样的,所述串口映射装置还可定义一个第二指针,所述第二指针用于指向所述第二串口列表内的逻辑串口,并可在所述第二串口列表内移动,以指向不同的逻辑串口,其中,所述第二指针指向一个逻辑串口时,所述串口映射装置将获取该逻辑串口的串口信息。

S1033,根据所述第一指针当前指向的物理串口的串口信息及所述第二指针当前指向的逻辑串口的串口信息,判断所述物理串口与所述逻辑串口是否匹配。

在一个实施例中,所述串口映射装置可判断第一指针当前指向的物理串口的串口信息及所述第二指针当前指向的逻辑串口的串口信息是否完成一致,例如,依次判断所述物理串口的收发器类型、中断号及端口地址是否与所述逻辑串口的收发器类型、中断号及端口地址一致,若全部一致,则所述物理串口与所述逻辑串口匹配,而只要有一个串口信息不一致,则所述物理串口与所述逻辑串口不匹配。

在另一个实施例中,也可先根据哈希算法和所述串口信息生成一个哈希值,再判断哈希值是否一致来判断所述物理串口与所述逻辑串口是否匹配,由于哈希算法的特性,只有当收发器类型、中断号及端口地址完全一致,得出的哈希值才一致。具体地:

首先,根据哈希算法及所述第一指针当前指向的物理串口的串口信息生成第一哈希值。

然后,根据哈希算法及所述第二指针当前指向的逻辑串口的串口信息生成第二哈希值。

最后,根据所述第一哈希值及所述第二哈希值判断所述物理串口与所述逻辑串口是否匹配。

如此,相比于直接对串口信息进行匹配,简化了匹配的过程,并提高了匹配的可靠性

S1034,若否,则在确定所述第二指针当前指向的逻辑串口不位于所述第二串口列表的列表末尾时,控制所述第二指针移动到位于当前指向的所述逻辑串口之后的下一个逻辑串口。

在本发明实施例中,若所述物理串口与所述逻辑串口不匹配,则所述串口映射装置先确定所述第二指针当前指向的逻辑串口是否位于所述第二串口列表的列表末尾(当所述第二指针向后移动一步后指向NULL时,则代表已经到了所述第二串口列表的列表末尾),如果是,则控制所述第一指针移动到位于当前 指向的所述物理串口之后的下一个物理串口,并控制所述第二指针指向所述第二串口列表内的第一个逻辑串口。若否,则所述串口映射装置控制所述第二指针移动到位于当前指向的所述逻辑串口之后的下一个逻辑串口。

S1035,若是,则记录所述物理串口与所述逻辑串口的映射关系,并判断所述第一指针当前指向的物理串口是否位于所述第一串口列表的列表末尾。

在本发明实施例中,若所述物理串口与所述逻辑串口匹配,则所述串口映射装置记录所述物理串口与所述逻辑串口的映射关系,如记录所述物理串口的序号及所述逻辑串口的路径形成的映射关系,例如,映射关系可记录为:物理串口1映射为/dev/COM1,其表示面板上的序号为1的物理串口与操作系统的/dev/COM1的逻辑串口匹配。

在本发明实施例中,在记录所述映射关系后,所述串口映射装置还判断所述第一指针当前指向的物理串口是否位于所述第一串口列表的列表末尾(当所述第一指针向后移动一步后指向NULL时,则代表已经到了所述第一串口列表的列表末尾)。

S1036,若否,则控制所述第一指针移动到位于当前指向的所述物理串口之后的下一个物理串口,并在所述第二串口列表中删除所述第二指针当前指向的逻辑串口后,控制所述第二指针指向所述第二串口列表内的第一个逻辑串口。

在本发明实施例中,若所述串口映射装置判断所述第一指针当前指向的物理串口不是位于所述第一串口列表的列表末尾,则说明所述第一串口列表内尚有物理串口未经过匹配,此时,所述串口映射装置控制所述第一指针移动到位于当前指向的所述物理串口之后的下一个物理串口,并在所述第二串口列表中删除所述第二指针当前指向的逻辑串口后,控制所述第二指针指向所述第二串口列表内的第一个逻辑串口。

S1037,若是,则根据所有已记录的映射关系,生成所述第一串口列表与所述第二串口列表的串口映射文件。

在本发明实施例中,若所述串口映射装置判断所述第一指针当前指向的物理串口位于所述第一串口列表的列表末尾,则说明所述第一串口列表内的所有 物理串口均经过匹配,此时,所述串口映射装置根据所有已记录的映射关系,生成所述第一串口列表与所述第二串口列表的串口映射文件。所述串口映射文件为所有物理串口与逻辑串口的映射关系的汇总文件,如此,当有外部设备接入面板上的物理串口时,即可根据所述串口映射文件找到对应的逻辑串口,再根据所述逻辑串口找到对应的程序来实现与所述外部设备进行通信。

综上所述,本发明实施例提供的串口映射方法,通过对从BIOS获取的第一串口列表内的物理串口和从操作系统下获取的第二串联列表内的逻辑串口进行自动匹配,从而在不需要人为干涉的情况下自动生成描述物理串口与逻辑串口映射关系的串口映射文件,提高了识别匹配的效率和准确率。此外,由于不需要专门的外部设备和辅助软件,还同时减低了成本。

下面将对上述提及的基于Linux或Unix内核操作系统的串口映射装置进行详细描述。

请参阅图5,图5是本发明实施例提供的基于Linux或Unix内核操作系统的串口映射装置的结构示意图。所述串口映射装置100包括第一列表获取单元10、第二列表获取单元20及匹配单元30,其中:

所述第一列表获取单元10,用于从基本输入输出系统获取第一串口列表;其中,所述第一串口列表存储了面板的至少一个物理串口的串口信息。

如图6所示,在本发明实施例中,所述第一列表获取单元10可通过在用户层调用中断指令,并将所述中断指令发送给所述基本输入输出系统(Basic Input Output System,BIOS),所述BIOS在接收到所述中断指令后,向所述第一列表获取单元10返回第一串口列表。

在本发明实施例中,所述串口信息包括收发器类型、中断号及端口地址。

所述第二列表获取单元20,用于从基于Linux或Unix内核操作系统的操作系统获取第二串口列表;其中,所述第二串口列表存储了所述操作系统的至少一个逻辑串口的串口信息。

所述匹配单元30,用于根据所述串口信息对所述第一串口列表的物理串口 和第二串口列表中的逻辑串口进行匹配,生成所述第一串口列表与所述第二串口列表的串口映射文件,以使所述操作系统在检测到外部设备接入时,根据所述串口映射文件及外部设备当前接入的物理串口获取映射的逻辑串口,并根据与所述逻辑串口对应的程序与所述外部设备进行通信。

请一并参阅图7,具体地,所述匹配单元30具体包括第一指针模块31、第二指针模块32、串口匹配模块33,指针处理模块34、映射关系记录模块35及映射文件生成模块36,其中:

所述第一指针模块31,用于获取为所述第一串口列表配置的第一指针当前指向的物理串口的串口信息。

所述第二指针模块32,用于获取为所述第二串口列表配置的第二指针当前指向的逻辑串口的串口信息。

所述串口匹配模块33,用于根据所述第一指针当前指向的物理串口的串口信息及所述第二指针当前指向的逻辑串口的串口信息,判断所述物理串口与所述逻辑串口是否匹配;若不匹配,则通知所述指针处理模块34,若匹配,则通知所述映射关系记录模块35。

所述指针处理模块34,用于在确定所述第二指针当前指向的逻辑串口不位于所述第二串口列表的列表末尾时,控制所述第二指针移动到位于当前指向的所述逻辑串口之后的下一个逻辑串口。

所述映射关系记录模块35,用于记录所述物理串口与所述逻辑串口的映射关系,并判断所述第一指针当前指向的物理串口是否位于所述第一串口列表的列表末尾;若否,则通知所述指针处理模块34,若是,则通知所述映射文件生成模块36。

所述指针处理模块34,还用于控制所述第一指针移动到位于当前指向的所述物理串口之后的下一个物理串口,并在所述第二串口列表中删除所述第二指针当前指向的逻辑串口后,控制所述第二指针指向所述第二串口列表内的第一个逻辑串口。

所述映射文件生成模块36,用于根据所述映射关系记录模块记录的映射关 系,生成所述第一串口列表与所述第二串口列表的串口映射文件。

请一并参阅图8,优选地,所述串口匹配模块33具体包括:

第一哈希值计算子模块331,用于根据哈希算法及所述第一指针当前指向的物理串口的串口信息生成第一哈希值;

第二哈希值计算子模块332,用于根据哈希算法及所述第二指针当前指向的逻辑串口的串口信息生成第二哈希值;

哈希值匹配子模块333,用于根据所述第一哈希值及第二哈希值判断所述物理串口与所述逻辑串口是否匹配。

本优选实施例中,通过串口信息生成哈希值,再对哈希值进行匹配,简化了匹配的过程,提高了匹配的可靠性。

优选地,所述指针处理模块34,还用于在确定所述第二指针当前指向的逻辑串口位于所述第二串口列表的列表末尾时,控制所述第一指针移动到位于当前指向的所述物理串口之后的下一个物理串口,并控制所述第二指针指向所述第二串口列表内的第一个逻辑串口。

综上所述,本发明实施例提供的串口映射装置100,所述匹配单元30通过对所述第一列表获取单元10从BIOS获取的第一串口列表内的物理串口和所述第二列表获取单元20从操作系统下获取的第二串联列表内的逻辑串口进行自动匹配,从而在不需要人为干涉的情况下自动生成描述物理串口与逻辑串口映射关系的串口映射文件,提高了识别匹配的效率和准确率。此外,由于不需要专门的外部设备和辅助软件,还同时减低了成本。

本发明实施例还提供一种终端,所述终端具有BIOS和操作系统(如Linux系统或UNIX系统),其中,所述终端还包括上述任一实施例所述的串口映射装置100。

本发明实施例提供的终端,所述匹配单元30通过对所述第一列表获取单元10从BIOS获取的第一串口列表内的物理串口和所述第二列表获取单元20从操作系统下获取的第二串联列表内的逻辑串口进行自动匹配,从而在不需要人为干涉的情况下自动生成描述物理串口与逻辑串口映射关系的串口映射文件,提 高了识别匹配的效率和准确率。此外,由于不需要专门的外部设备和辅助软件,还同时减低了成本。

以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可获取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号