CN101699421B - 串口共享的方法和服务端 - Google Patents

串口共享的方法和服务端 Download PDF

Info

Publication number
CN101699421B
CN101699421B CN2009102085094A CN200910208509A CN101699421B CN 101699421 B CN101699421 B CN 101699421B CN 2009102085094 A CN2009102085094 A CN 2009102085094A CN 200910208509 A CN200910208509 A CN 200910208509A CN 101699421 B CN101699421 B CN 101699421B
Authority
CN
China
Prior art keywords
serial ports
data
client
side program
successively
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
CN2009102085094A
Other languages
English (en)
Other versions
CN101699421A (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.)
Huawei Device Co Ltd
Huawei Device Shenzhen Co Ltd
Original Assignee
Huawei Device 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 Huawei Device Co Ltd filed Critical Huawei Device Co Ltd
Priority to CN2009102085094A priority Critical patent/CN101699421B/zh
Publication of CN101699421A publication Critical patent/CN101699421A/zh
Application granted granted Critical
Publication of CN101699421B publication Critical patent/CN101699421B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明公开一种串口共享的方法和服务端,涉及通信技术领域,解决了当使用同一个串口的客户端程序个数受限制时,其他客户端程序无法共享使用同一串口问题。本发明实施例中的服务端独占串口,直接与所述串口进行数据通信,该方法包括:在所述串口打开时,依次缓存从至少两个客户端程序接收到的数据;将缓存的数据按照预定顺序依次发送到同一所述串口;接收所述串口返回的响应数据;将所述响应数据发送到响应数据对应的客户端程序。该方法主要应用于通信技术领域。

Description

串口共享的方法和服务端
技术领域
本发明涉及通信技术领域,尤其涉及一种串口共享的方法和服务端。
背景技术
在PC(Personal Computer,个人计算机)上运行的客户端程序与连接到该PC上的串口设备进行通讯时,通常该串口设备在实现某种功能时被映射成一个串口,该客户端程序在打开所述串口后将会独占该串口,导致其它的客户端程序无法共享使用该串口。
现有技术中,有些设备厂商通过提供驱动程序可以虚拟出多个相同功能的串口,PC客户端程序可以直接使用虚拟出来的端口。对于客户端程序来说,使用该虚拟出来的端口和使用一个真实的串口是一样的。但是在该方法中,虚拟出来的端口数比较固定,能够共享使用同一串口的客户端程序受到明确的限制。比如:虚拟出了2个端口,那么能够共享使用该串口的客户端程序也只能有2个,其他的客户端程序仍然无法共享使用该串口。
发明内容
本发明的实施例提供一种串口共享的方法和服务端,使得共享同一串口的客户端程序的个数不受限制。
为达到上述目的,本发明的实施例采用如下技术方案:
一种串口共享的方法,服务端和客户端程序之间的数据通信在同一设备上进行,所述服务端独占串口,直接与所述串口进行数据通信,该方法包括:
在所述串口打开时,依次缓存从至少两个所述客户端程序接收到的数据;
将缓存的数据按照预定顺序依次发送到同一所述串口;
接收所述串口返回的响应数据;
将所述响应数据发送到响应数据对应的客户端程序。
一种服务端,服务端和客户端程序之间的数据通信在同一设备上进行,所述服务端独占串口,直接与所述串口进行数据通信,包括:
缓存单元,用于在所述串口打开时,依次缓存从至少两个所述客户端程序接收到的数据;
第一发送单元,将缓存的数据按照预定顺序依次发送到同一所述串口;
接收单元,接收所述串口返回的响应数据;
第二发送单元,将所述响应数据发送到响应数据对应的客户端程序。
由上述技术方案所描述的本发明实施例,当至少两个客户端程序请求发送数据给同一串口时,依次缓存从客户端程序接收到的数据,然后将缓存的数据按照预定顺序依次发送到上述串口。当所述串口有响应数据时,接收所述串口返回的响应数据,然后将所述响应数据发送到响应数据对应的客户端程序。通过对客户端程序发送的数据进行统一的缓存和发送到同一个串口,可以实现每个客户端程序同时发送数据给同一个串口,而通过对从串口接收到的响应数据进行统一的接收和发送到对应的客户端程序,可以实现每个客户端程序从同一串口接收数据,从而解决了当使用同一个串口的客户端程序个数受限制时,其他客户端程序无法共享使用同一串口问题,实现了当使用同一个串口的客户端程序个数不受限制时,每个客户端程序都可以共享使用同一串口。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为实施例1中串口共享的方法的流程图;
图2为实施例1中服务端的框图;
图3为实施例2中串口共享的方法的流程图;
图4为实施例2中服务端的框图;
图5为实施例2中通过服务端实现串口共享方法的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例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应用软件同时使用同一个数据卡。不仅可以在使用同一个串口的客户端程序个数不受限制时,实现每个客户端程序共享使用同一个串口,而且通过第三方公司基于设备提供商发布的客户端应用程序接口开发不同的客户端程序,从而也扩展了设备提供的业务,方便了用户使用同一个串口设备办理多项不同的业务。
本发明实施例可以应用于通信技术领域,实现了当使用同一个串口的客户端程序个数不受限制时,每个客户端程序都可以共享使用同一串口。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (9)

