发明内容
本发明的实施例提供一种串口共享的方法和服务端,使得共享同一串口的客户端程序的个数不受限制。
为达到上述目的,本发明的实施例采用如下技术方案:
一种串口共享的方法,服务端独占串口,直接与所述串口进行数据通信,该方法包括:
在所述串口打开时,依次缓存从至少两个客户端程序接收到的数据;
将缓存的数据按照预定顺序依次发送到同一所述串口;
接收所述串口返回的响应数据;
将所述响应数据发送到响应数据对应的客户端程序。
一种服务端,所述服务端独占串口,直接与所述串口进行数据通信,包括:
缓存单元,用于在所述串口打开时,依次缓存从至少两个客户端程序接收到的数据;
第一发送单元,将缓存的数据按照预定顺序依次发送到同一所述串口;
接收单元,接收所述串口返回的响应数据;
第二发送单元,将所述响应数据发送到响应数据对应的客户端程序。
由上述技术方案所描述的本发明实施例,当至少两个客户端程序请求发送数据给同一串口时,依次缓存从客户端程序接收到的数据,然后将缓存的数据按照预定顺序依次发送到上述串口。当所述串口有响应数据时,接收所述串口返回的响应数据,然后将所述响应数据发送到响应数据对应的客户端程序。通过对客户端程序发送的数据进行统一的缓存和发送到同一个串口,可以实现每个客户端程序同时发送数据给同一个串口,而通过对从串口接收到的响应数据进行统一的接收和发送到对应的客户端程序,可以实现每个客户端程序从同一串口接收数据,从而解决了当使用同一个串口的客户端程序个数受限制时,其他客户端程序无法共享使用同一串口问题,实现了当使用同一个串口的客户端程序个数不受限制时,每个客户端程序都可以共享使用同一串口。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:
本发明的实施例提供一种串口共享的方法,如图1所示,通过服务端独占串口,直接与该串口进行数据通信来实现至少两个客户端程序共享使用同一个串口,该方法包括以下步骤:
101、在串口打开时,当至少两个客户端程序请求发送数据时,依次缓存从至少两个客户端程序接收到的数据。在发送到所述串口之前,对所述从每个客户端程序接收到的数据进行统一的缓存,实现在使用同一个串口的客户端程序的个数不受限制时,仍然可以接收每个客户端程序发送的数据,并确保每个客户端程序发送的数据不被丢失。
102、将缓存的数据按照预定顺序依次发送到同一所述串口。通过统一发送从客户端程序接收到的数据,可以解决在客户端程序个数受限制时,一个或固定个数的客户端程序在发送数据到串口时独占该串口的问题,从而使得每个客户端程序都可以发送数据到同一串口。
103、在所述串口有响应数据时,接收所述串口返回的响应数据。通过统一接收不同客户端程序的响应数据,可以解决在客户端程序个数受限制时,其中一个或者固定个数的客户端程序在接收响应数据时独占串口的问题,实现接收每个客户端程序的响应数据。
104、将所述响应数据发送到响应数据对应的客户端程序,由于不同的响应数据对应不同的客户端程序,将响应数据发送到对应的客户端程序,确保了每个客户端程序都能接收到正确的响应数据。
在实现上述方法的同时,本发明实施例还提供一种服务端,如图2所示,该服务端包括:缓存单元21、第一发送单元22、接收单元23和第二发送单元24。
在串口打开时,当至少两个客户端程序请求发送数据时,所述缓存单元21用于依次缓存从至少两个客户端程序接收到的数据,在客户端程序个数不同时,确保每个客户端程序发送的数据不被丢失。然后所述第一发送单元22用于将缓存的数据按照预定顺序依次发送到同一所述串口,使得每个客户端程序发送的数据在缓存之后都能发送到同一个串口。当所述串口有响应数据时,接收单元23用于接收所述串口返回的响应数据,对于每个响应数据都会通过接收单元23进行统一的接收,然后第二发送单元24用于将所述响应数据发送到响应数据对应的客户端程序,从而确保了每个客户端程序都能接受到正确的响应数据。
所述服务端通过对客户端程序发送的数据和从串口接收到的数据进行统一的管理和发送,在使用同一个串口的客户端程序个数不受限制时,实现每个客户端都能够发送数据到同一个串口,并且能够从同一个串口接收数据,从而实现每个客户端程序共享使用同一个串口。
实施例2:
本发明实施例中,以数据卡为例来详细介绍串口共享的方法。假设应用场景为多个客户端程序同时使用同一个数据卡,所述数据卡在连接到PC上时被映射为一个串口,客户端程序A实现短信业务,客户端程序B实现呼叫业务,客户端程序C表示每次新增加的客户端程序,实现其他不同的业务。所述客户端程序C个数不受限制。如图3所示,该方法包括以下步骤:
301、客户端程序A或客户端程序B与串口进行数据通信之前,建立所述客户端程序A或客户端程序B与服务端的数据连接。当每次新增加一个客户端程序C共享使用上述串口时,所述新增加的客户端程序C都要与服务端建立数据连接。
302、当客户端程序A或客户端程序B有打开串口请求时,判断串口是否打开。当每次新增加的客户端程序C有打开串口请求时,也要判断串口是否打开。
303、当所述串口关闭时,则打开该串口。所述打开串口可以采用下述方式实现:当服务端接收到客户端程序A打开串口请求时,由于客户端程序A是第一个请求打开串口的客户端程序,则服务端打开所述串口,并记录客户端程序A有请求过打开串口的操作。当客户端程序B也请求打开串口时,此时服务器端已经打开了该串口,则只记录所述客户端程序B的打开串口请求。当其他新增加的客户端程序C在请求打开串口时,如果串口已经打开,则只记录所述新增加的客户端程序C的打开串口请求。
304、打开串口之后,当客户端程序A请求发送数据时,插入从客户端程序A接收到的数据到队列的队尾。当客户端程序B和其它新增加的客户端程序C同时发送数据时,按照客户端程序发送数据的先后,依次插入从客户端程序B和其它新增加的客户端程序C接收到的数据到队列的队尾。按照客户端程序发送数据的先后依次,依次插入从每个客户端程序接收到的数据到队列的队尾,从而确保在先请求发送数据的客户端程序所发送的数据位于队头,在后请求发送数据的客户端程序所发送的数据位于队尾。
305、将所述队列中的数据按照从队头到队尾的顺序依次发送到同一所述串口。按照从队头到队尾的顺序可以确保在先请求发送数据的客户端程序能够优先发送数据到同一个串口。依次发送所述队列中的数据直到该队列中所有的数据下发完成为止,从而使得从每个客户端程序接收到的数据都被发送到同一个串口。
306、在依次发送所述队列中的数据之后,删除所述队列中的数据。实时释放数据缓存时占用的存储空间,为其他数据的接受提供存储空间。可以在该队列中所有的数据下发完成之后删除所述队列中的所有数据,也可以在发送该队列中一个数据之后,从所述队列中删除该数据。
307、当所述串口有响应数据时,接收所述串口返回的响应数据。不同的响应数据对应与不同的客户端程序。如:当用户通过数据卡发送短信成功后,所述数据卡将返回表示发送短信成功的响应数据,则该响应数据对应客户端程序A;当用户通过数据卡呼叫遇忙时,所述数据卡将返回表示呼叫遇忙的响应数据,则该响应数据对应客户端程序B。
308、接收响应数据之后,将所述响应数据发送到响应数据对应的客户端程序。如:将表示发送短信成功的响应数据发送到客户端程序A;当客户端程序收到该响应数据时就知道短信已经发送成功;将表示实现新增加业务的响应数据发送到客户端程序C。而将表示呼叫遇忙的响应数据发送到客户端程序B,当客户端程序收到该响应数据时就知道呼叫遇忙,暂时呼叫连接不通,可以稍等再重新发起呼叫。
本发明实施例还提供一种服务端,所述服务端可以为一个独立的应用程序。如图4所示,该服务端包括:判断单元41、打开单元42、缓存单元43、第一发送单元44、删除单元45、接收单元46和第二发送单元47。
由于可以同时使用同一个串口的客户端程序个数是不受限制的,至少存在两个客户端程序,本实施例中用客户端程序A、客户端程序B和其它新增加的客户端程序C来表示使用同一个所述串口的客户端程序。当客户端程序有打开串口请求时,判断单元41用于判断串口是否打开。所述串口的初始状态是关闭的,当使用同一个所述串口的第一个客户端程序A判断到所述串口关闭时,则打开单元42用于打开该串口。当使用同一个串口的其它客户端程序在判断到所述串口为打开状态时,则不用再次打开该串口。
打开串口之后,当客户端程序A、客户端程序B和其它新增加的客户端程序C请求发送数据时,缓存单元43用于依次插入从客户端程序A、客户端程序B和其它新增加的客户端程序C接收到的数据到队列的队尾,可以确保在先请求发送数据的客户端程序所发送的数据位于队头,在后请求发送数据的客户端程序所发送的数据位于队尾。然后,第一发送单元44用于将所述队列中的数据按照从队头到队尾的顺序依次发送到同一所述串口。依次发送缓存单元43插入到所述队列中的数据直到该队列中所有的数据下发完成为止,从而使得从每个客户端程序接收到的数据都被发送到同一个串口。
在依次发送所述队列中的数据之后,删除单元45用于删除队列中的数据。将已经发送的数据进行删除,可以实时释放数据缓存时占用的存储空间,为其他数据的接受提供存储空间。
当串口有响应数据时,接收单元46用于接收所述串口返回的响应数据。不同的响应数据对应与不同的客户端程序。然后,第二发送单元47用于将所述响应数据发送到响应数据对应的客户端程序。从而实现了每个客户端程序都可以从同一个串口接收数据。
所述服务端在实现串口共享时,独占该串口,直接与该串口进行数据通信,统一管理至少两个客户端程序和同一串口之间的数据通信。如图5所示,所述每个客户端程序52都集成有客户端应用程序接口,所述客户端应用程序接口51用于封装与服务端交互协议的一种提供给客户端使用的接口。所述服务端53通过对客户端程序52发送的数据和从串口接收到的数据进行统一的管理和发送,在使用同一个串口的客户端程序个数不受限制时,实现每个客户端52都能够发送数据到同一个串口,并且能够从同一个串口接收数据,从而实现每个客户端程序共享使用同一个串口。
以数据卡为例,所述服务端,客户端应用程序接口和客户端程序可以通过下述方式获得:设备提供商为数据卡发布配套的PC应用软件,该PC应用软件包含客户端程序和服务端,并且同时配套发布客户端应用程序接口。第三方公司可以基于该客户端应用程序接口开发其它不同的客户端程序。用户通过第三方公司开发的客户端程序和数据卡配套的PC应用软件同时使用同一个数据卡。不仅可以在使用同一个串口的客户端程序个数不受限制时,实现每个客户端程序共享使用同一个串口,而且通过第三方公司基于设备提供商发布的客户端应用程序接口开发不同的客户端程序,从而也扩展了设备提供的业务,方便了用户使用同一个串口设备办理多项不同的业务。
本发明实施例可以应用于通信技术领域,实现了当使用同一个串口的客户端程序个数不受限制时,每个客户端程序都可以共享使用同一串口。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。