喜欢上模拟飞行有一年多了,自从偶尔看到外国网站上高手DIY硬件后,萌生了自己也DIY一下的热情,于是勉为其难地学习了单片机,编程,折腾了大半年,现在终于出了一点点成果了,发上自己DIY的SAITEK面板,目标是实现NAV COMM ALT HDG VS等数据的显示,修改,切换,当前只完成了显示,革命仍未成功.以后的日子我会慢慢将DIY的过程贴出来,特别了为了让有志于DIY的飞友能了解如何实现,我会尽量将硬件部分描述清楚,在FS2004做硬件外设主要用到了FSUIPC ,FSUIPC提供了所有数据的地址,通过编写接口程序,连接串口发送到单片机就能完成软硬件结合.下面先上一张面板,
哈哈,是不是很简陋,显示用的是字符型液晶LCD1602 ,左上角旋扭为脉冲编码器,通过旋转产生脉冲信号,送到单片机鉴别后就能用来进行频率\数值增减,中间的是旋转开关,通过它实现多路数据输入切换到一个LCD上显示.
来张背面
目前就到这,现在通过切换能显示NAV COMM AP .现在要解决的是修改某个显示数值的问题.有进展我会继续贴图
关于如何读取数据,下面我介绍一下
其实如何找游戏数据很简单.象FS2004,在FUSUIPC作者提供的SDK文档资料里面有很详细的说明.比如说我要读取当前NAV1的频率,查看文档就知道读0X350地址的数据就行.文档名称为:FSUIPC4 Offsets Status.pdf
然后可以利用SDK里面提供的例程,修改成自己的接口程序,比如说我用BCB的,读取一个NAV1就是
if (!FSUIPC_Read(0x0350, 2, &FSUIPC_FS_NAV1, &dwResult)||!FSUIPC_Process()) //读NAV1频率
{
}
sprintf(String, "%x", FSUIPC_FS_NAV1 );
Frequency_Format(String);
FSDATA.dwNav1_ACT=s_adjfreq;
Edit1->Text = FSDATA.dwNav1_ACT;
FSUIPC_Read就是作者提供的读取函数.
这是我做的接口程序
[ 本帖最后由 ppqq 于 2009-7-29 15:56 编辑 ] |