1.一种串口共享的方法,其特征在于,服务端和客户端程序之间的数据通信在同一设备上进行,所述服务端独占串口,直接与所述串口进行数据通信,该方法包括:
在所述串口打开时,依次缓存从至少两个所述客户端程序接收到的数据;
将缓存的数据按照预定顺序依次发送到同一所述串口;
接收所述串口返回的响应数据;
将所述响应数据发送到响应数据对应的客户端程序。
2.根据权利要求1所述的串口共享的方法,其特征在于,在所述串口打开时,依次缓存从至少两个客户端程序接收到的数据之前,还包括:
当客户端程序有打开串口请求时,判断所述串口是否打开;
当判断到所述串口关闭时,则打开所述串口。
3.根据权利要求1所述的串口共享的方法,其特征在于,当采用队列结构缓存数据时,所述依次缓存从至少两个客户端程序接收到的数据为:依次插入从至少两个客户端程序接收到的数据到队列的队尾;
所述将缓存的数据依次发送到同一所述串口为:将所述队列中的数据按照从队头到队尾的顺序依次发送到同一所述串口。
4.根据权利要求3所述的串口共享的方法,其特征在于,将所述队列中的数据按照从队头到队尾的顺序依次发送到同一所述串口之后,还包括:
删除所述队列中的数据。
5.一种服务端,其特征在于,所述服务端和客户端程序之间的数据通信在同一设备上进行,所述服务端独占串口,直接与所述串口进行数据通信,包括:
缓存单元,用于在所述串口打开时,依次缓存从至少两个所述客户端程序接收到的数据;
第一发送单元,将缓存的数据按照预定顺序依次发送到同一所述串口;
接收单元,接收所述串口返回的响应数据;
第二发送单元,将所述响应数据发送到响应数据对应的客户端程序。
6.根据权利要求5所述的服务端,其特征在于,所述每个客户端程序都集成有客户端应用程序接口;
所述客户端应用程序接口,用于封装与服务端交互协议的一种提供给客户端使用的接口。
7.根据权利要求5所述的服务端,其特征在于,还包括:
判断单元,用于当客户端程序有打开串口请求时,判断所述串口是否打开;
打开单元,用于当判断到所述串口关闭时,则打开所述串口。
8.根据权利要求5所述的服务端,其特征在于,所述缓存单元用于当所述服务端采用队列结构缓存数据时,依次插入从至少两个客户端程序接收到的数据到队列的队尾;
所述第一发送单元用于将所述队列中的数据按照从队头到队尾的顺序依次发送到同一所述串口。
9.根据权利要求5所述的服务端,其特征在于,所述服务端还包括:
删除单元,用于在所述发送单元将所述队列中的数据按照从队头到队尾的顺序依次发送到同一所述串口之后,删除所述队列中的数据。
CN2009102085094A 2009-10-28 2009-10-28 串口共享的方法和服务端 Active CN101699421B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009102085094A CN101699421B (zh) 2009-10-28 2009-10-28 串口共享的方法和服务端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009102085094A CN101699421B (zh) 2009-10-28 2009-10-28 串口共享的方法和服务端

Publications (2)

Publication Number Publication Date
CN101699421A CN101699421A (zh) 2010-04-28
CN101699421B true CN101699421B (zh) 2012-01-04

Family

ID=42147881

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009102085094A Active CN101699421B (zh) 2009-10-28 2009-10-28 串口共享的方法和服务端

Country Status (1)

