上位机编程示例.docx

上传人:小** 文档编号:16599191 上传时间:2020-10-18 格式:DOCX 页数:37 大小:2.77MB
收藏 版权申诉 举报 下载
上位机编程示例.docx_第1页
第1页 / 共37页
上位机编程示例.docx_第2页
第2页 / 共37页
上位机编程示例.docx_第3页
第3页 / 共37页
资源描述:

《上位机编程示例.docx》由会员分享,可在线阅读,更多相关《上位机编程示例.docx(37页珍藏版)》请在装配图网上搜索。

1、WinDriver安装与使用1. 获取安装文件和序列号Win32平台使用WD1020X86.EXE安装Win64平台使用WD1021X64.EXE安装序列号文件sn.txt2. 安装向导,NEXT3. 许可声明,I Agree4. 安装选项,Next5. 安装目录,Install6. 安装7. Windows Vista及以上版本会弹出Windows安全提示,勾选始终信任来自”Jungo LTD”的软件,点击安装8. 安装完成,Finish9. 注册提示,Register Now10. 输入license string,Activate license11. 注册成功后Current Acti

2、ve Licens发生变化,点击OK12. 安装成功DRFM板驱动说明接口说明1. DRFM_Board_num函数int DRFM_Board_num();描述获取DRFM板数量参数无返回值板卡数量备注DRFM板对上位机是一个PCI设备,上位机通过两个ID号(Vendor ID & Device ID)识别PCI设备,获取板卡数量实际上是扫描指定ID号的PCI设备数量。2. DRFM_Open函数bool DRFM_Open(int board_id);描述打开板卡参数board_id =板卡号返回值true = 成功 false = 失败备注对板卡进行操作前,需要打开板卡;板卡号可根据DR

3、FM_Board_num返回值确定取值范围,0,板卡数量);3. DRFM_Close函数int DRFM_Close(int board_id);描述关闭板卡参数board_id = 板卡号返回值0 = 正常 非0 = 异常备注对板卡操作完成后,需关闭板卡;板卡号可根据DRFM_Board_num返回值确定取值范围,0,板卡数量);4. DRFM_Load_FPGA函数int DRFM_Load_FPGA(int board_id,char *path);描述加载XC6VSX315T芯片FPGA程序参数board_id = 板卡号path = 加载文件返回值0 = 正常 非0 = 异常备注5

4、. DRFM_Load_9520函数int DRFM_Load_9520(int board_id,char *stp_path,DWORD baseAddr);描述配置AD9520时钟文件参数board_id = 板卡号stp_path = 时钟文件 baseAddr = 基址返回值0 = 正常 非0 = 异常备注6. DRFM_Load_9739函数int DRFM_Load_9739(int board_id,DWORD baseAddr);描述配置AD9739参数board_id = 板卡号baseAddr = 基址返回值0 = 正常 非0 = 异常备注7. DRFM_Read_Mem

5、ory函数void DRFM_Read_Memory(int board_id,int Bar,DWORD addr,DWORD *data,int length);描述读XC5VLX30T寄存器参数board_id = 板卡号bar = BAR空间addr = 偏移地址data = 内存首地址length = 长度(DWORD)返回值无备注8. DRFM_Write_Memory函数void DRFM_Write_Memory(int board_id,int Bar,DWORD addr,DWORD *data,int length);描述写XC5VLX30T寄存器参数board_id =

6、 板卡号bar = 基地址addr = 偏移地址data = 内存首地址length = 长度(DWORD)返回值无备注9. DRFM_Load_ADC函数int DRFM_Load_ADC(int board_id);描述配置ADC10D1500参数board_id = 板卡号返回值0 = 正常 非0 = 异常备注10. DSP_Load函数int DSP_Load(int board_id,CString m_HPILoaderFilePath);描述加载DSP参数board_id = 板卡号m_ HPILoaderFilePath = 加载路径返回值0 = 正常 非0 = 异常备注板卡控

7、制流程代码1. 准备工作基于WinDriver实现使用已有的DRFM板卡驱动DeviceBase.hdrfm.hDEVICE.lib将以上三个文件加入工程在对话框类中声明DRFM_BOARD类对象;2. 初始化在CDRFMSYSDlg:OnInitDialog中添加板卡初始化操作RegistDevice(NULL);/注册驱动库ConnectToDevice();/连接至板卡int num = m_drfm.DRFM_Board_num();/获取板卡数量CString strBoardNum;strBoardNum.Format(检测到 %d 块 DRFM 板卡, num);/格式化字符串P

