应用程序共享同一串口的方法与装置转让专利

申请号 : CN200910214455.2

文献号 : CN101751291B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘明华赵宏蒋中斌

申请人 : 广东威创视讯科技股份有限公司

摘要 :

本发明公开了一种应用程序共享同一串口的方法与装置,采用多线程通讯的方式接收应用程序的指令,将访问同一串口的指令进行排队处理并将串口的回码发送给应用程序,从而使应用程序共享同一串口得以实现。

权利要求 :

1.一种应用程序共享同一串口的方法,其特征在于,包括以下步骤:(1).通过多线程通讯的方式接收应用程序的指令;

(2).解析指令,将访问同一串口的指令进行排队处理,按照接收的顺序通过串口发送出去;

(3).监听并发送串口的响应码,

步骤(2)包括以下步骤:

a.解析指令,如果是打开串口进入步骤b,如果是关闭串口进入步骤c,如果是发送或接收数据进入步骤d;

b.根据计数值和串口是否已经被打开返回相应结果,如果计数值大于0,则发送打开成功并将计数值加1,如果计数值等于0且串口已经被打开,则返回打开失败,如果计数值等于0且串口没有被打开,则向系统申请打开串口并将计数值加1,所述计数值表示串口打开的次数,从0开始计数;

c.将计数值减1,返回关闭成功,如果减1后计数值为0,则向系统申请关闭串口,所述计数值表示串口打开的次数,从0开始计数;

d.将指令发给指定的串口,如果有其他指令在访问同一串口,则将指令排序并按序发送,如果要访问的串口没有被其他指令访问,则直接发送指令。

2.根据权利要求1所述的应用程序共享同一串口的方法,其特征在于,步骤(1)之前包括以下步骤:初始化网络接口,监听网络接口。

3.根据权利要求1或2所述的应用程序共享同一串口的方法,其特征在于,所述多线程通讯的方式为Socket接口通讯。

4.一种应用程序共享同一串口的装置,其特征在于,包括:接收模块,通过多线程通讯的方式接收应用程序的指令;

解析模块,解析接收模块接收到的指令,将访问同一串口的指令进行排队处理,按照接收的顺序通过串口发送出去;

发送模块,监听并发送串口的响应码,

所述解析模块包括:

判断模块,判断指令内容,根据指令内容、串口状态和计数模块的计数值对指令进行相应的处理;

计数模块,从0开始计数,串口通过本装置被打开一次计数加1,串口通过本装置被关闭一次计数减1;

排队模块,将访问同一串口的指令按接收顺序进行排队并通过串口发送出去。

5.根据权利要求4所述的应用程序共享同一串口的装置,其特征在于,所述接收模块还用于初始化并监听网络接口。

6.根据权利要求4或5所述的应用程序共享同一串口的装置,其特征在于,所述多线程通讯的方式为Socket接口通信。

说明书 :

应用程序共享同一串口的方法与装置

技术领域

[0001] 本发明涉及计算机技术领域,特别涉及一种应用程序共享同一串口的实现方法与装置。

背景技术

[0002] 在工业控制中,很多设备采用的是串行端口(RS232或者RS485)来作为控制端口,而一般计算机的串口设备在操作系统中是只能限制为1个应用程序控制,如图1所示,一旦某个程序打开了一个串口,其他应用程序便无法使用它,因此需要一种能够实现多个应用程序同时使用同一串口的方法或装置。

发明内容

[0003] 本发明提供了一种应用程序共享同一串口的方法和装置,以解决一个串口只能被一个应用程序使用的问题。
[0004] 本发明应用程序共享同一串口的方法,包括以下步骤:
[0005] (1).通过多线程通讯的方式接收应用程序的指令;
[0006] (2).解析指令,将访问同一串口的指令进行排队处理,按照接收的顺序通过串口发送出去;
[0007] (3).监听并发送串口的响应码。
[0008] 本发明应用程序共享同一串口的方法,由于采用多线程通讯的方式接收应用程序发送的指令,对访问同一串口的指令进行排队处理,使多个应用程序共享同一串口得以实现。
[0009] 一种应用程序共享同一串口的装置,包括:
[0010] 接收模块,通过多线程通讯的方式接收应用程序的指令;
[0011] 解析模块,解析接收模块接收到的指令,将访问同一串口的指令进行排队处理,按照接收的顺序通过串口发送出去;
[0012] 发送模块,监听并发送串口的响应码。
[0013] 本发明应用程序共享同一串口的装置,由于采用可以同时接收多个访问指令的接收模块和对访问同一串口的指令进行排队处理的解析模块,使多个应用程序共享同一串口得以实现。

附图说明

[0014] 图1是串口被一个应用程序单独使用时,其他应用程序无法使用同一串口的示意图;
[0015] 图2是两个个应用程序共享同一串口的示意图;
[0016] 图3是本发明应用程序关于同一串口的方法实施例的流程图;
[0017] 图4是本发明应用程序关于同一串口的装置实施例的结构图。

