CN111212483A - 一种vci装置与多客户端的通信方法及vci装置 - Google Patents
一种vci装置与多客户端的通信方法及vci装置 Download PDFInfo
- Publication number
- CN111212483A CN111212483A CN202010030605.0A CN202010030605A CN111212483A CN 111212483 A CN111212483 A CN 111212483A CN 202010030605 A CN202010030605 A CN 202010030605A CN 111212483 A CN111212483 A CN 111212483A
- Authority
- CN
- China
- Prior art keywords
- client
- handle
- data
- vci
- readable set
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W76/00—Connection management
- H04W76/10—Connection setup
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B23/00—Testing or monitoring of control systems or parts thereof
- G05B23/02—Electric testing or monitoring
- G05B23/0205—Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults
- G05B23/0259—Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults characterized by the response to fault detection
- G05B23/0267—Fault communication, e.g. human machine interface [HMI]
Landscapes
- Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Automation & Control Theory (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Small-Scale Networks (AREA)
Abstract
本申请提供了一种VCI装置与多客户端的通信方法及VCI装置,方法包括:车辆通信接口VCI装置接收汽车故障诊断仪中的客户端发送的连接请求,其中,所述连接请求包括所述客户端的句柄;将所述句柄放入连接队列的未使用元素中,从而得到已使用元素;从所述已使用元素中读取所述句柄,并将所述句柄放入所述可读集合中;在监测到所述可读集合的句柄对应的客户端需要发送数据的情况下,接收所述客户端发送的数据。
Description
技术领域
本申请涉及汽车诊断领域,尤其涉及一种VCI装置与多客户端的通信方法及VCI装置。
背景技术
汽车诊断的任务是:在汽车不解体的情况下,对汽车进行性能测试和故障检测。一般情况下,汽车配置有车载自动诊断(On Board Diagnostics,OBD)系统,因此维修人员可以利用汽车故障诊断仪迅速地读取OBD系统的诊断结果,从而查明汽车的故障部位及故障原因。
目前,汽车诊断的方式通常为:如图1所示,利用车辆通信接口(VehicleCommunication Interface,VCI)装置120将汽车故障诊断仪110和待诊断汽车130进行一对一地通信连接,从而实现汽车诊断。这样的诊断操作只能实现单一的故障诊断,即当其他维修人员也需要对待诊断的汽车进行检测时,只能排队等候,而不能同时检测。
发明内容
为了解决上述问题,本申请实施例公开了一种VCI装置与多客户端的通信方法及VCI装置。
第一方面,本申请提供了一种VCI装置与多客户端的通信方法,包括:
VCI装置接收汽车故障诊断仪中的客户端发送的连接请求,其中,所述连接请求包括所述客户端的句柄;
将所述句柄放入连接队列的未使用元素中,从而得到已使用元素;
从所述已使用元素中读取所述句柄,并将所述句柄放入所述可读集合中;
在监测到所述可读集合的句柄对应的客户端需要发送数据的情况下,接收所述客户端发送的数据。
在一些可能的设计中,所述接收所述客户端发送的数据包括:在所述客户端对应的句柄在所述连接队列中,且所述客户端对应的句柄在所述可读集合中的情况下,接收所述客户端发送的数据。
在一些可能的设计中,在所述将所述句柄放入所述可读集合中之后,所述方法还包括:在监测到所述客户端未发送数据的情况下,将所述客户端对应的句柄从所述可读集合中清除。
在一些可能的设计中,在所述接收所述客户端发送的数据之后,所述方法还包括:在所述数据不为空的情况下,对所述数据进行处理,从而发送给所述目标汽车;或者,在所述数据为空的情况下,将所述客户端对应的句柄从所述可读集合中清除,并关闭所述已使用元素中的句柄以及将所述已使用元素设置为所述未使用元素。
在一些可能的设计中,所述汽车故障诊断仪与所述VCI装置通过WIFI或者蓝牙进行无线通信,所述VCI装置与所述目标汽车通过车载自动诊断OBD接口进行有线通信。
上述方法中,VCI装置利用队列将请求连接的客户端句柄进行存储,然后通过遍历队列,将队列中保存的客户端句柄加入可读集合中,然后监测可读集合中的句柄所对应的客户端是否向VCI装置发送数据,在客户端向VCI装置发送数据的情况下,接收该客户端发送的数据,并对数据进行相应的处理,从而实现汽车故障诊断仪与VCI装置之间的通信。因此,利用上述方法可以实现利用1个VCI装置并发处理多个客户端,从而有效地提高汽车诊断效率。
第二方面,本申请提供了一种VCI装置,包括:
获取单元,用于接收汽车故障诊断仪中的客户端发送的连接请求,其中,所述连接请求包括所述客户端的句柄;
确定单元,用于将所述句柄放入连接队列的未使用元素中,从而得到已使用元素;
提取单元,用于从所述已使用元素中读取所述句柄,并将所述句柄放入所述可读集合中;
处理单元,在监测到所述可读集合的句柄对应的客户端需要发送数据的情况下,接收所述客户端发送的数据。
在一些可能的设计中,在监测到所述可读集合的句柄对应的客户端需要发送数据的情况下,所述处理单元具体用于:在所述客户端对应的句柄在所述连接队列中,且所述客户端对应的句柄在所述可读集合中的情况下,接收所述客户端发送的数据。
在一些可能的设计中,在所述将所述句柄放入所述可读集合中之后,所述处理单元还用于:在监测到所述客户端未发送数据的情况下,将所述客户端对应的句柄从所述可读集合中清除。
在一些可能的设计中,在所述接收所述客户端发送的数据之后,所述处理单元还用于:在所述数据不为空的情况下,对所述数据进行处理,从而发送给所述目标汽车;或者,在所述数据为空的情况下,将所述客户端对应的句柄从所述可读集合中清除,并关闭所述已使用元素中的句柄以及将所述已使用元素设置为所述未使用元素。
第三方面,本申请提供了一种VCI装置,包括:处理器、通信接口以及存储器;存储器用于存储指令,处理器用于执行指令,通信接口用于在处理器的控制下与其他设备进行通信,当处理器执行指令时实现上述第一方面中的任一项方法。
第四方面,本申请提供了一种计算机存储介质,包括指令,当所述指令在计算机上运行时,使得所述计算机执行上述第一方面中的任一项方法。
第五方面,本申请提供了一种计算机程序产品,当计算机程序产品被计算机读取并执行时,如第一方面中的任一项方法将被执行。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种汽车诊断方式;
图2是本申请提供的一种汽车诊断系统的结构示意图;
图3是本申请提供的一种VCI装置与多客户端的通信方法的流程示意图;
图4是本申请提供的一种VCI装置处理多客户端连接请求的流程示意图;
图5是本申请提供的一种VCI装置接收多客户端发送的数据的流程示意图;
图6是本申请提供的一种VCI装置的结构示意图;
图7是本申请提供的另一种VCI装置的结构示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例的技术方案进行描述。
首先请参见图2,图2示出了本申请提供的一种汽车诊断系统的结构示意图。汽车诊断系统包括汽车故障诊断仪210、VCI装置220以及待诊断汽车230,其中,汽车故障诊断仪210的个数可以是一个或者多个,并且汽车故障诊断仪210与VCI装置220通过无线网络连接,VCI装置220与待诊断汽车230通过接口实现有线连接。具体的,当开启VCI装置220的热点时,汽车故障诊断仪210可以与VCI装置220进行配对,从而实现汽车故障诊断仪210与VCI装置220之间通过无线上网(Wireless Fidelity,WIFI)或者蓝牙进行连接;待诊断汽车230上配置有OBD诊断座,当VCI装置220插入OBD诊断座时,可以实现待诊断汽车230与VCI装置220之间的有线连接。
可以看出,相较于图1展示的汽车诊断方式,图2示出的汽车诊断系统中,一个VCI装置可以同时与一个或者多个汽车故障诊断仪进行连接,因此利用上述汽车诊断系统对待诊断汽车进行故障诊断时,可以在不需要增加VCI装置的情况下,同时使用一个或者多个汽车故障诊断仪对待诊断汽车进行故障诊断,也就是说,在多个维修人员都需要对同一个汽车进行诊断的情况下,这些维修人员可以无需排队等候,即维修人员可以同时对该汽车进行故障诊断,从而减少汽车诊断时间,提高维修人员的工作效率。
本申请实施例的技术方案可以基于图2所示架构的汽车诊断系统或其形变架构进行具体实施。
参见图3,图3是本申请提供的一种VCI装置与多客户端的通信方法的流程示意图。本实施方式的通信方法具体包括但不限于如下步骤:
S101、VCI装置接收汽车故障诊断仪中的客户端发送的连接请求。
在本申请实施例中,汽车故障诊断仪为汽车故障诊断检查的工具,VCI装置用于连接汽车故障诊断仪和目标汽车,使得汽车故障诊断仪和目标汽车之间可以进行通信,从而实现目标汽车的故障诊断。
在本申请具体的实施例中,连接请求包括汽车故障诊断仪中的客户端的句柄,句柄用于标识汽车故障诊断仪的客户端。
在一更具体的实施例中,VCI装置利用accept函数对汽车故障诊断仪中客户端的连接请求进行处理,其中,accept函数是用于接收客户端请求的函数,并在接收到客户端的连接请求之后,accept函数返回客户端的句柄。
S102、VCI装置将句柄放入连接队列的未使用元素中,从而得到已使用元素。
在本申请具体的实施例中,连接队列中的未使用元素表示该元素中未存储有客户端句柄,已使用元素表示该元素中存储有客户端句柄,具体的,连接队列包括元素C1,C2,...,Cn,在accept函数返回客户端的句柄之后,首先判断元素C1是否为未使用元素,若元素C1为未使用元素,则将该客户端的句柄放入元素C1中;若元素C1为已使用元素,则判断元素C2是否为已使用元素;若元素C2为未使用元素,则将该客户端的句柄放入元素C2中;若元素C2为已使用元素,则判断元素C3是否未使用元素,…,以此类推,可以确定连接队列中的未使用元素Ci,并将客户端的句柄放入未使用元素Ci中,使得未使用元素Ci变为已使用元素Ci′。
S103、VCI装置从已使用元素中读取句柄,并将句柄放入可读集合中。
S104、在监测到可读集合的句柄对应的客户端需要发送数据的情况下,VCI装置接收客户端发送的数据。
在本申请具体的实施例中,VCI装置可以利用select函数监测可读集合的句柄对应的客户端是否向VCI装置发送数据。具体的,VCI装置依次对可读集合中的句柄对应的客户端进行监测,若在预设时长内未监测到客户端向VCI装置发送数据,则从可读集合中将该客户端对应的句柄清除,使得可读集合存储有向VCI装置发送了数据的客户端对应的句柄。
在本申请具体的实施例中,假设VCI监测到可读集合的句柄对应的客户端向VCI发送数据,则在客户端对应的句柄在连接队列中,且客户端对应的句柄在可读集合中的情况下,VCI接收客户端发送的数据。
应理解,客户端可能仅仅向VCI装置发送了连接请求,而未向VCI装置发送数据,因此,在确定与VCI装置建立连接的客户端之后,还需要进一步确定向VCI装置发送数据的客户端。还应理解,客户端可能由于网络原因或者距离问题,使得VCI装置无法接收到客户端发送的连接请求,此时连接队列中与该客户端对应的元素将从已使用状态转换为未使用状态,因此,VCI装置需要在确定可读集合中存在客户端对应的句柄的基础上,进一步确定该客户端与VCI装置之间的通信链路正常,即连接队列中存储有该客户端对应的句柄。
在本申请实施例中,在VCI接收到客户端发送的数据之后,在数据不为空的情况下,对数据进行处理,从而发送给目标汽车;或者,在数据为空的情况下,将客户端对应的句柄从可读集合中清除,并关闭已使用元素中的句柄以及将已使用元素设置为未使用元素。
在一更具体的实施例中,VCI装置可以利用recv函数读取客户端发送的数据,并根据recv函数的返回值,确定数据是否为空,其中,在recv函数的返回值大于0的情况下,VCI装置对接收到的数据进行解析,并将解析后的数据发送给目标汽车的OBD系统;在recv函数的返回值小于或者等于0的情况下,VCI装置将该客户端对应的句柄从可读集合中清除,并将该客户端对应的已使用元素设置为未使用元素,然后关闭连接队列中该客户端对应的句柄,从而释放网络空间以及节省内存空间。
应理解,在汽车诊断过程中,可能由于客户端与VCI装置之间的通信网络出现问题,例如,客户端与VCI装置的距离过远或者WIFI网络不稳定等等,导致客户端向VCI装置发送的数据异常,因此当VCI接收到客户端发送的数据之后,还需要进一步对数据进行相关处理,从而保证VCI将正常的数据发送给目标汽车的OBD系统。
在本申请具体的实施例中,在VCI装置监测到客户端未发送数据的情况下,将客户端对应的句柄从可读集合中清除。
在本申请具体的实施例中,汽车故障诊断仪中的客户端与VCI装置通过WIFI或者蓝牙进行无线通信,VCI装置与目标汽车通过OBD接口进行有线通信。
需要说明的,汽车故障诊断仪中的客户端与VCI装置之间可以通过WIFI连接,也可以通过通用串行总线(Universal Serial Bus,USB)连接,还可以通过蓝牙进行连接等等,此处不作具体限定。另外,VCI装置与目标汽车之间可以通过OBD接口连接,也可以通过总线进行连接等等,此处不作具体限定。
上述VCI装置的通信方法中,当汽车故障诊断仪的客户端向VCI装置发送连接请求时,VCI装置利用连接队列将请求连接的客户端句柄进行存储,然后通过遍历队列,将队列中保存的客户端句柄加入可读集合中,然后监测可读集合中的句柄所对应的客户端是否向VCI装置发送数据,在客户端向VCI装置发送数据的情况下,接收该客户端发送的数据,并对数据进行相应的处理之后发送给目标汽车,从而实现了利用1个VCI装置并发处理多个客户端,极大地提高了汽车诊断效率。
结合图3示出的VCI装置通信方法,可以实现1个VCI装置并发处理多个客户端发送的数据,为了便于理解本申请提供的技术方案,下面将举例说明本申请的具体实现方式。
步骤一,m个客户端I1,I2,...,Im分别向VCI装置发送的m个连接请求R1,R2,...,Rm。
其中,m个客户端分别属于m个汽车故障诊断仪,连接请求R1包括客户端I1的句柄,连接请求R2包括客户端I2的句柄,…,连接请求Rm包括客户端Im的句柄,且m是正整数。
步骤二,VCI装置在接收到连接请求R1,R2,...,Rm之后,将客户端I1,I2,...,Im的句柄依次放入连接队列的m个未使用元素中,从而得到m个已使用元素。
其中,连接队列包括n个元素C1,C2,...,Cn,n是正整数。
以VCI装置接收到客户端Ii发送的连接请求Ri为例,如图4所示,下面对VCI装置处理客户端的连接请求的具体过程进行说明:当VCI装置接收到客户端Ii发送的连接请求Ri时,accept函数返回客户端Ii的句柄,然后遍历连接队列,从而找到连接队列中的未使用的元素Ck,并将客户端Ii的句柄放入元素Ck中,此时元素Ck变为已使用元素。应理解,VCI装置接收客户端I1,I2,...,Im发送的连接请求R1,R2,...,Rm的过程与VCI装置接收客户端Ii发送的连接请求Ri的过程类似,此处不再进行赘述。
需要说明的,当没有客户端向VCI装置发送连接请求时,accept函数挂起任务,等待客户端的连接。另外,当VCI遍历完连接队列后,确定元素C1,C2,...,Cn均为已使用元素,则关闭accept函数返回的客户端Ii的句柄。
步骤三,VCI装置从m个已使用元素中分别读取客户端I1,I2,...,Im的句柄,并将客户端I1,I2,...,Im的句柄依次放入可读集合中。
可选的,VCI装置通过遍历上述连接队列,从而确定连接队列中的m个已使用元素,然后分别将m个已使用元素中存储的客户端I1,I2,...,Im的句柄依次放入可读集合中。具体的,VCI装置首先判断连接队列中的元素C1是否为已使用元素,若元素C1为已使用元素,则将元素C1中存储的客户端句柄放入可读集合中;若元素C1为未使用元素,则VCI装置判断连接队列中的元素C2是否为已使用元素,若元素C2为已使用元素,则将元素C2中存储的客户端句柄放入可读集合中;若元素C2为未使用元素,则VCI装置判断连接队列中的元素C3是否为已使用元素,…,以此类推,直至VCI装置遍历完连接队列中的元素。
步骤四,VCI装置对可读集合中的m个句柄对应的m个客户端I1,I2,...,Im依次进行监测,从而确定m个客户端I1,I2,...,Im中未向VCI装置发送了数据的l个客户端Ia,Ib,...,Ic,并将客户端Ia,Ib,...,Ic对应的句柄从可读集合中清除。
其中,0≤l≤m,0≤a≤b≤c≤l,且l,a,b,c均为正整数。
具体的,在可读集合不为空的情况下,VCI装置利用select函数,首先对可读集合中的第一个句柄对应的客户端(即客户端I1)进行监测,若未监测到客户端I1向VCI装置发送数据,则从可读集合中将第一个句柄清除;然后对可读集合中的第二个句柄对应的客户端(即客户端I2)进行监测,若未监测到客户端I2向VCI装置发送数据,则从可读集合中将第二个句柄清除;…;最后对可读集合中的第m个句柄对应的客户端(即客户端I2)进行监测,若未监测到户端Im向VCI装置发送数据,则从可读集合中将第m个句柄清除。此时,可读集合包括了m-l个句柄,且这些句柄对应的m-l个客户端均向VCI装置发送了数据。
应理解,上述第一个句柄,第二个句柄,…,第m个句柄为步骤三得到的可读集合中的句柄。还应理解,当利用select函数对可读集合中的句柄对应的客户端进行监测时,可以这样确定客户端是否向VCI装置发送数据:若在预设时长内未监测到该句柄对应的客户端向VCI装置发送数据,则确定该句柄对应的客户端未向VCI装置发送数据,其中,预设时长可以设置为100ms,也可以根据实际应用场景进行设置,此处不作具体限定。
步骤五,VCI装置通过遍历连接队列,确定连接队列中的已使用元素,若已使用元素对应的客户端的句柄在可读集合中,则接收客户端发送的数据。
具体的,VCI装置通过遍历连接队列,逐一查询连接队列中的元素是否为已使用元素,若该元素是已使用元素,则进一步确定该元素中存储的客户端句柄是否在可读集合中。若该元素中存储的客户端句柄在可读集合中,则接收客户端发送的数据;若VCI装置确定连接队列中的元素是未使用元素,或者已使用元素中存储的客户端句柄不在可读集合中,则不接收客户端发送的数据。
应理解,客户端可能仅仅向VCI装置发送了连接请求,而未向VCI装置发送数据,因此,需要在确定与VCI装置建立连接的客户端之后,还需要进一步确定向VCI装置发送数据的客户端。还应理解,客户端可能由于网络原因或者距离问题,使得VCI装置无法接收到客户端发送的连接请求,此时连接队列中与该客户端对应的元素将从已使用状态转换为未使用状态,因此,VCI装置需要在确定可读集合中存在客户端对应的句柄的基础上,进一步确定该客户端与VCI装置之间的通信链路正常,也就是连接队列中存储有该客户端对应的句柄。
举例说明,客户端I1,I2,I3均向VCI装置发送了连接请求,但是客户端I1未向VCI装置发送数据,客户端I2,I3向VCI装置发送了数据,则连接队列中包括3个已使用元素,即客户端I1,I2,I3对应的已使用元素,而可读集合中包括2个句柄,即客户端I2,I3对应的句柄。此时,VCI装置通过遍历连接队列,首先确定客户端I1向VCI装置发送了连接请求,然后通过确定可读集合中不包含客户端I1对应的句柄,则VCI装置将不接收客户端I1发送的数据;然后继续查询连接队列,确定客户端I2向VCI装置发送了连接请求,并且可读集合包括客户端I2对应的句柄,因此VCI装置将接收客户端I2发送的数据;类似的,VCI装置也将接收客户端I3发送的数据。
步骤六,VCI装置接收客户端发送的数据。
可选的,VCI装置利用recv函数读取客户端发送的数据,并根据recv函数的返回值,确定接收到的数据是否为空,其中,在recv函数的返回值大于0的情况下,VCI装置对接收到的数据进行解析,并将解析后的数据发送给目标汽车的OBD系统;在recv函数的返回值小于或者等于0的情况下,VCI装置将该客户端对应的句柄从可读集合中清除,并将该客户端对应的已使用元素设置为未使用元素,然后关闭连接队列中该客户端对应的句柄,从而释放网络空间以及节省内存空间。
需要说明的,当recv函数的返回值小于或者等于0时,表示客户端发送的数据出现异常情况,出现这种现象的原因可能是:该客户端与VCI装置的网络连接出现问题,从而导致VCI装置接收到错误的数据。另外,当VCI装置将连接队列中的所有元素遍历之后,VCI装置将清空可读集合,并重复执行上述步骤三至步骤六的操作,具体请参加图5。
如图6所示,图6是本申请提供的一种VCI装置的结构示意图。VCI装置包括获取单元310、确定单元320、提取单元330以及处理单元340,其中,
获取单元310,用于接收汽车故障诊断仪中的客户端发送的连接请求,其中,所述连接请求包括所述客户端的句柄;
确定单元320,用于将所述句柄放入连接队列的未使用元素中,从而得到已使用元素;
提取单元330,用于从所述已使用元素中读取所述句柄,并将所述句柄放入所述可读集合中;
处理单元340,在监测到所述可读集合的句柄对应的客户端需要发送数据的情况下,接收所述客户端发送的数据。
在本申请具体的实施例中,在监测到可读集合的句柄对应的客户端需要发送数据的情况下,处理单元340具体用于:在客户端对应的句柄在连接队列中,且客户端对应的句柄在可读集合中的情况下,接收客户端发送的数据。
应理解,客户端可能仅仅向VCI装置发送了连接请求,而未向VCI装置发送数据,因此,处理单元340在确定与VCI装置建立连接的客户端之后,还需要进一步确定向VCI装置发送数据的客户端。还应理解,客户端可能由于网络原因或者距离问题,使得VCI装置无法接收到客户端发送的连接请求,此时连接队列中与该客户端对应的元素将从已使用状态转换为未使用状态,因此,处理单元340在确定可读集合中存在客户端对应的句柄的基础上,还需进一步确定该客户端与VCI装置之间的通信链路正常,即连接队列中存储有该客户端对应的句柄。
在本申请具体的实施例中,在将所述句柄放入所述可读集合中之后,处理单元340还用于:在监测到客户端未发送数据的情况下,将客户端对应的句柄从所述可读集合中清除。
在一更具体的实施例中,处理单元340利用select函数监测可读集合的句柄对应的客户端是否向VCI装置发送数据。具体的,处理单元340依次对可读集合中的句柄对应的客户端进行监测,若在预设时长内未监测到客户端向VCI装置发送数据,则处理单元340从可读集合中将该客户端对应的句柄清除,使得可读集合存储有向VCI装置发送了数据的客户端对应的句柄。
在本申请具体的实施例中,在接收客户端发送的数据之后,处理单元340还用于:在数据不为空的情况下,对数据进行处理,从而发送给目标汽车;或者,在数据为空的情况下,将客户端对应的句柄从可读集合中清除,并关闭已使用元素中的句柄以及将已使用元素设置为未使用元素。
在一更具体的实施例中,VCI装置可以利用recv函数读取客户端发送的数据,并根据recv函数的返回值,确定数据是否为空,其中,在recv函数的返回值大于0的情况下,VCI装置对接收到的数据进行解析,并将解析后的数据发送给目标汽车的OBD系统;在recv函数的返回值小于或者等于0的情况下,VCI装置将该客户端对应的句柄从可读集合中清除,并将该客户端对应的已使用元素设置为未使用元素,然后关闭连接队列中该客户端对应的句柄,从而释放网络空间以及节省内存空间。
应理解,在汽车诊断过程中,可能由于客户端与VCI装置之间的通信网络出现问题,例如,客户端与VCI装置的距离过远或者WIFI网络不稳定等等,导致客户端向VCI装置发送的数据异常,因此当VCI接收到客户端发送的数据之后,还需要进一步对数据进行相关处理,从而保证VCI将正常的数据发送给目标汽车的OBD系统。
在本申请具体的实施例中,汽车故障诊断仪与VCI通过WIFI或者蓝牙进行无线通信,VCI与目标汽车通过OBD接口进行有线通信。
需要说明的,汽车故障诊断仪中的客户端与VCI装置之间可以通过WIFI连接,也可以通过通用串行总线(Universal Serial Bus,USB)连接,还可以通过蓝牙进行连接等等,此处不作具体限定。另外,VCI装置与目标汽车之间可以通过OBD接口连接,也可以通过总线进行连接等等,此处不作具体限定。
为了简便陈述,本实施例并没有对VCI装置与客户端之间的具体通信过程展开详细描述,具体请参见图3至图5及其相关实施例。
上述VCI装置中,当VCI装置中的获取单元接收到汽车故障诊断仪的客户端发送的连接请求时,确定单元利用连接队列将请求连接的客户端句柄进行存储,然后再由提取单元将队列中保存的客户端句柄加入可读集合中,最后处理单元通过监测可读集合中的句柄所对应的客户端是否向VCI装置发送数据,从而接收到客户端发送的数据,并对数据进行相应的处理后,发送给目标汽车。从而实现了利用1个VCI装置并发处理多个客户端,极大地提高了汽车诊断效率。
参见图7,图7是本申请提供的另一种VCI装置的结构示意图。VCI装置通常包括处理器410、通信接口420以及存储器430,其中,处理器410、通信接口420以及存储器430通过总线440进行耦合。其中,
处理器410可以是中央处理器(Central Processing Unit,CPU),通用处理器(General Purpose Processor,GPP)、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件(Programmable LogicDevice,PLD)、晶体管逻辑器件、硬件部件或者其任意组合。处理器410可以实现或执行本申请公开内容所描述的各种示例性的方法。具体的,处理器410读取存储器430中存储的程序代码,并与通信接口420配合执行上述VCI装置与多客户端的通信方法中的部分或者全部步骤,例如,图3示出的S101至S104。
通信接口420可以为有线接口或无线接口,用于与其他模块或设备450进行通信,例如,汽车OBD接口,汽车诊断仪的客户端等等。其中,有线接口可以是以太接口、控制器局域网络接口、局域互联网络(Local Interconnect Network,LIN)以及FlexRay接口,无线接口可以是蜂窝网络接口或使用无线局域网接口等。
存储器430可以包括易失性存储器,例如随机存取存储器(Random AccessMemory,RAM);存储器430也可以包括非易失性存储器(Non Volatile Memory),例如只读存储器(Read Only Memory,ROM)、快闪存储器、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid State Drive,SSD),存储器430还可以包括上述种类的存储器的组合。存储器430可以存储有程序代码以及程序数据。其中,程序代码由上述图6中VCI装置的部分或者全部单元的代码组成,例如,获取单元310的代码、确定单元320的代码、提取单元330的代码以及处理单元340的代码等等。程序数据可以是上述图6中VCI装置在运行过程中产生的组成,例如,连接请求、队列数据、句柄数据以及诊断数据等等。
总线440可以是控制器局域网络(Controller Area Network,CAN)或其他实现车内各个系统或设备之间互连的内部总线。所述总线440可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
其中,处理器410通过调用存储器430中存储的程序代码执行以下步骤:
处理器410接收汽车故障诊断仪中的客户端发送的连接请求,其中,所述连接请求包括所述客户端的句柄;
处理器410将所述句柄放入连接队列的未使用元素中,从而得到已使用元素;
处理器410从所述已使用元素中读取所述句柄,并将所述句柄放入所述可读集合中;
处理器410在监测到所述可读集合的句柄对应的客户端需要发送数据的情况下,接收所述客户端发送的数据。
应当理解,VCI装置可能包含相比于图7展示的更多或者更少的组件,或者有不同的组件配置方式。
上述VCI装置中,处理器410通过通信接口420获取客户端发送的连接请求,并将客户端的句柄存储到连接队列中;然后通过遍历连接队列,将已使用元素中保存的句柄加入到可读集合中;然后再对可读集合进行监测,当监测到客户端向VCI发送数据时,通过通信接口420接收数据,若处理器410接收到数据不为空,则处理器410通过通信接口420将数据发送给目标汽车。可以看出,通过上述VCI装置可以,进而极大地提高了诊断软件漏洞的处理效率。
为了简便陈述,本实施例并没有对VCI装置与客户端之间的具体通信过程展开详细描述,具体请参见图3至图5及其相关实施例。
本申请还提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,当计算机程序被硬件(如,处理器)执行时,以实现上述VCI装置与多客户端的通信方法中的部分或全部步骤。
本申请还提供了一种计算机程序产品,当计算机程序产品被计算机读取并执行时,以实现上述VCI装置与多客户端的通信方法中的部分或全部步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、存储盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如,固态存储盘(Solid State Disk,SSD))等。在所述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,也可以通过其它的方式实现。例如以上所描述的装置实施例仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可结合或者可以集成到另一个系统,或一些特征可以忽略或不执行。另一点,所显示或讨论的相互之间的间接耦合或者直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例的方案的目的。
另外,在本申请各实施例中的各功能单元可集成在一个处理单元中,也可以是各单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。所述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质例如可包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或光盘等各种可存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种VCI装置与多客户端的通信方法,其特征在于,包括:
车辆通信接口VCI装置接收汽车故障诊断仪中的客户端发送的连接请求,其中,所述连接请求包括所述客户端的句柄;
将所述句柄放入连接队列的未使用元素中,从而得到已使用元素;
从所述已使用元素中读取所述句柄,并将所述句柄放入所述可读集合中;
在监测到所述可读集合的句柄对应的客户端需要发送数据的情况下,接收所述客户端发送的数据。
2.根据权利要求1所述的方法,其特征在于,所述接收所述客户端发送的数据包括:
在所述客户端对应的句柄在所述连接队列中,且所述客户端对应的句柄在所述可读集合中的情况下,接收所述客户端发送的数据。
3.根据权利要求1或2所述的方法,其特征在于,在所述将所述句柄放入所述可读集合中之后,所述方法还包括:
在监测到所述客户端未发送数据的情况下,将所述客户端对应的句柄从所述可读集合中清除。
4.根据权利要求3所述的方法,其特征在于,在所述接收所述客户端发送的数据之后,所述方法还包括:
在所述数据不为空的情况下,对所述数据进行处理,从而发送给所述目标汽车;或者,
在所述数据为空的情况下,将所述客户端对应的句柄从所述可读集合中清除,并关闭所述已使用元素中的句柄以及将所述已使用元素设置为所述未使用元素。
5.根据权利要求1至4任一权利要求所述的方法,其特征在于,所述汽车故障诊断仪与所述VCI装置通过无线上网WIFI或者蓝牙进行无线通信,所述VCI装置与所述目标汽车通过车载自动诊断OBD接口进行有线通信。
6.一种VCI装置,其特征在于,包括:
获取单元,用于接收汽车故障诊断仪中的客户端发送的连接请求,其中,所述连接请求包括所述客户端的句柄;
确定单元,用于将所述句柄放入连接队列的未使用元素中,从而得到已使用元素;
提取单元,用于从所述已使用元素中读取所述句柄,并将所述句柄放入所述可读集合中;
处理单元,在监测到所述可读集合的句柄对应的客户端需要发送数据的情况下,接收所述客户端发送的数据。
7.根据权利要求6所述的装置,其特征在于,在监测到所述可读集合的句柄对应的客户端需要发送数据的情况下,所述处理单元具体用于:
在所述客户端对应的句柄在所述连接队列中,且所述客户端对应的句柄在所述可读集合中的情况下,接收所述客户端发送的数据。
8.根据权利要求6或7所述的装置,其特征在于,在所述将所述句柄放入所述可读集合中之后,所述处理单元还用于:
在监测到所述客户端未发送数据的情况下,将所述客户端对应的句柄从所述可读集合中清除。
9.根据权利要求8所述的装置,其特征在于,在所述接收所述客户端发送的数据之后,所述处理单元还用于:
在所述数据不为空的情况下,对所述数据进行处理,从而发送给所述目标汽车;或者,
在所述数据为空的情况下,将所述客户端对应的句柄从所述可读集合中清除,并关闭所述已使用元素中的句柄以及将所述已使用元素设置为所述未使用元素。
10.一种VCI装置,其特征在于,所述装置包括:处理器、通信接口以及存储器;所述存储器用于存储指令,所述处理器用于执行所述指令,所述通信接口用于在所述处理器的控制下与其他设备进行通信,其中,所述处理器执行所述指令时实现权利要求1至5任一项权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010030605.0A CN111212483A (zh) | 2020-01-14 | 2020-01-14 | 一种vci装置与多客户端的通信方法及vci装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010030605.0A CN111212483A (zh) | 2020-01-14 | 2020-01-14 | 一种vci装置与多客户端的通信方法及vci装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111212483A true CN111212483A (zh) | 2020-05-29 |
Family
ID=70786102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010030605.0A Pending CN111212483A (zh) | 2020-01-14 | 2020-01-14 | 一种vci装置与多客户端的通信方法及vci装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111212483A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120213205A1 (en) * | 2011-02-17 | 2012-08-23 | Clear Wireless, Llc | System and method for providing multi network connectivity |
CN103096168A (zh) * | 2012-12-25 | 2013-05-08 | 四川九洲电器集团有限责任公司 | 一种基于iptv机顶盒的数据通信并行处理方法 |
CN104254138A (zh) * | 2013-06-25 | 2014-12-31 | 深圳市易普森科技有限公司 | 一种蓝牙排队方法 |
CN205302255U (zh) * | 2015-12-24 | 2016-06-08 | 北京三快在线科技有限公司 | 蓝牙打印机及蓝牙打印系统 |
CN106571076A (zh) * | 2016-11-02 | 2017-04-19 | 深圳市元征科技股份有限公司 | 车辆模拟诊断教学装置、方法及系统 |
CN108427405A (zh) * | 2018-04-13 | 2018-08-21 | 深圳新动力教育科技有限公司 | 一种支持多用户操作的汽车实时诊断代理及其数据处理方法 |
-
2020
- 2020-01-14 CN CN202010030605.0A patent/CN111212483A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120213205A1 (en) * | 2011-02-17 | 2012-08-23 | Clear Wireless, Llc | System and method for providing multi network connectivity |
CN103096168A (zh) * | 2012-12-25 | 2013-05-08 | 四川九洲电器集团有限责任公司 | 一种基于iptv机顶盒的数据通信并行处理方法 |
CN104254138A (zh) * | 2013-06-25 | 2014-12-31 | 深圳市易普森科技有限公司 | 一种蓝牙排队方法 |
CN205302255U (zh) * | 2015-12-24 | 2016-06-08 | 北京三快在线科技有限公司 | 蓝牙打印机及蓝牙打印系统 |
CN106571076A (zh) * | 2016-11-02 | 2017-04-19 | 深圳市元征科技股份有限公司 | 车辆模拟诊断教学装置、方法及系统 |
CN108427405A (zh) * | 2018-04-13 | 2018-08-21 | 深圳新动力教育科技有限公司 | 一种支持多用户操作的汽车实时诊断代理及其数据处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108886479B (zh) | 网络质量评估方法、装置、网络检测设备及可读存储介质 | |
CN107848522B (zh) | 用于将诊断命令传输至交通工具的系统和方法 | |
CN108107875B (zh) | 一种汽车诊断方法、装置和车辆通讯接口 | |
CN105282209B (zh) | 车辆用网络系统和其中异构通信控制器的数据传输方法 | |
US11514731B2 (en) | Method and system for remote vehicle diagnostics | |
CN111538312B (zh) | 车辆远程诊断方法、系统、设备连接器及车辆连接器 | |
US10789114B2 (en) | Multiple automotive multi-core processor error monitoring device and method | |
CN106970609A (zh) | 车辆诊断盒的诊断方法及车辆诊断盒 | |
CN111106989B (zh) | 车辆can总线协议确定方法及装置 | |
CN115396529A (zh) | 多通道通信方法、装置、终端设备及存储介质 | |
CN112927392A (zh) | 一种通信方法、车辆通信接口装置及可读存储介质 | |
CN112202884A (zh) | 一种车辆连接接口装置数据传输方法及相关设备 | |
CN111212483A (zh) | 一种vci装置与多客户端的通信方法及vci装置 | |
CN112702204A (zh) | 设备监测方法、装置、服务器和存储介质 | |
JP5696685B2 (ja) | 車載通信システム、車載通信システムの通信異常監視方法、及び車載通信システムの通信異常監視プログラム | |
CN116886490A (zh) | 服务器巡检方法、装置及计算机可读存储介质 | |
CN111143225B (zh) | 一种汽车诊断软件的漏洞处理方法和相关产品 | |
CN111880509B (zh) | 一种国六发动机诊断支持与诊断就绪状态解析方法和装置 | |
CN115048272A (zh) | 容器监控处理方法、装置、宿主机、系统、存储介质及程序产品 | |
CN114442590A (zh) | 车辆诊断方法、设备、诊断通信装置、服务器及存储介质 | |
JP6633157B1 (ja) | 検査システム | |
KR101712370B1 (ko) | 에러 패킷 분석을 지원하기 위한 이더넷 장치 및 시스템 | |
CN112769889B (zh) | 服务数据的推送方法、装置、存储介质以及电子装置 | |
CN117872843A (zh) | 车辆域控制器的处理方法、装置、存储介质及车辆 | |
CN117544473A (zh) | 系统业务诊断方法、装置、系统、电子设备及存储介质 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200529 |
|
RJ01 | Rejection of invention patent application after publication |