收藏 分销(赏)

上位机编程示例word版本.doc

上传人:天**** 文档编号:4016175 上传时间:2024-07-25 格式:DOC 页数:37 大小:2.79MB
下载 相关 举报
上位机编程示例word版本.doc_第1页
第1页 / 共37页
上位机编程示例word版本.doc_第2页
第2页 / 共37页
上位机编程示例word版本.doc_第3页
第3页 / 共37页
上位机编程示例word版本.doc_第4页
第4页 / 共37页
上位机编程示例word版本.doc_第5页
第5页 / 共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. 注册成功后C

2、urrent Active 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 = 失败备注对板卡进行操作前,需要打开

3、板卡;板卡号可根据DRFM_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 = 正常

4、 非0 = 异常备注5. 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. DR

5、FM_Read_Memory函数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寄存器参

6、数board_id = 板卡号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 = 正常 非

7、0 = 异常备注板卡控制流程代码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 板卡, nu

8、m);/格式化字符串PrintMessage(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_o

9、ffset, &m_data, 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);/设置列表的样

10、式LVS_EX_FULLROWSELECT = 正行选取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+

12、R,输入cmd,回车;输入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)doubl

13、e *pData = (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条曲

14、线m_Series.Clear(); /清空曲线点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)

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

16、ketClient.hSocketClient.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. 运行效果收集于网络,如有侵权请联系管理员删除

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服