具体实施方式

[0018] 由于操作系统的限制,无法在操作系统层面上更改串口被占用的唯一性,本发明提供了一种应用程序共享同一串口的方法和装置,在应用层面上,通过多线程通讯方式接收应用程序的访问指令,应用程序的个数不受限制,将访问同一串口的指令进行排队处理,从而实现串口的共享。
[0019] 本发明应用程序共享同一串口的方法,如图2所示,其实现的主体是一个串口共享服务,应用程序通过多进程通讯的方法将指令发送到串口共享服务,共享服务解析数据后再将指令通过串口发送出去,同时监听串口得到硬件的响应回码,并将回码通过网络返回给应用程序,将该串口共享服务的方法应用在本发明应用程序共享同一串口的装置上即可实现应用程序共享同一串口。
[0020] 下面结合附图对本发明做进一步的说明。
[0021] 本发明应用程序共享同一串口的方法,如图3所示,包括以下步骤:
[0022] 步骤301:初始化网络端口,监听网络端口;
[0023] 步骤302:通过Scoket接口通讯的方式接收应用程序的指令;
[0024] 步骤303:解析指令,指令共分为4种:打开串口、关闭串口、发送数据和接收数据,如果是打开串口进入步骤304,如果是关闭串口进入步骤305,如果是发送或接收数据进入步骤306,从0开始计数串口被打开的次数;
[0025] 步骤304:根据计数值和串口是否已经被打开进入步骤307返回相应结果,如果计数值大于0,说明有其他应用程序通过串口共享服务打开了该串口,将计数值加1,步骤307发送打开成功,如果计数值等于0但串口已经被打开,说明其他应用程序通过其他方式占用了该串口,此时步骤307返回打开失败,如果计数值等于0且串口没有被打开,说明该串口此时空闲,向系统申请打开串口并将计数值加1;
[0026] 步骤305:将计数值减1,如果计数值为0,则向系统申请关闭串口,进入步骤307,返回关闭成功;
[0027] 步骤306:将指令发给指定的串口,如果有其他指令在访问同一串口,则将指令排序并按序发送,如果要访问的串口没有被其他指令访问,则通过串口将指令发出去;
[0028] 步骤307:监听并发送串口的响应码。
[0029] 一种应用程序共享同一串口的装置,如图4所示,包括:
[0030] 接收模块,用于打开并监听网络接口,通过Socket接口通讯方式接收监听到的应用程序发送的指令;
[0031] 解析模块,包括判断模块、计数模块和排队模块,判断模块判断接收模块接收到的指令,根据指令内容和串口状态对指令进行相应的处理,计数模块计数每个串口被打开的次数,排队模块对访问同一个串口的发送和接收数据指令进行排队处理。
[0032] 发送模块,监听并发送串口的响应码。
[0033] 其工作过程如图3所示:
[0034] 步骤301:接收模块打开网络接口,开始监听网络接口是否有应用程序发来的指令;
[0035] 步骤302:接收监听到的指令;
[0036] 步骤303:解析模块的判断模块解析指令判断指令类别:如果是打开串口则进入步骤304,如果是关闭串口进入步骤305,如果是发送或接收数据进入步骤306,计数模块从0开始计数串口被打开的次数;
[0037] 步骤304:发送模块根据计数值的大小和串口状态返回相应的结果,如果计数模块的计数值大于0,说明有其他应用程序通过本串口共享装置打开了该串口,计数模块的计数值加1,步骤307发送模块发送打开成功,如果计数值等于0但串口已经被打开,说明其他应用程序通过其他方式占用了该串口,此时步骤307发送模块返回打开失败,如果计数值等于0且串口没有被打开,说明该串口此时空闲,发送模块向系统申请打开串口,计数模块将计数值加1;
[0038] 步骤305:计数模块的计数值减1,如果计数值为0,进入步骤307,发送模块向系统申请关闭串口并返回关闭成功;
[0039] 步骤306:判断模块将指令发给指定的串口,如果有其他指令在访问同一串口,排队模块将指令排序并按序发送,如果要访问的串口没有被其他指令访问,则通过串口将指令发出去;
[0040] 步骤307:发送模块监听并发送串口的响应码。
[0041] 本发明应用程序共享同一串口的方法与装置,对外暴露一个Socket通讯接口,采用多线程通讯支持多个应用的连接,任何一个应用对串口进行操作时,只需要将命令码发送到串口共享服务,服务自动将命令码转发到指定的串口并且将回码通过相同的方式返回给应用,对于应用除了通讯方式发生了改变,其他任何操作都与单独打开一个串口使用没有任何区别,并且不需要对内部逻辑实现变更。
[0042] 以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。