上位机编程示例教程文件.docx
- 文档编号:10918622
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:39
- 大小:2.39MB
上位机编程示例教程文件.docx
《上位机编程示例教程文件.docx》由会员分享,可在线阅读,更多相关《上位机编程示例教程文件.docx(39页珍藏版)》请在冰豆网上搜索。
上位机编程示例教程文件
上位机编程示例
WinDriver安装与使用
1.获取安装文件和序列号
Win32平台使用WD1020X86.EXE安装
Win64平台使用WD1021X64.EXE安装
序列号文件sn.txt
2.安装向导,[NEXT>]
3.许可声明,[IAgree]
4.安装选项,[Next>]
5.安装目录,[Install]
6.安装…
7.WindowsVista及以上版本会弹出Windows安全提示,勾选始终信任来自”JungoLTD”的软件,点击[安装]
8.安装完成,[Finish]
9.注册提示,[RegisterNow]
10.输入licensestring,[Activatelicense]
11.注册成功后CurrentActiveLicens发生变化,点击[OK]
12.安装成功
DRFM板驱动说明
接口说明
1.DRFM_Board_num
函数
intDRFM_Board_num();
描述
获取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=异常
备注
对板卡操作完成后,需关闭板卡;
板卡号可根据DRFM_Board_num返回值确定取值范围,[0,板卡数量);
4.DRFM_Load_FPGA
函数
intDRFM_Load_FPGA(intboard_id,char*path);
描述
加载XC6VSX315T芯片FPGA程序
参数
board_id=板卡号
path=加载文件
返回值
0=正常非0=异常
备注
5.DRFM_Load_9520
函数
intDRFM_Load_9520(intboard_id,char*stp_path,DWORDbaseAddr);
描述
配置AD9520时钟文件
参数
board_id=板卡号
stp_path=时钟文件
baseAddr=基址
返回值
0=正常非0=异常
备注
6.DRFM_Load_9739
函数
intDRFM_Load_9739(intboard_id,DWORDbaseAddr);
描述
配置AD9739
参数
board_id=板卡号
baseAddr=基址
返回值
0=正常非0=异常
备注
7.DRFM_Read_Memory
函数
voidDRFM_Read_Memory(intboard_id,intBar,DWORDaddr,DWORD*data,intlength);
描述
读XC5VLX30T寄存器
参数
board_id=板卡号
bar=BAR空间
addr=偏移地址
data=内存首地址
length=长度(DWORD)
返回值
无
备注
8.DRFM_Write_Memory
函数
voidDRFM_Write_Memory(intboard_id,intBar,DWORDaddr,DWORD*data,intlength);
描述
写XC5VLX30T寄存器
参数
board_id=板卡号
bar=基地址
addr=偏移地址
data=内存首地址
length=长度(DWORD)
返回值
无
备注
9.DRFM_Load_ADC
函数
intDRFM_Load_ADC(intboard_id);
描述
配置ADC10D1500
参数
board_id=板卡号
返回值
0=正常非0=异常
备注
10.DSP_Load
函数
intDSP_Load(intboard_id,CStringm_HPILoaderFilePath);
描述
加载DSP
参数
board_id=板卡号
m_HPILoaderFilePath=加载路径
返回值
0=正常非0=异常
备注
板卡控制流程代码
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);//更新参数
///////////////////////////////////////////////////////////////////////////////////////////
UpdateData(TRUE);//更新参数
m_drfm.DRFM_Write_Memory(0,m_space,m_offset,&m_data,1);//写数据
//m_space为地址空间
//m_offset为偏移量
//m_data为数据
搭建界面
1.新建项目
2.选择工程类型
3.MFC应用程序向导
4.选择应用程序类型
5.启动界面编辑窗口
6.拖放控件
7.为控件添加变量
8.设置变量参数
9.添加列和行
在CDRFMSYSDlg:
:
OnInitDialog方法中加入以下代码
//第0列名称为X,宽度100
m_wndListCtrl1.InsertColumn(0,"X",0,100);
//第1列名称为Y,宽度100
m_wndListCtrl1.InsertColumn(1,"Y",0,100);
//设置列表的样式LVS_EX_FULLROWSELECT=正行选取LVS_EX_GRIDLINES=显示网格
m_wndListCtrl1.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
//定义字符串变量
CStringstrData;
//添加N行数据
for(inti=0;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.打印第一条消息 在CDRFMSYSDlg: : OnInitDialog方法中加入以下代码 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.编写绘图代码 在CDRFMSYSDlg: : OnPrintData中插入绘图功能 afx_msgLRESULTCDRFMSYSDlg: : OnPrintData(WPARAMwParam,LPARAMlParam) { double*pData=(double*)wParam;//获取数据指针 CStringstrData;//定义字符串变量 for(inti=0;i { 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 { doublex=(double)j; doubley=pData[j];//赋值 XValues.PutElement(&j,&x); YValues.PutElement(&j,&y); } m_Series.AddArray(N,YValues,XValues);//绘制曲线 delete[]pData;//释放内存 return0; } 11.运行效果 线程创建与执行 1.添加线程执行函数 2.定义Process() 3.启动工作线程 在CDRFMSYSDlg: : OnInitDialog方法中加入以下代码 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.运行效果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上位 编程 示例 教程 文件