CY7C68013的开发应用记录-上位机程序的编写.doc_第1页
CY7C68013的开发应用记录-上位机程序的编写.doc_第2页
CY7C68013的开发应用记录-上位机程序的编写.doc_第3页
CY7C68013的开发应用记录-上位机程序的编写.doc_第4页
CY7C68013的开发应用记录-上位机程序的编写.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CY7C68013的开发应用记录-上位机程序的编写2009年07月05日 星期日 下午 10:57一) USB的基础知识(二) 硬件电路设计(三) 固件程序的编写(四) 驱动程序的制作(五) 外部控制器的实现(在FPGA里实现)(六) 上位机程序(VC)的编写(七) 开发过程的总结 上位机的程序我采用在VC的环境下,用MFC来开发,因为工程只需要上位机能通过USB控制芯片(CY7C68013)与控制板上的FPGA进行数据传输,并将数据的值用图形来显示,所以上位机的程序开发起来就比较容易了。 我采用GDP通用驱动程序(ezusb.sys)作为底层接口(好像cyusb.sys也类似,不过没用过),开发的软件里就直接调用ezusb.sys提供的接口函数与宏定义,这些包含在ezusb.h里。基于上述的需求,要开发的软件里与USB相关的主要包括这么三部分:建立与USB设备的连接,读取数据,写入数据。下面分别介绍: 建立与USB设备的连接 我采用的是用设备名来连接USB设备,这种方式可能只适合只有一个这样的USB设备,设备名称为.EZUSB-0。程序的源代码如下: /连接USB设备 CString strTemp; char devName64 = ; strcat(devName,.EZUSB-0); m_hDevice = CreateFile(devName, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (m_hDevice = INVALID_HANDLE_VALUE) AfxMessageBox(打开设备失败!); else AfxMessageBox(EZ-FX2 打开成功!); 打开一个设备时也可以用GUID来打开,这样更容易理解,但操作上好像麻烦些,我没有调试成功,这部分类容可以参照开发包提供的源代码文件device.h。 读取数据 这部分用DeviceIoControl函数加上驱动提供的接口宏定义(源代码中用绿色来标示)来实现。程序的源代码如下: OnDatain() / TODO: Add your control notification handler code here UpdateData(); BULK_TRANSFER_CONTROL bulkTranCtrl; bulkTranCtrl.pipeNum = m_inPip; BOOL revRst; DWORD nBytes; /保存实际接收的数据的个数 revRst = DeviceIoControl( m_hDevice, IOCTL_EZUSB_BULK_READ, (PVOID)&bulkTranCtrl, sizeof(BULK_TRANSFER_CONTROL), gDataRevBuffer, INDATA_MAXSIZE, &nBytes, NULL ); if (revRst) /接收成功 showData(gDataRevBuffer,nBytes,TRUE); /显示接收到的数据 else DWORD error = ERROR_NO_MORE_ITEMS; error = GetLastError(); AfxMessageBox(接收数据失败!); 写入数据 这部分用DeviceIoControl函数加上驱动提供的接口宏定义(源代码中用绿色来标示)来实现。程序的源代码如下: OnDataout() / TODO: Add your control notification handler code here UpdateData(); BULK_TRANSFER_CONTROL bulkTranCont; /管道选择的结构指针 bulkTranCont.pipeNum = m_outPip; generateDataOut(); /执行发送操作 BOOL sendResult; DWORD nBytes; sendResult = DeviceIoControl( m_hDevice, IOCTL_EZUSB_BULK_WRITE, (PVOID)&bulkTranCont, sizeof(BULK_TRANSFER_CONTROL), m_pOutBuffer, m_dataOutNum, &nBytes, NULL ); if (sendResult) /数据发送成功 showData(m_pOutBuffer,nBytes,FALSE); /显示发送的数据 fre

温馨提示

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

评论

0/150

提交评论