惠州seo建站,谷歌搜索引擎镜像入口,中国企业在线网,百度网站改版看此贴前您需要掌握的技能或知识#xff1a;1. 有FSX或FS2004并正确安装了FSUIPC 2. 具备一定的C语言理解能力#xff0c;C语言是一切高级语言的基础#xff0c;单片机主要也用的C语言。 3. 掌握以下几种编程语言之一即可#xff1a; VC\VB\C#\DELPHI\JAVA\CMFC\.NET版的C或…看此贴前您需要掌握的技能或知识1. 有FSX或FS2004并正确安装了FSUIPC 2. 具备一定的C语言理解能力C语言是一切高级语言的基础单片机主要也用的C语言。 3. 掌握以下几种编程语言之一即可 VC\VB\C#\DELPHI\JAVA\CMFC\.NET版的C或VB本文以VB为例因为相对而言上位机的编写VB比较容易当然FSUIPC_SDK中也包含了汇编但个人不建议使用汇编虽然汇编代码效率高但非常难以理解如果你是非常N的硬件工程师可能你会选择汇编单片机也可用汇编。 4. 单片机与PC机串口通信原理这个是最基本的单片机和PC的通讯方式实际上因为速度慢已经过时但足够FS用事实上USB更好本文没有用USB因为USB协议很复杂而且不是每款单片机都支持USB。需要注意的地方1. FSUIPC_SDK的文件中指出VB不是主要用的语言如果你会C#的话建议你用那个语言将来可以和PMDG的SDK衔接起来。 2. 过去PMDG也是走的FSUIPC接口但现在好像不是了所以想控制PMDG的飞友还需再下功夫我也在下功夫 3. 看完本文后你可能不想买摇杆了或者你可能感觉买摇杆亏了这都是正常现象你需要知道的是摇杆的物理结构设计也是很辛苦的所以并不亏。如果你只想DIY个摇杆那么MJOY16是你不二选择
老毛子开发功能相当强大用AVR单片机建议用ATMEGA16L的虚拟USB技术相当于直接模拟出了游戏控制器别的游戏也能用而且不需要你明白什么语言只要焊接技术过硬、会向单片机烧程序即可。本文适合人群想DIY驾驶舱面板、开关或全套驾驶舱的高水准发烧友。一、什么是FSUIPC在FS2004时代FSUIPC是所有高水平插件的接口有人也说它是模块或者外挂程序从安装上看FSUIPC就是一个很小的DLL文件但它很重要没有它很多插件工作不了这个现象延续到了FSX时代但FSX时代官方提出了新的概念就是SimConnect这个东西使FSUIPC不再那么重要了因为插件可以走那个接口了但我们还是要装FSUIPC因为它还有灵活定义摇杆的功能总之FSUIPC功能非常强大我们是在用它的最基本且重要的功能。二、简单的原理你可能觉得不简单想通过硬件来控制FS一个方式就是用游戏控制器而另外的方式就是通过接口连接到FS我们这里用FSUIPC是因为FSUIPC相对简单而后者的结构写指令主要是先用单片机识别开关状态--单片机将开关状态调制成便于串口传送的格式--单片机用串口发送给电脑--电脑上位机解读串口发来的数据并提取开关状态--电脑上位机将开关状态写入FSUIPC对应偏移地址的内存中--FSUIPC向FSX发送相应指令--FSX相应的开关发生变化读指令FSUIPC读取FSX相应的信息到FSUIPC相应的偏移地址的内存中主要用于MCP的数码管读取不过它很强大甚至包括飞机型号都能读--由上位机完成读取FSUIPC的相应偏移地址的内存中的FS信息--上位机将该信息调制成适合串口传送的格式--单片机收到并解调该信息--单片机控制相应的硬件显示该信息。三、请到官方链接http://www.schiratti.com/dowson.html下载FSUIPC_SDK
解压后你会发现大概是这样的你惊喜地发现里面有个EXE文件没错你可以打开它试一试然后打开FSX随便加载个机模机场进游戏。
//-----------------------------------------------------------------FSInterrogate2std.exe关于它的作用1.找到你想完成的指令在FSUIPC的偏移地址只有知道了该地址你才可以知道该对那里进行操作。 2.知道该怎么赋值、达到什么效果。本文以控制FD飞行指挥仪开关为例打开
FSInterrogate2std.exe有一个About的提示直接OK忽略掉不是什么重要信息版权啊什么的 然后你会看到主页面是个大表格很简单左侧第一列即为偏移地址后面的是相关信息。我们得到相关信息偏移地址2EE0、变量类型是U32(一般理解为unsigned int 32)、SIZE4直接翻译是尺寸大家意会即可、READ/WRITE代表可读可写 但我们还是不知道怎么赋值左下单击Interrogate步骤1 左上单击Setup Fields步骤2在表格中找到2EE0项步骤3此时如果你没开FSX把FSX打开并随意加载一个有FD的机模随便一个机场进游戏本文以默认321为例一般默认状态下FD是关闭的执行步骤4点击Read Buffer1
32bit Buffer1显示0 这就意味着FSUIPC的2EE0偏移地址中的32位数据为0时对应FSX中的FD是关闭状态我们再切入FSX手动把FD点亮再次执行步骤4同理我们会发现FD开启时对应的32位数据是1这时候我们就知道该怎么控制FSUIPC去控制FSX了。//------------------------------------------------------------接下来我们开始上位机的编写我用的环境是VB6.0没错就是这个很老的版本解压UIPC_SDK_VisualBasic.zip看一下FSUIPC的帮助文档(readme)从中我们可以看出不管使用任何语言都是基本一个套路FSUIPC_Initialization()初始化 FSUIPC_Open()开 FSUIPC_Read()/Write() 读或写 FSUIPC_Process()这个是每次操作读或写后必须要经过的过程 FSUIPC_Close()在你关闭上位机是顺便要关掉FSUIPC至于其他部分相当于SDK中写好的驱动大家不懂也无伤大雅当然明白更好。然后再进一层目录打开.vbp文件这是工程文件相当于官方例程点直接运行此时应该不会报错不管你开不开FSX如果你报错了说明VB软件有问题或者别的有问题。如果你开了FSX此时对话框中应该显示你FSX中的虚拟时间FSUIPC版本FS版本由此可知该例程以读为主所以本文没有赘述有关读的操作有兴趣的同学直接读懂例程部分即可帮助文档中给出了获取飞机型号的代码我们来练习一下以复制粘贴为主 首先在窗口中拖出一个TEXT框Public Function GetAircraftTitle(ByRef AircraftTitle As String) As Boolean。。。。。End Function这部分代码直接复制到整篇代码的尾部即可它是一个函数我们在其他地方调用它If GetAircraftTitle(ACTitle) Thendo whatever with the result passed back in ACTitleText1.Text ACTitle ‘这部分是需要添加的用于在窗口显示机型信息Else* display/process the error message based back in ACTitleEnd If而这部分代码需要放在 Private Sub Timer1_Timer() 中插入到End Sub之前即可运行正常//-----------------------------------------------------------------------------编辑我们自己的代码段是照猫画虎的过程If FSUIPC_Write(H2EE0, 4, VarPtr(fd_status), dwResult) ThenIf FSUIPC_Process(dwResult) ThenElseEnd IfEnd If我们手动对fd_status赋值看一下FSX的变化正常进入下一步/阶段//----------------------------------------------------------------------------------串口的数据处理掌握串口传输数据原理是每个硬件工程师最基本的要求为方便理解本文只涉及很简单的应用不包含校验的复杂过程。首先定义数据包的基本格式FA fd_status(0/1) FB 简单的说就是 FA 00 FB 或 FA 01 FB然后我们只讲一下思路就是先识别FA然后显然FA之后的数就应该赋值给fs_status赋值到什么时候结束呢识别出FB的时候。具体实现方式本文不再细讲相关电子论坛会有完整的原理解释有需要的同学请研读我提供的代码不懂可以百度或跟帖然后是调试过程该过程使用了串口调试助手和虚拟串口通道本文结尾附件出可下载也可自行百度下载别的版本。打开串口调试助手Porthelper.exe将波特率与VB中匹配COM口选虚拟桥的一端然后VB上配置成另一端即可。
选择HEX发送发送窗口输入 FA 00 FB 或 FA 01 FB 并点击发送观察FSX变化正常这时你用鼠标点FD应该是无效的上位机会不断地刷FD的状态所以这样才能保证将来硬件与软件的同步。 //-------------------------------------------------------------------注意这个选项关于MSCOMM1的它默认是0注串口调试助手是免费软件版权归原作者所有。鉴于本帖篇幅有点长我决定对下位机另开一贴同时也防止本帖沉掉相信版主应该没意见吧。//--------------------------------------------------------------------------