收藏 分销(赏)

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

上传人:天**** 文档编号:4016175 上传时间:2024-07-25 格式:DOC 页数:37 大小:2.79MB 下载积分:12 金币
下载 相关
上位机编程示例word版本.doc_第1页
第1页 / 共37页
上位机编程示例word版本.doc_第2页
第2页 / 共37页


点击查看更多>>
资源描述
上位机编程示例 精品文档 WinDriver安装与使用 1. 获取安装文件和序列号 Win32平台使用WD1020X86.EXE安装 Win64平台使用WD1021X64.EXE安装 序列号文件sn.txt 2. 安装向导,[NEXT>] 3. 许可声明,[I Agree] 4. 安装选项,[Next>] 5. 安装目录,[Install] 6. 安装… 7. Windows Vista及以上版本会弹出Windows安全提示,勾选始终信任来自”Jungo LTD”的软件,点击[安装] 8. 安装完成,[Finish] 9. 注册提示,[Register Now] 10. 输入license string,[Activate license] 11. 注册成功后Current Active Licens发生变化,点击[OK] 12. 安装成功 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 = 失败 备注 对板卡进行操作前,需要打开板卡; 板卡号可根据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 = 正常 非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. DRFM_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寄存器 参数 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 = 正常 非0 = 异常 备注 板卡控制流程代码 1. 准备工作 基于WinDriver实现 使用已有的DRFM板卡驱动 DeviceBase.h drfm.h DEVICE.lib 将以上三个文件加入工程 在对话框类中声明DRFM_BOARD类对象; 2. 初始化 在CDRFMSYSDlg::OnInitDialog中添加板卡初始化操作 RegistDevice(NULL);//注册驱动库 ConnectToDevice();//连接至板卡 int num = m_drfm.DRFM_Board_num();//获取板卡数量 CString strBoardNum; 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); //定义字符串变量 CString strData; //添加N行数据 for (int i=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. 打印第一条消息 在CDRFMSYSDlg::OnInitDialog方法中加入以下代码 PrintMessage(CString("这是第一条消息")); TeeChart控件使用说明 1. 注册TeeChart 将TeeChart8.ocx拷贝至c:\目录下; [Win]+[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) { double *pData = (double*)wParam; //获取数据指针 CString strData; //定义字符串变量 for (int i=0; i<N; i++) { strData.Format("%lf", pData[i]); //格式化字符串 m_wndListCtrl1.SetItemText(i, 1, strData); //设置列表信息 } long SeriesCount = m_Chart.get_SeriesCount(); //获取曲线的数量 ASSERT(SeriesCount == 1); //断言曲线数量为1 CSeries m_Series = m_Chart.Series(0); //获取第0条曲线 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; j<N; j++) { double x = (double)j; double y = pData[j]; //赋值 XValues.PutElement(&j, &x); YValues.PutElement(&j, &y); } m_Series.AddArray(N, YValues, XValues); //绘制曲线 delete[] pData; //释放内存 return 0; } 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” CSocketServer m_SocketServer; 在源文件中构造对象 CDRFMSYSDlg::CDRFMSYSDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CDRFMSYSDlg::IDD, pParent), m_SocketServer(6000) 端口号6000 2. 在工作线程执行函数DRFMSYSDlg::Process()中加入网络流程代码 3. 运行效果 收集于网络,如有侵权请联系管理员删除
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

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

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

关于我们      便捷服务       自信AI       AI导航        抽奖活动

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

关注我们 :微信公众号    抖音    微博    LOFTER 

客服