8、rintMessage(strBoardNum);/打印消息3. 为控件添加变量同样方法添加以下变量偏移地址 m_offset数据 m_data4. 按钮事件响应函数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_d

9、ata, 1);/写数据/m_space为地址空间/m_offset为偏移量/m_data为数据搭建界面1. 新建项目2. 选择工程类型3. MFC应用程序向导4. 选择应用程序类型5. 启动界面编辑窗口6. 拖放控件7. 为控件添加变量8. 设置变量参数9. 添加列和行在CDRFMSYSDlg:OnInitDialog方法中加入以下代码/第0列名称为X,宽度100m_wndListCtrl1.InsertColumn(0, X, 0, 100);/第1列名称为Y,宽度100m_wndListCtrl1.InsertColumn(1, Y, 0, 100);/设置列表的样式LVS_EX_FUL

10、LROWSELECT = 正行选取LVS_EX_GRIDLINES = 显示网格m_wndListCtrl1.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); /定义字符串变量CString strData; /添加N行数据for (int i=0; iN; i+)/格式化字符串变量strData.Format(“%d”, i); /添加行m_wndListCtrl1.InsertItem(i, strData); 10. 同样方法为输出列表创建对象,添加列创建对象m_wndListCtrl2为控件添加列:时间、描述、线程11

11、. 更新列表信息12. 添加自定义消息13. 同样方法再添加一个自定义消息消息名称:WM_USER+2消息处理程序:OnPrintMessage14. OnPrintData中定义列表更新方法15. 通过PostMessage更新列表信息16. OnPrintMessage中定义消息更新方法17. 定义消息打印接口函数18. 打印第一条消息在CDRFMSYSDlg:OnInitDialog方法中加入以下代码PrintMessage(CString(这是第一条消息);TeeChart控件使用说明1. 注册TeeChart将TeeChart8.ocx拷贝至c:目录下;Win+R,输入cmd,回车;

12、输入regsvr32 c:teechart8.ocx,回车2. 添加TeeChart控件3. 插入ActiveX控件4. 调整好TeeChart控件大小与位置5. 对控件进行相关设置双击TeeChart控件会弹出设置窗口6. 选择绘图类型7. 设置绘图属性8. 为TeeChart控件添加类9. TeeChart控件和对象关联注释掉构造函数的初始化10. 编写绘图代码在CDRFMSYSDlg:OnPrintData中插入绘图功能afx_msg LRESULT CDRFMSYSDlg:OnPrintData(WPARAM wParam, LPARAM lParam)double *pData =

13、(double*)wParam; /获取数据指针CString strData; /定义字符串变量for (int i=0; iN; i+)strData.Format(%lf, pDatai); /格式化字符串m_wndListCtrl1.SetItemText(i, 1, strData); /设置列表信息long SeriesCount = m_Chart.get_SeriesCount(); /获取曲线的数量ASSERT(SeriesCount = 1); /断言曲线数量为1CSeries m_Series = m_Chart.Series(0); /获取第0条曲线m_Series.C

14、lear(); /清空曲线点COleSafeArray XValues, YValues; /定义X轴和Y轴数据变量DWORD rgElements = N; /定义数据长度XValues.Create(VT_R8, 1, rgElements); /申请数据内存空间YValues.Create(VT_R8, 1, rgElements);for (long j=0; jN; j+)double x = (double)j;double y = pDataj; /赋值XValues.PutElement(&j, &x);YValues.PutElement(&j, &y);m_Series.A

15、ddArray(N, YValues, XValues); /绘制曲线delete pData; /释放内存return 0;11. 运行效果线程创建与执行1. 添加线程执行函数2. 定义Process()3. 启动工作线程在CDRFMSYSDlg:OnInitDialog方法中加入以下代码AfxBeginThread(Thread, this);4. 运行效果网络通信接口使用说明接口说明我们使用封装好的两个类进行网络通信的程序开发:CSocketServer和CSocketClient将以下文件加入工程:SocketServer.hSocketServer.cppSocketClient.h

16、SocketClient.cpp1. Open2. Close3. Send4. Recv编写网络流程代码1. 声明CSocketServer对象在头文件中声明对象#include “SocketServer.h”CSocketServer m_SocketServer;在源文件中构造对象CDRFMSYSDlg:CDRFMSYSDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CDRFMSYSDlg:IDD, pParent), m_SocketServer(6000)端口号60002. 在工作线程执行函数DRFMSYSDlg:Process()中加入网络流程代码3. 运行效果

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!