WinDriver安装与使用1.获取安装文件和序列号Win32平台使用WD1020X86.EXE安装Win64平台使用WD1021X64.EXE安装序列号文件sn.txt2.安装向导,[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.hdrfm.hDEVICE.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_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_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);//设置列表的样式LVS_EX_FULLROWSELECT=正行选取LVS_EX_GRIDLINES=显示网格m_wndListCtrl1.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);//定义字符串变量CStringstrData;//添加N行数据for(inti=0;iN;i++){//格式化字符串变量strData.Format(“%d”,i);//添加行m_wndListCtrl1.InsertItem(i,strData);}10.同样方法为输出列表创建对象,添加列创建对象m_wndListCtrl2为控件添加列:时间、描述、线程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,[回车];输入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;iN;i++){strData.Format(%lf,pData[i]);//格式化字符串m_wndListCtrl1.SetItemText(i,1,strData);//设置列表信息}longSeriesCount=m_Chart.get_SeriesCount();//获取曲线的数量ASSERT(SeriesCount==1);//断言曲线数量为1CSeriesm_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;jN;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.hSocketServer.cppSocketClient.hSocketClient.cpp1.Open2.Close3.Send服务器端函数intOpen();描述打开端口监听并等待客户端连接参数无成功返回值0失败返回值1=WSA失败2=SOCKET失败3=BIND失败4=LISTEN失败5=ACCEPT失败备注使用前打开套接字对象客户端函数intOpen();描述打开端口并连接服务器端参数无成功返回值0失败返回值1=WSA失败2=SOCKET失败3=CONNECT失败备注使用前打开套接字对象服务器端函数intClose();描述关闭套接字参数无成功返回值0失败返回值无备注使用后关闭套接字对象,调用后Send和Recv接口返回0客户端函数intClose();描述关闭套接字参数无成功返回值0失败返回值无备注使用后关闭套接字对象,调用后Send和Recv接口返回04.Recv编写网络流程代码1.声明CSocketServer对象在头文件中声明对象服务器端函数intSend(constunsignedchar*buffer,intlen);描述发送数据参数buffer=数据缓冲len=数据长度(字节)成功返回值实际发送数据长度(字节)失败返回值-1备注返回0表示套接字被关闭客户端函数intSend(constunsignedchar*buffer,intlen);描述发送数据参数buffer=数据缓冲len=数据长度(字节)成功返回值实际