3GO模拟飞行网|3GO Cyber Air Force

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: bargain685LN

飞行控制面板DIY的软件硬件研究与分析

[复制链接]
发表于 2010-6-13 12:42:29 | 显示全部楼层
可惜还是不能解决头顶视野的问题。这个不是FS
 楼主| 发表于 2010-6-17 20:23:13 | 显示全部楼层
好,继续了,上回说到我下一步是要加LED,恩,这次加上了。
1.在单片机程序中,需要占用一下按键或档位的一些IO,所以占用了档位了两个IO,用了MASK 0x3F 来过滤了一下。
2.这次需要与游戏通讯,所以要加上同时运行PC程序App,程序实现了对自动高度和速度的指示。

最后的结果是,实现了一个USB设备,有8个点触,6个档位,2个LED。感觉也差不多够用了噢,呵呵。
至于点触,档位,LED的个数是可以自己调整的(总数不变)。如果买个50块钱现成的板子,自己又会做外壳,这也算可以了。

好的,如果需要更多的功能,比如数码管或1602液晶屏(其实我想不通要这些东东做什么...),
可能IO就不够用了,所以可以考虑下使用外接MCU或辅助芯片。几天后继续更新。

USBPanel_KEY_LED.rar (109.98 KB, 下载次数: 123)
USBPanelApp_KEY_LED.rar (94.54 KB, 下载次数: 127)
发表于 2010-6-18 15:19:53 | 显示全部楼层
还在看Socket部分的代码。
LZ工程里有lua.lib,难道把LUA格式脚本的支持也做进去了?直接读export.lua用来同步通讯协议吗?
发表于 2010-6-21 01:02:54 | 显示全部楼层
虽然看不懂,还是支持一下楼主精神!!
 楼主| 发表于 2010-6-21 13:21:52 | 显示全部楼层
本帖最后由 bargain685LN 于 2010-6-21 13:26 编辑

回复 63# RCtech


    这倒没有,我只是也做个了支持lua的程序而已。好像touchbuddy是直接加进export.lua的,所以理论上你的想法是可行的,只是我没那么做而已。


    话说我感觉socket的部分并不复杂,只是你不细问。
    实现socket的方式用MFC的库(只是在Win上运行的程序,没必要用跨平台的原始库吧...),
    实现上不复杂,我完成这个功能只用了一个晚上而已。(主要是找BUG)
    至今对socket的机制也只知一二而已,实现个功能用不上对理论的东西彻底了解。
发表于 2010-6-21 14:06:42 | 显示全部楼层
Socket我也不想去了解机制,只是我的PC编程水平有限。我平时就用标准C去写固件,对C++掌握得并不熟练,Windows环境下的编程就更累了,主要是很多方法、MFC的类用得不熟,很多概念还不清楚。

我现在用的系统是Win7 x64,所以我的编译环境是Visual Studio.NET 2010。你的环境好像是VC++,所以如果直接移植会出现一些引用文件缺失、语法错误等等现象,因为VS版本中的C++好像语法控制比前作的版本更加严格。

我现在做socket用的是CAsyncSocket类,我不知道VS2010里有没有以前的CSocket类。现在就是因为一些虚析构函数、虚函数在创建的时候没掌握好,搞得编译时报一些错误。

我现在不想换回XP上用VC++环境了。以后我的游戏系统就是Win7 x64,要是回去用旧环境编译好了,移植的时候又称出问题,加在一起的时间不见得就比直接在新版本上调试起来短。
 楼主| 发表于 2010-6-22 14:08:05 | 显示全部楼层
Socket 篇:

如何一步步写个简单的Lock On数据监听程序:
1.我们需要了解,要做的事情很简单,就是写个TCP/IP监听程序,监听本地某端口,以接收游戏的数据。
2.写个Socket服务程序,需要有个Server的Socket,和若干Client的Socket。
3.ServerSocket的只需一个,而在我们案例中,ClientSocket通常只有一个,所以我们在CServerSocket::OnAccept做些处理,让ServerSocket一次只接收一个连接就可以了。
4.CClientSocket::OnReceive处理接收数据,为了Fix CClientSocket关闭的一些工作,我们增加CClientSocket::OnClose的处理。
5.了解这些后,我们开始来建立工程,为了使事件更简单化,我建个Win32控制台程序并选择支持MFC,在VS2008的生成向导中,在MFC支持项打勾。
6.把原来ServerSocket和ClientSocket的头文件和CPP文件加到工程中,肯定编译错误啦。
7.在stdafx.h中,我们加些必要的头文件和宏。
#include <afxsock.h>                // MFC socket extensions
#define MAX_BUFF        2048
#define MYTRACE                printf
8.还是编译错误,把暂时不用的g_frame宏的相关地方注释掉,以后你需要时自己定义,再把一些找不到头文件的地方Fix一下,直到编译通过。
9.相对而言,上面讲解虽然不可能面面俱到,但有些C/C++基础的应该还是可以自己解决的,这都解决不了的话以后的开发估计就不好做了。
10.找到工程的main函数,增加以下处理,这里要注意,AfxSocketInit()是必须的,并且只需执行一次。后面的就没啥可说了...
                if (!AfxSocketInit())
                {
                }else{
                        CSocket* pSocket = new CServerSocket;
                        pSocket->Create(6000);
                        pSocket->Listen();
                        MYTRACE("Server Listen ...");
                        getchar();
                }
最后一句getchar()只是个防退出函数,如果使用单片机的while(1);,多牛的CPU都能顶到100%,所以大家移植时不要什么都没理解就啥都抄噢。               
11.以上就基本完成了监听数据功能,用不着那么复杂。如果你要处理这些数据,注意一下对g_frame宏的处理,大家可以了解一下这三个事件的时机,然后自行处理。
g_frame->OnSocketAccept((LPCVOID)nErrorCode);        //接收到新连接,发生在任务开始时
g_frame->OnSocketClose((LPCVOID)nErrorCode);        //连接主动断开,发生在任务结束时
g_frame->OnServerRecvData(buff);                                //接收数据处理。

DemoSocket.rar (19 KB, 下载次数: 120)
发表于 2010-6-23 02:15:11 | 显示全部楼层
Socket 篇:

如何一步步写个简单的Lock On数据监听程序:
1.我们需要了解,要做的事情很简单,就是写个 ...
bargain685LN 发表于 2010-6-22 14:08



    多谢。down下来看看。不过要想做好这部分,必须要自己先打好C++基础。我知道没有捷径可走,慢慢啃书本吧。
发表于 2010-6-26 16:49:53 | 显示全部楼层
牛人,收藏之
发表于 2010-7-2 15:04:26 | 显示全部楼层
好贴,收藏,备用
发表于 2010-7-5 10:48:26 | 显示全部楼层
lz太强了!!!!
发表于 2010-7-6 19:31:49 | 显示全部楼层
其实吧,我觉得,如果真的想做,但又不是专业的人员,那么倒可以利用现成的东西。就像楼主所说的,其实控制面板说白了就是个改变了形状的键盘,上面可能还有一些轴之类的东西而已。那么我们大可以直接就利用现成的键盘来改装了,至于说想在面板上实现信号输出,那么我们可不可以在面板的输入的时候就输出了?既是:输入信号,同时的就输出显示在面板上了,然后在把信号输入给电脑游戏中……
一个面板几千块,我们如果用个几百块就能实现大部分功能就已经是很不错的了,世上可没有什么完全免费就能做成的事情呀……
发表于 2010-7-6 20:12:46 | 显示全部楼层
回复 72# ruixin385316337


    有的信号可以绕过模拟器软件直接闭环,有的信号必须从模拟软件输出,比如挂载信息。
发表于 2010-7-6 20:21:09 | 显示全部楼层
回复 73# RCtech


    嗯嗯,那到也是,那可能就真的需要从游戏文件中找到这些信息的输出接口,然后再引出来输出……
哈哈!突然想到一个问题,如果显卡刚好支持多屏显示(比如A卡的5系列,我现在在用的就是5770),那么大可以直接编一个小软件,把从LOCK ON的输出模块得到的信息输出到第二个显示屏,hoho!~
发表于 2010-7-6 20:25:21 | 显示全部楼层
我记得以前论坛上也有人出过改装显示器为触摸模式的,要是改成那样,再配以一个软件,可以翻页显示LOCK ON中的一些按钮,然后直接在屏幕上点触控制,如果想要显示一些信息,那么也是一拉一划一点的事情,那岂不是比人家量产出来的控制面板还牛?当然这只是一个美好的设想,楼主继续努力,期待你做出一个不逊色一个赛钛客抢钱东西的好东东,一个小小的面板就要几千块,怨念……
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|3GO模拟飞行网|3GO Cyber Air Force ( 沪ICP备08002287号|沪ICP备14050587号 )

GMT+8, 2024-12-22 17:37

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表