Country Link
CN (1) CN101699421B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9438581B2 (en) * 2014-04-15 2016-09-06 GM Global Technology Operations LLC Authenticating data at a microcontroller using message authentication codes
CN107168264B (zh) * 2017-06-21 2019-09-24 北京市环境保护监测中心 环境监测的串口共享系统及方法
CN107688486A (zh) * 2017-08-10 2018-02-13 深圳市证通电子股份有限公司 基于共享服务的串口共享方法、共享装置及存储介质
CN110620713B (zh) * 2019-09-11 2022-03-25 北京演能科技有限公司 Modbus协议共享通讯的方法和装置
CN111352868B (zh) * 2020-03-30 2021-09-28 厦门科灿信息技术有限公司 串口访问方法、装置、终端设备及存储介质
CN112069105B (zh) * 2020-07-31 2022-09-23 深圳市优必选科技股份有限公司 一种串口通信处理方法、装置及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1291747A (zh) * 2000-11-24 2001-04-18 李楠甍 高速缓存设备及其使用方法
CN1554055A (zh) * 2001-07-23 2004-12-08 �Ƚ�΢װ�ù�˾ 高可用性集群虚拟服务器系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1291747A (zh) * 2000-11-24 2001-04-18 李楠甍 高速缓存设备及其使用方法
CN1554055A (zh) * 2001-07-23 2004-12-08 �Ƚ�΢װ�ù�˾ 高可用性集群虚拟服务器系统

Also Published As

Publication number Publication date
CN101699421A (zh) 2010-04-28

Similar Documents

Publication Publication Date Title
CN101699421B (zh) 串口共享的方法和服务端
JP4624110B2 (ja) 2つまたはそれ以上の機械の間でデータベース動作を行なうための直接メモリアクセスの用法
US9680937B2 (en) Communication method and apparatus
US7200641B1 (en) Method and system for encoding SCSI requests for transmission using TCP/IP
EP1701263B1 (en) Computer system and data backup method in computer system
CN113364735A (zh) 多链场景下数据跨链访问控制方法、系统、设备及终端
US8051416B2 (en) Method for a user-specific configuration of a computer from a group of prepared computers
CN113672406A (zh) 数据传输处理方法、装置、电子设备及存储介质
US20190334968A1 (en) Bit rate reduction processing method for data file, and server
EP1988473B1 (en) A server with a core using a virtual file system and a method for securely redirecting a persistent storage device operation to a middleware infrastructure
CN101272396A (zh) 直接访问式微小体积型网络存储装置及网络存储方法
KR20220027715A (ko) 토픽 기반 우선순위 데이터 제어를 처리하는 dds 라우팅 서비스를 제공하는 프로그램
US6766423B2 (en) Message-based memory system for DSP storage expansion
US20220043919A1 (en) Computer method for entry of plural input modalities onto a secure disclosure blockchain
CN108279855A (zh) 一种读写存储设备的方法
CN109274774A (zh) 一种数据存储方法、装置和计算机可读存储介质
US8239447B2 (en) Retrieving data using an asynchronous buffer
CN107911317A (zh) 一种报文调度方法及装置
CN109298931A (zh) 缓冲区按需释放方法及网络设备
WO2023116438A1 (zh) 一种数据访问方法、装置以及设备
CN112737827A (zh) 资源分配方法、装置及系统
CN110581848A (zh) 一种云桌面多网隔离系统和方法
EP2051484A2 (en) Satellite Data Network Acceleration
CN115208739B (zh) 跨多网络区对接方法及安全运维区对接单向网络区的方法
CN102693206B (zh) 在终点中无线usb同步的缓冲器管理

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: 518129 Building 2, B District, Bantian HUAWEI base, Longgang District, Shenzhen, Guangdong.

Patentee after: Huawei terminal (Shenzhen) Co.,Ltd.

Address before: 518129 Building 2, B District, Bantian HUAWEI base, Longgang District, Shenzhen, Guangdong.

Patentee before: HUAWEI DEVICE Co.,Ltd.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20181226

Address after: 523808 Southern Factory Building (Phase I) Project B2 Production Plant-5, New Town Avenue, Songshan Lake High-tech Industrial Development Zone, Dongguan City, Guangdong Province

Patentee after: HUAWEI DEVICE Co.,Ltd.

Address before: 518129 Building 2, B District, Bantian HUAWEI base, Longgang District, Shenzhen, Guangdong.

Patentee before: Huawei terminal (Shenzhen) Co.,Ltd.

TR01 Transfer of patent right