免费获取
|
论文天下网
|
原创毕业论文
|
论文范文
|
论文下载
|
计算机论文
|
论文降重
|
论文排版
|
外文翻译
|
免费论文
|
开题报告
|
心得体会
|
全站搜索
当前位置:
论文天下网
->
免费论文
->
电子通信
免费毕业论文--基于网络的虚拟仪器测试系统(十)
<header><waveform data block><nl>
举个例子:<header>=#800002048 ”#8”会从头部去掉,而留下数值部分,表示波形数据块的字节的个数。该参数是会变的(根据指令:waveform:points来设置数据点的采样的个数)。从示波器中读取数据直至读回结束符为止。下面给出了读取引导数据和波形数据的部分代码:
ViStatus error;
viPrintf(/*oscillograph*/m_Session,":ACQ:COMPLETE 100\n");
viPrintf(/*oscillograph*/m_Session,":wave:points 2000\n");
viPrintf(/*oscillograph*/m_Session,":DIGITIZE %s\n",osciset.m_Channel);
//************************************preamble的采集***************************************
viPrintf(/*oscillograph*/m_Session,":waveform:preamble?\n"); error=viScanf(/*oscillograph*/m_Session,"%f,%f,%f,%f,%f,%f,%f,%f,%f,%f\n",&preamble[0],&preamble[1],&preamble[2],&preamble[3],&preamble[4],&preamble[5],&preamble[6],&preamble[7],&preamble[8],&preamble[9]);
if(error!=VI_SUCCESS)
{error_handler(/*oscillograph*/m_Session,error);return;}
//************************************数据点的采集部分**************************************
//利用字符转换符和viScanf函数来进行读取数据并定义一个无符号的字符数组来对读//取的数据进行存储--随后进行数据
//**************************************的转换和数据的处理---2005/5/17
viPrintf(/*oscillograph*/m_Session,":waveform:data?\n");
unsigned char temp[2000];
for(int i=0;i<2000;i++)
{ error=viScanf(/*oscillograph*/m_Session,"%c",&temp[i]);
if(error!=VI_SUCCESS)
{error_handler(/*oscillograph*/m_Session,error); return;}
}
//*****************************************数据的转换*****************************************
int j=0;
for(i=18;i<2000;i+=20,j++)
{ temp[j]=(int)temp[i];
n++;//数据的个数 }
数据采集这一块我花了不少的时间,不断的对指令进行测试,但是以为只要通过:waveform:data?指令然后进行读取就OK了!!然而,查看资料才晓得示波器采集回来的数据是想前面所示的那样,有头部数据以及二进制数据块,这就把我给难住了!二进制数据该怎么读呢??从安捷伦网站上下载下来的资料中虽然提供了怎样进行波形数据的读取的方法,但它并没有给出在VISA情况下的数据的读取的方法。但是它也给了我一定的提示:头部给出了数据块的字节的个数,既然是字节,也就是一个字符。那么这样的话就可以读取数据了。然后经过我的测试,一切OK!我好高兴~~~~~
读回数据之后,就是数据的显示问题。至于这个我采用了别人给我的一个类,通过该类我可以比较轻松的进行数据的显示工作。我只要将读回的波形数据进行处理,并将数据传递给给类的一个数组就可以了!!
//*****************************************数据的转换*****************************************
int j=0;
for(i=18;i<2000;i+=20,j++)
{ temp[j]=(int)temp[i];
n++;//数据的个数 }
//*****************************************数据存储*******************************************
for(int k=0;k<n;k++)
{ m_Static.wave_data[k]=(((float)temp[k]-preamble[9])*preamble[7]+preamble[8])*m_Y;//这里使用Y
} Invalidate();//这个用于屏幕画面的刷新
两大问题的解决,示波器也就基本上可以告一个段落了!!其他的功能的实现相对来说要容易的些!
下面是示波器显示窗口部分初始化代码:
//*******下面是另外一种方法---更方便控制示波器的显示的尺度,也就是在对话框模板上//添加一个静态控件,并调节它的尺度到你需要的范围,并最好是更改一下它的ID,然//后通过下列语句来进行创建显示
CRect m_nRect;
CStatic* pStatic=(CStatic*)GetDlgItem(IDC_STATIC_SHOW);
pStatic->GetClientRect(
首页
上一页
7
8
9
10
11
12
13
下一页
尾页
10
/14/14
相关论文
上一篇
:
免费毕业论文--接入网网管解决方案
下一篇
:
免费毕业论文--ATM综合接入系统
推荐论文
本专业最新论文
Tags:
免费
毕业论文
基于
网络
虚拟
仪器
测试系统
2010-03-19 10:38:38【
返回顶部
】
相关栏目
自动化相关
计算机论文
工程管理论文
法律论文
医学论文
人力资源
电子专业
电气工程
英语论文
行政管理
电子商务
社科文学
教育论文
物流专业
金融专业
财务管理
会计专业
化学化工材料科学
电子通信
环境科学
经济类
机械模具类
报告,总结,申请书
其他专业论文