CY7C68013的开发应用记录-上位机程序的编写.docVIP

  • 12
  • 0
  • 约3.05千字
  • 约 5页
  • 2017-11-20 发布于北京
  • 举报

CY7C68013的开发应用记录-上位机程序的编写.doc

CY7C68013的开发应用记录-上位机程序的编写

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 devName[64] = ; ?? 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函数加上驱动提供的接口宏

文档评论(0)

1亿VIP精品文档

相关文档