欢迎来到天天文库
浏览记录
ID:38783607
大小:1.23 MB
页数:9页
时间:2019-06-19
《基于USB半物理仿真平台的实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于USB、Socket和Quest3D的半物理仿真平台的实现钟爱平、魏风波、师光飞摘要:QUEST3D是一款优秀的3D仿真软件,其优秀的实时3D、强大的物理仿真引擎以及图形化的编程界面,使用户在很短的时间内就可以构建出3D展示、漫游等实景仿真程序,但是由于QUEST3D与外部硬件的通信方式比较简单,目前与硬件直接通信的方式只有串口,当构建半物理仿真器时,其与硬件部分的通讯将变得困难。本文提出了一种使用VisualC++编写的通讯中介程序,融合USB总线、Socket套接字通讯,有效解决QUES
2、T3D与硬件的通讯问题,并以此为基础搭建一种虚拟驾驶的半物理仿真器。关键字:仿真、Socket、USB、Abstract:Quest3Disanexcellent 3Dsimulationsoftware,withthe real-time 3Dengine , good graphicprogramming interface, users canbuilda 3D sceneinaveryshortperiodoftime ,suchasvirtualroaming simulation,v
3、irtualshowing program, butthecommunicationmethodtoexternalhardwareinQUEST3D isrelativelysimple, thecurrent way isonly serial,whenconstructinga semi-physical simulator, the communication willbedifficult.Thisarticlepresentsa Visual C++written commun
4、ication mediumprogram , integratsofUSBbus, Socket communication, effectivelysolvethe communicationproblem betweenQUEST3Dandhardware, Baseonthisprogrambuildasemiphysical simulation of virtual driving.KEYWORDS:simulationSocketUSB0、系统构成Quest3d在制作高效、逼真的三
5、维交互式仿真程序中有着不可比拟的优势,但在外设通讯等功能上却显得力不从心。为了弥补quest3d与USB设备通讯功能的不足,采用VisualC++搭桥的方式,通过TCP/IP协议与quest3d通讯,同时通过Cypress公司提供的API函数与USB设备进行通讯,从而实现虚拟平台quest3d与物理平台USB设备之间的通讯,以达到结合两者的优点,以长补短的目的。系统的结构构成如下图所示:图1:半物理仿真平台总体架构通信中介程序与外部设备的通信使用USB总线,与三维仿真程序的通信使用了TCP/IP
6、协议。三维仿真程序中的客户端必须知道服务器端的IP和端口号才能与之连接,而quest3d在获取本机IP、端口方面并不擅长,因此,由通讯中介程序获取本地IP和端口,通过文本文件与三维仿真程序共享。由于通信中介程序和三维仿真程序分别基于不同的平台构建,本质上是2个独立的程序,为了使三者能构成一个协调的整体,应设置程序的启停顺序,使系统的启停与单一程序没有区别,即通信中介序启动后最小化到系统托盘上,然后创建服务器端,查询USB接口,然后启动三维仿真程序。在退出时,先退出三维仿真程序,之后通信中介程序自
7、动退出。这样,整个系统在启停上成为一个整体。0、QUEST3D中的套接字编程Quest3d目前版本中关于Socket的通信功能并不完备,只能作为TCPClient与已经建立好的TCPServer进行连接。在quest3d中封装好的有关socket通讯的channel有socketaction、socketstring。前者主要用于执行创建客户端的一些命令,如:connect、disconnect、senddata等,后者用于接收服务器端发送来的数据。因为quest3d的程序运行方式是从上到下、从
8、左至右扫描运行的,如果对一个命令不加以限制,将会无限运行下去,造成错误。用这2个channel进行通讯编程时必须与onetime模块配合使用。图2:Quest3d中的程序运行流程socketaction的属性如图3所示,可见执行Connect命令时,需要两个参数:服务器端的IP和端口,仿真程序运行于本机,因此应该使用本机的IP。这两个参数可以事先写入到quest3d的代码中固定下来,但是带来的后果就是程序的可移植性变差,一旦更换电脑或是更改IP地址将导致程序的失效,所以参数应该在程序中动态获取。
此文档下载收益归作者所有