刚写的一个四轴姿态监控的上位机软件,版本V1.0。【恢复】
本来我是在四轴上加一个液晶显示器来显示姿态情况的,但飞起来时总不能老看着它啊。于是写了这个简单的上位机软件。只是V1.0版,功能只是姿态数据用无线方式上传至计算机,由计算机显示。功能有待改进。
准备下一版本显示出偏角及各轴加速度值。
下一版本2D图形显示飞行姿态。
再下一版本3D图形显示飞行姿态。
编译环境:VC++ 6.0.
运行时抓图:
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_433569.jpg
(原文件名:无标题.jpg)
以上数值为模拟出来的。
附件:
1:四旋翼飞行器姿态监控终端V1.0(没在其它机器上测试,故运行不了请装VC6)
点击此处下载 ourdev_433549.rar(文件大小:6K) (原文件名:OUR2M3K.rar)
原代码:
//串口初始化
m_com.SetCommPort(1);
m_com.SetInputMode(1);
m_com.SetInBufferSize(1024);
m_com.SetOutBufferSize(512);
m_com.SetSettings("9600,n,8,1");
if(!m_com.GetPortOpen())
m_com.SetPortOpen(TRUE);
m_com.SetRThreshold(1);
m_com.SetInputLen(0);
m_com.GetInput();
//串口初始化终
//数据处理
void COUR2M3KDlg::OnOnCommMscomm2()
{
// TODO: Add your control notification handler code here
LONG len,k;
//定义数据枚举
enum our2m3kdata{data_rx='d',data_ry,data_rz,data_ax,data_ay,data_az,data_rv,data_av,data_temp};
COleSafeArray data;
BYTE rxdata;
//初始化数据变量
if(m_com.GetCommEvent()==2)
{
data=m_com.GetInput();
len=data.GetOneDimSize();
//执行数据类型转换.
for(k=0;k<len;k++)
data.GetElement(&k,rxdata+k);
//执行数据处理。
for(k=0;k<len;k++)
{
if(rxdata==(BYTE)data_rx)
{
m_rx="";
for(long rol=1;rol<5;rol++)
m_rx+=rxdata;
}
if(rxdata==(BYTE)data_ry)
{
m_ry="";
for(long rol=1;rol<5;rol++)
m_ry+=rxdata;
}
if(rxdata==(BYTE)data_rz)
{
m_rz="";
for(long rol=1;rol<5;rol++)
m_rz+=rxdata;
}
if(rxdata==(BYTE)data_ax)
{
m_ax="";
for(long rol=1;rol<5;rol++)
m_ax+=rxdata;
}
if(rxdata==(BYTE)data_ay)
{
m_ay="";
for(long rol=1;rol<5;rol++)
m_ay+=rxdata;
}
if(rxdata==(BYTE)data_az)
{
m_az="";
for(long rol=1;rol<5;rol++)
m_az+=rxdata;
}
if(rxdata==(BYTE)data_rv)
{
m_rv="";
for(long rol=1;rol<5;rol++)
m_rv+=rxdata;
}
if(rxdata==(BYTE)data_av)
{
m_av="";
for(long rol=1;rol<5;rol++)
m_av+=rxdata;
}
if(rxdata==(BYTE)data_temp)
{
m_temp="";
for(long rol=1;rol<3;rol++)
m_temp+=rxdata;
m_temp+=".";
for(;rol<5;rol++)
m_temp+=rxdata;
}
UpdateData(FALSE);
}
}
}
2:测试时用的模拟器C文件。(针对M8,与计算机串口联接)XTL=8000000HZ
/******************************
编译环境:GCC。
******************************/
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
void port_init(void)
{
PORTB = 0x00;
DDRB = 0xFF;
PORTC = 0x00;
DDRC = 0x7F;
PORTD = 0x00;
DDRD = 0xFF;
}
void usart_init(void)
{
UCSRB = 0x00;
UCSRA = 0x00;
UCSRC = _BV(URSEL) | 0x06;
UBRRL = 0x33;
UBRRH = 0x00;
UCSRB = 0x08;
}
void init(void)
{
cli();
port_init();
usart_init();
}
void sentdata(char ch,long data)
{
//前导符
while ( !( UCSRA & (1<<UDRE)) );
UDR = 0xa5;
while ( !( UCSRA & (1<<UDRE)) );
UDR = 0x5a;
while ( !( UCSRA & (1<<UDRE)) );
UDR = 5;
//数据负载
while ( !( UCSRA & (1<<UDRE)) );
UDR = 'd'-1+ch;
while ( !( UCSRA & (1<<UDRE)) );
UDR = '0'+(data/1000);
while ( !( UCSRA & (1<<UDRE)) );
UDR = '0'+(data%1000/100);
while ( !( UCSRA & (1<<UDRE)) );
UDR = '0'+(data%100/10);
while ( !( UCSRA & (1<<UDRE)) );
UDR = '0'+(data%10);
_delay_ms(6);
}
int main(void)
{
init();
while(1)
{
sentdata(1,5468);
sentdata(2,5689);
sentdata(3,5468);
sentdata(4,5689);
sentdata(5,5468);
sentdata(6,5689);
sentdata(7,5468);
sentdata(8,5689);
sentdata(9,2595);
_delay_ms(100);
sentdata(1,4564);
sentdata(2,4790);
sentdata(3,6748);
sentdata(4,4646);
sentdata(5,8342);
sentdata(6,1567);
sentdata(7,1587);
sentdata(8,3786);
sentdata(9,2837);
_delay_ms(100);
}
return 0;
}
本贴被 microyao 编辑过,最后修改时间:2008-09-28,02:05:04. 8342mV ? 這是用那一種 Sensor 及 ADC ? 正准备测下MMA7260,,可以用上 VC 可以选静态编译,但文件会比较大。 楼上的 我的system32里有那两个文件了 可还是运行不了 要替换吗?
本贴被 kortan 编辑过,最后修改时间:2008-10-23,20:39:54. 用那个软件看了我并不缺动态连接库。 我计算机里的那两个文件比较新。依然运行不了。那个小工具挺有用的。 比较一下版本,如果你的版本更旧就替换一下
参考:
http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=1660090&bbs_id=1025
本贴被 jimo 编辑过,最后修改时间:2008-10-24,15:48:30. 点击此处下载 ourdev_466012.rar(文件大小:510K) (原文件名:msvcrt.rar)
不能运行的下载这个文件,把里面的两个动态库解压到c:\windows\system32 楼主,
你现在是动态链接模式,程序拷贝到其他没有装vc 6的机器上无法运行。
你在vc 6 的link选项里面,选择静态链接就可以了。 在两台XP电脑下面也运行不了。打开后什么也不显示。
希望楼主加强一下通用性。资料很有价值。 mark make mark 做監控軟體,可以的話儘量圖形化+數值顯示比較直覺,有時會來不及看數值,用圖表看比較直覺。
可以的話,Log的功能做進去比較方便。
http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_614689N1R0VB.jpg
(原文件名:aerogcs.jpg)
自己在用的... g921002:请教您aerogcs监控软件的编译环境是什么软件?右下的三个不错,是用的什么控件? 回复【16楼】zpwkxg
g921002:请教您aerogcs监控软件的编译环境是什么软件?右下的三个不错,是用的什么控件?
-----------------------------------------------------------------------
BCB6.0 <-- 很舊。但是沒錢買新版。靜態編譯單一執行檔。
GSM 航空空件 US149,有試用版可下載。
其他如七段顯示用到的iocomp是站上抓的,後來覺得沒啥用,而且買正版的效益不太大,後面release給客戶可能捨棄不用。 这位兄弟的意见很有建设性回复【15楼】g921002
----------------------------------------------------------------------- mark mark 回复【15楼】g921002
做監控軟體,可以的話儘量圖形化+數值顯示比較直覺,有時會來不及看數值,用圖表看比較直覺。
可以的話,log的功能做進去比較方便。
(原文件名:aerogcs.jpg)
引用图片
自己在用的...
-----------------------------------------------------------------------
呀 看你的HDI有VOR和DME,是做来好看的还是真有这个功能? 回复【16楼】zpwkxg
g921002:请教您aerogcs监控软件的编译环境是什么软件?右下的三个不错,是用的什么控件?
-----------------------------------------------------------------------
可以不用现成控件
用PS做好图片用GDI+控制即可,可以做得比较仿真,自已做上位机虚拟仪表不难的 mark mark 不错,楼主再接再厉 000000000mark】
页:
[1]