本发明属于车用软件开发,具体涉及一种汽车总线虚拟通道的实现方法及实现系统。
背景技术:
1、为了实现在计算机上模拟各类汽车总线的通信过程,为总线工具提供虚拟硬件支持,使得多款总线工具进程之间可以通过虚拟硬件相连,进行实时通信。在相关车用软件开发技术中,通常是通过编写驱动程序,在系统底层控制虚拟总线的数据传输。
技术实现思路
1、本发明的目的是提供一种汽车总线虚拟通道的实现方法及实现系统。
2、为了解决上述技术问题,本发明提供了一种汽车总线虚拟通道的实现方法,包括:
3、设计单实例服务端进程,启动后通过udp协议监听本地计算机的固定端口;设计多实例客户端进程,启动后分别通过udp协议监听本地计算机的随机端口;客户端进程向服务端进程发送注册请求数据包,服务端进程成功接收注册请求数据包后反馈成功接收信号至客户端进程,客户端进程接收到反馈后则按特定间隔时间向服务端进程发送心跳包,并等待服务端进程对该心跳包的应答;客户端进程向服务端进程发送汽车总线报文。
4、进一步,创建服务端进程的方法包括:
5、所述服务端进程程序启动后尝试创建一个以该程序名称命名的互斥量,如果该互斥量已存在,则创建失败,退出进程程序,否则创建成功,进程程序运行,并在进程程序结束时释放该互斥量;
6、程序启动后监听本地计算机的固定端口,若监听失败,则退出进程程序并释放互斥量。
7、进一步,创建至少一个客户端进程的方法包括:
8、各客户端进程程序启动后分别尝试监听本地计算机的任一随机端口,若监听失败,则尝试监听本地计算机的另一个随机端口,直至监听成功。
9、进一步,所述注册请求数据包包括:客户端进程监听的随机端口号;以及
10、所述心跳包包括:客户端进程监听的随机端口号。
11、进一步,服务端进程设置汽车总线报文的时间戳,包括:
12、服务端进程启动后读取当前系统性能计数器值并存入变量t1;
13、服务端进程收到客户端进程发送的汽车总线报文后,再次读取当前系统性能计数器并存入变量t2;
14、则时间戳t=(t2-t1)/f,其中f为系统性能计数器的频率。
15、进一步,所述服务端进程在启动后,通过udp协议或者tcp协议监听本地计算机的固定端口;以及
16、各客户端进程在启动后,通过udp协议或者tcp协议分别监听本地计算机的随机端口。
17、又一方面,本发明还提供了一种计算机可读存储介质,存储有计算机可读指令,当其由至少一个处理器执行时,使得如前所述的汽车总线虚拟通道的实现方法的程序被执行。
18、第三方面,本发明还提供了一种电子设备,包括:
19、至少一个存储指令的存储器;
20、至少一个处理器,其执行所述指令以使得处理器执行以下操作:
21、创建服务端进程作为虚拟通道的提供者,启动后监听本地计算机的固定端口;
22、创建至少一个客户端进程,各客户端进程分别作为虚拟通道的使用者,启动后分别监听本地计算机的随机端口;
23、客户端进程向服务端进程发送注册请求数据包,服务端进程成功接收注册请求数据包后反馈成功接收信号至客户端进程,客户端进程接收到反馈后则按特定间隔时间向服务端进程发送心跳包,并等待服务端进程对该心跳包的应答;
24、客户端进程向服务端进程发送汽车总线报文,若发送成功,则服务端进程设置该汽车总线报文的时间戳后发回该客户端进程,并修改汽车总线报文的方向属性为发送,同时将此汽车总线报文发送至其余客户端进程,并修改汽车总线报文的方向属性为接收。
25、进一步,创建服务端进程的方法包括:
26、所述服务端进程程序启动后尝试创建一个以该程序名称命名的互斥量,如果该互斥量已存在,则创建失败,退出进程程序,否则创建成功,进程程序运行,并在进程程序结束时释放该互斥量;
27、程序启动后监听本地计算机的固定端口,若监听失败,则退出进程程序并释放互斥量。
28、进一步,创建至少一个客户端进程的方法包括:
29、所述至少一个客户端进程程序启动后尝试监听本地计算机的任一随机端口,若监听失败,则尝试监听本地计算机的另一个随机端口,直至监听成功。
30、所述注册请求数据包包括:客户端进程监听的随机端口号;以及
31、所述心跳包包括:客户端进程监听的随机端口号。
32、进一步,服务端进程设置汽车总线报文的时间戳,包括:
33、服务端进程启动后读取当前系统性能计数器值并存入变量t1;
34、服务端进程收到客户端进程发送的汽车总线报文后,再次读取当前系统性能计数器并存入变量t2;
35、则时间戳t=(t2-t1)/f,其中f为系统性能计数器的频率。
36、第四方面,本发明还提供了一种汽车总线虚拟通道的实现系统,包括:计算机装置,所述计算机装置被配置为执行客户端进程和服务端进程;其中
37、客户端进程,被配置为向服务端进程发送注册请求数据包、按特定间隔时间向服务端进程发送心跳包和向服务端进程发送汽车总线报文;
38、服务端进程,被配置为接收客户端进程发送的注册请求数据包、心跳包和汽车总线报文,以及设置汽车总线报文的时间戳后发回该客户端进程,并修改汽车总线报文的方向属性为发送,同时将此汽车总线报文发送至其余客户端进程,并修改汽车总线报文的方向属性为接收。
39、进一步,所述计算机装置还被配置为创建服务端进程,包括:
40、所述服务端进程程序启动后尝试创建一个以该程序名称命名的互斥量,如果该互斥量已存在,则创建失败,退出进程程序,否则创建成功,进程程序运行,并在进程程序结束时释放该互斥量;
41、程序启动后监听本地计算机的固定端口,若监听失败,则退出进程程序并释放互斥量。
42、进一步,所述计算机装置还被配置为创建至少一个客户端进程,包括:
43、各客户端进程程序启动后尝试监听本地计算机的任一随机端口,若监听失败,则尝试监听本地计算机的另一个随机端口,直至监听成功。
44、进一步,所述注册请求数据包包括:客户端进程监听的随机端口号;以及
45、所述心跳包包括:客户端进程监听的随机端口号。
46、进一步,服务端进程设置汽车总线报文的时间戳,包括:
47、服务端进程启动后读取当前系统性能计数器值并存入变量t1;
48、服务端进程收到客户端进程发送的汽车总线报文后,再次读取当前系统性能计数器并存入变量t2;
49、则时间戳t=(t2-t1)/f,其中f为系统性能计数器的频率。
50、进一步,服务端进程在启动后,通过udp协议或者tcp协议监听本地计算机的固定端口;以及
51、各客户端进程在启动后,通过udp协议或者tcp协议分别监听本地计算机的随机端口。
52、第五方面,本发明还提供了一种计算机程序产品,包括计算机程序或指令,其中在计算机上执行所述计算机程序或指令时,使得计算机能够执行如前所述的汽车总线虚拟通道的实现方法的操作。
53、本发明的有益效果是,本发明的汽车总线虚拟通道的实现方法使得虚拟通道的提供者通过上述方法实现了虚拟通道的多个使用者之间的报文路由和数据收发,从而模拟出报文路由和数据收发在真实网络中的运行机制,实现实时通信,进而实现了实时仿真的需求。
54、本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书以及附图中所特别指出的结构来实现和获得。
55、为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。