上位机编程示例word版本Word下载.docx
《上位机编程示例word版本Word下载.docx》由会员分享,可在线阅读,更多相关《上位机编程示例word版本Word下载.docx(39页珍藏版)》请在冰点文库上搜索。
![上位机编程示例word版本Word下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/be4c1aad-493b-4c2e-b066-52d607dd425a/be4c1aad-493b-4c2e-b066-52d607dd425a1.gif)
获取DRFM板数量
参数
无
返回值
板卡数量
备注
DRFM板对上位机是一个PCI设备,上位机通过两个ID号(VendorID&
DeviceID)识别PCI设备,获取板卡数量实际上是扫描指定ID号的PCI设备数量。
2.DRFM_Open
boolDRFM_Open(intboard_id);
打开板卡
board_id=板卡号
true=成功false=失败
对板卡进行操作前,需要打开板卡;
板卡号可根据DRFM_Board_num返回值确定取值范围,[0,板卡数量);
3.DRFM_Close
intDRFM_Close(intboard_id);
关闭板卡
board_id=板卡号
0=正常非0=异常
对板卡操作完成后,需关闭板卡;
4.DRFM_Load_FPGA
intDRFM_Load_FPGA(intboard_id,char*path);
加载XC6VSX315T芯片FPGA程序
path=加载文件
5.DRFM_Load_9520
intDRFM_Load_9520(intboard_id,char*stp_path,DWORDbaseAddr);
配置AD9520时钟文件
stp_path=时钟文件
baseAddr=基址
6.DRFM_Load_9739
intDRFM_Load_9739(intboard_id,DWORDbaseAddr);
配置AD9739
7.DRFM_Read_Memory
voidDRFM_Read_Memory(intboard_id,intBar,DWORDaddr,DWORD*data,intlength);
读XC5VLX30T寄存器
bar=BAR空间
addr=偏移地址
data=内存首地址
length=长度(DWORD)
8.DRFM_Write_Memory
voidDRFM_Write_Memory(intboard_id,intBar,DWORDaddr,DWORD*data,intlength);
写XC5VLX30T寄存器
bar=基地址
9.DRFM_Load_ADC
intDRFM_Load_ADC(intboard_id);
配置ADC10D1500
10.DSP_Load
intDSP_Load(intboard_id,CStringm_HPILoaderFilePath);
加载DSP
m_HPILoaderFilePath=加载路径
板卡控制流程代码
1.准备工作
基于WinDriver实现
使用已有的DRFM板卡驱动
DeviceBase.h
drfm.h
DEVICE.lib
将以上三个文件加入工程
在对话框类中声明DRFM_BOARD类对象;
2.初始化
在CDRFMSYSDlg:
:
OnInitDialog中添加板卡初始化操作
RegistDevice(NULL);
//注册驱动库
ConnectToDevice();
//连接至板卡
intnum=m_drfm.DRFM_Board_num();
//获取板卡数量
CStringstrBoardNum;
strBoardNum.Format("
检测到%d块DRFM板卡"
num);
//格式化字符串
PrintMessage(strBoardNum);
//打印消息
3.为控件添加变量
同样方法添加以下变量
偏移地址m_offset
数据m_data
4.按钮事件响应函数
UpdateData(TRUE);
//更新参数
m_drfm.DRFM_Read_Memory(0,m_space,m_offset,&
m_data,1);
//读数据
//m_space为地址空间
//m_offset为偏移量
//m_data为数据
UpdateData(FALSE);
///////////////////////////////////////////////////////////////////////////////////////////
m_drfm.DRFM_Write_Memory(0,m_space,m_offset,&
//写数据
搭建界面
1.新建项目
2.选择工程类型
3.MFC应用程序向导
4.选择应用程序类型
5.启动界面编辑窗口
6.拖放控件
7.为控件添加变量
8.设置变量参数
9.添加列和行
OnInitDialog方法中加入以下代码
//第0列名称为X,宽度100
m_wndListCtrl1.InsertColumn(0,"
X"
0,100);
//第1列名称为Y,宽度100
m_wndListCtrl1.InsertColumn(1,"
Y"
//设置列表的样式LVS_EX_FULLROWSELECT=正行选取LVS_EX_GRIDLINES=显示网格
m_wndListCtrl1.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
//定义字符串变量
CStringstrData;
//添加N行数据
for(inti=0;
i<
N;
i++)
{
//格式化字符串变量
strData.Format(“%d”,i);
//添加行
m_wndListCtrl1.InsertItem(i,strData);
}
10.同样方法为输出列表创建对象,添加列
创建对象m_wndListCtrl2
为控件添加列:
时间、描述、线程
11.更新列表信息
12.添加自定义消息
13.同样方法再添加一个自定义消息
消息名称:
WM_USER+2
消息处理程序:
OnPrintMessage
14.OnPrintData中定义列表更新方法
15.通过PostMessage更新列表信息
16.OnPrintMessage中定义消息更新方法
17.定义消息打印接口函数
18.打印第一条消息
PrintMessage(CString("
这是第一条消息"
));
TeeChart控件使用说明
1.注册TeeChart
将TeeChart8.ocx拷贝至c:
\目录下;
[Win]+[R],输入cmd,[回车];
输入regsvr32c:
\teechart8.ocx,[回车]
2.添加TeeChart控件
3.插入ActiveX控件
4.调整好TeeChart控件大小与位置
5.对控件进行相关设置
双击TeeChart控件会弹出设置窗口
6.选择绘图类型
7.设置绘图属性
8.为TeeChart控件添加类
9.TeeChart控件和对象关联
注释掉构造函数的初始化
10.编写绘图代码
OnPrintData中插入绘图功能
afx_msgLRESULTCDRFMSYSDlg:
OnPrintData(WPARAMwParam,LPARAMlParam)
double*pData=(double*)wParam;
//获取数据指针
//定义字符串变量
strData.Format("
%lf"
pData[i]);
//格式化字符串
m_wndListCtrl1.SetItemText(i,1,strData);
//设置列表信息
longSeriesCount=m_Chart.get_SeriesCount();
//获取曲线的数量
ASSERT(SeriesCount==1);
//断言曲线数量为1
CSeriesm_Series=m_Chart.Series(0);
//获取第0条曲线
m_Series.Clear();
//清空曲线点
COleSafeArrayXValues,YValues;
//定义X轴和Y轴数据变量
DWORDrgElements[]={N};
//定义数据长度
XValues.Create(VT_R8,1,rgElements);
//申请数据内存空间
YValues.Create(VT_R8,1,rgElements);
for(longj=0;
j<
j++)
doublex=(double)j;
doubley=pData[j];
//赋值
XValues.PutElement(&
j,&
x);
YValues.PutElement(&
y);
m_Series.AddArray(N,YValues,XValues);
//绘制曲线
delete[]pData;
//释放内存
return0;
11.运行效果
线程创建与执行
1.添加线程执行函数
2.定义Process()
3.启动工作线程
AfxBeginThread(Thread,this);
4.运行效果
网络通信接口使用说明
我们使用封装好的两个类进行网络通信的程序开发:
CSocketServer和CSocketClient
将以下文件加入工程:
SocketServer.h
SocketServer.cpp
SocketClient.h
SocketClient.cpp
1.Open
2.Close
3.Send
4.Recv
编写网络流程代码
1.声明CSocketServer对象
在头文件中声明对象
#include“SocketServer.h”
CSocketServerm_SocketServer;
在源文件中构造对象
CDRFMSYSDlg:
CDRFMSYSDlg(CWnd*pParent/*=NULL*/):
CDialogEx(CDRFMSYSDlg:
IDD,pParent),m_SocketServer(6000)
端口号6000
2.在工作线程执行函数DRFMSYSDlg:
Process()中加入网络流程代码
3.运行效果