1. 程式人生 > >基於MFC的USB上位機開發(1)概述

基於MFC的USB上位機開發(1)概述

延伸閱讀:

基於MFC的USB上位機開發(1)概述

基於MFC的USB上位機開發(2)速度測試模組

基於MFC的USB上位機開發(3)資料傳輸模組

基於MFC的USB上位機開發(4)環路模組

基於MFC的USB上位機開發(5)下環路模組

目錄

1 工程準備

1.1 標頭檔案和庫檔案

1.2 新增標頭檔案

2. 控制元件佈局

2.1 速度測試模組

2.2 傳送與接收模組

2.3 環路模組

2.4 下環路模組

3. 功能介紹

3.1 速度測試模組

3.2 資料傳輸模組

3.3 環路模組

3.4 下環路模組

4. 使用注意事項

4.1 配套FPGA程式

4.2 開發板驅動程式

4.3 上位機生成可執行程式

5. 專案工程檔案包


        本上位機的開發環境為Visual Studio 2008,電腦系統是Win7 64位旗艦版,配套開發板為易津USB開發板,開發板USB晶片型號為Cy7c68013a。上位機提供狀態顯示、速度測試、傳輸測試、環路測試和下環路測試等功能,功能測試時需要配合開發板一起使用。USB上位機設計系列文章重點講設計思路,需要原始程式碼的同學可以在本文末尾的連結處下載。

1 工程準備

1.1 標頭檔案和庫檔案

在上位機開發之前需要安裝Cypress公司的軟體工具包cy3687kit_revSA,該軟體包內可以為上位機開發提供所需的標頭檔案和庫檔案,具體資訊見下表:

上位機依賴檔案

 

所在路徑

標頭檔案

CyAPI.h、cyioctl.h、usb100.h、usb200.h

C:\Cypress\Cypress Suite USB 3.4.7\CyAPI\inc

庫檔案

CyAPI.lib(64位系統)

C:\Cypress\Cypress Suite USB 3.4.7\CyAPI\lib\x64

庫檔案

CyAPI.lib(32位系統)

C:\Cypress\Cypress Suite USB 3.4.7\CyAPI\lib\x86

    上方所有標頭檔案和庫檔案均需要複製到上位機工程目錄下,在MFC專案的相應的.cpp或者.h檔案中需要包含以上某些標頭檔案。在專案的附加依賴項中需要新增庫檔案CyAPI.lib,因為電腦是Win7 64位的,所以庫檔案也選擇64位的,庫檔案新增方法:右擊專案——配置屬性——連結器——輸入——附加依賴項,填寫CyAPI.lib。

1.2 新增標頭檔案

新建USBproj專案,目錄結構如下:

USBprojDlg.h和USBprojDlg.cpp所需包含標頭檔案如下所示:

// USBprojDlg.h : 標頭檔案
#pragma once
#include "CyAPI.h"
#include <afxmt.h>
#include "afxwin.h"
#include "afxcmn.h"
#include "rate.h"
// USBprojDlg.cpp : 實現檔案
#include "stdafx.h"
#include "USBproj.h"
#include "USBprojDlg.h"
#include "CyAPI.h"
#include "cyioctl.h"
#include <dbt.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#endif

2. 控制元件佈局

2.1 速度測試模組

控制元件標籤

控制元件名稱

控制元件新增的變數

控制元件型別

控制元件設定

速度測試

IDC_STATIC

 

組合框

Group:True

上位機接收資料

IDC_X86

m_x86

按鈕

 

上位機發送資料

IDC_X02

m_x02

按鈕

 

清空測試資料

IDC_clean

m_clean

按鈕

 

示例編輯框

IDC_SUCCOUNT

m_Success

編輯框(可讀不可寫)

Read Only:True

示例編輯框

IDC_FALICOUNT

m_Failure

編輯框(可讀不可寫)

Read Only:True

示例編輯框

IDC_KBCOUNT

m_KBCount

編輯框(可讀不可寫)

Read Only:True

成功(10KB/次)

IDC_STATIC

 

靜態文字

 

失敗(10KB/次)

IDC_STATIC

 

靜態文字

 

總共傳輸位元組(KB)

IDC_STATIC

 

靜態文字

 

Progress Bar Control

IDC_PROGRESS_RATE

m_Rate

進度條

 

傳輸速度(MB/s)

IDC_STATIC

 

靜態文字

 

2.2 傳送與接收模組

控制元件標籤

控制元件名稱

控制元件新增的變數

控制元件型別

控制元件設定

傳送與接收資料

IDC_STATIC

 

組合框

Group:True

示例編輯框

IDC_NUM

m_NUM

編輯框(可讀可寫)

Read Only:False

示例編輯框

IDC_VALUE

m_value

編輯框(可讀可寫)

Read Only:False

位元組數量

IDC_STATIC

 

靜態文字

 

數值大小

IDC_STATIC

 

靜態文字

 

傳送指定資料

IDC_send_data

 

按鈕

 

傳送512遞增資料

IDC_Incrementing_req

 

按鈕

 

接收512位元組

IDC_data_receive

m_receive_512x8bit

按鈕

 

清空管道

IDC_CLEAN_FIFO

m_CLEAN_FIFO

按鈕

 

操作說明

IDC_help

 

按鈕

 

開啟資料記錄

IDC_OPEN_FOLDER

 

按鈕

 

資料顯示框

IDC_STATIC

 

組合框

 

示例編輯框

IDC_data_receive_display

m_data_receive_display

 編輯框(可讀不可寫)

 

 

Read Only:True

Vertical scroll:True

multiline:True

2.3 環路模組

控制元件標籤

控制元件名稱

控制元件新增的變數

控制元件型別

控制元件設定

環路測試

IDC_STATIC

 

組合框

Group:True

IDC_FILLPATTERN_COMBOX

m_FillPatternComBox

下拉選擇框

資料:Constant Byte;

Random Byte;

Incrementing Byte;

Incrementing DWORD;

傳送模式

IDC_STATIC

 

靜態文字

 

出錯停止測試

IDC_STOP_ON_ERROR_CHKBOX

m_StopOnErrorChkBox

複選框

Left Text:True

開始

IDC_START_BTN

m_StartBtn

按鈕

 

重置資料

IDC_RESET_BTN

 

按鈕

 

裝置狀態:停止

IDC_STATUS_LABEL

m_StatusLabel

靜態文字

 

示例編輯框

IDC_XFERSIZE_EDIT

m_XferSize

編輯框(可讀可寫)

Read Only:False

示例編輯框

IDC_SEED_EDIT

m_SeedValue

編輯框(可讀可寫)

Read Only:False

傳輸位元組數

IDC_STATIC

 

靜態文字

 

開始數值

IDC_STATIC

 

靜態文字

 

示例編輯框

IDC_SUCCESS_LABEL

m_SuccessCount

編輯框(可讀不可寫)

Read Only:True

示例編輯框

IDC_FAILURE_LABEL

m_FailureCount

編輯框(可讀不可寫)

Read Only:True

成功:

IDC_STATIC

 

靜態文字

 

失敗:

IDC_STATIC

 

靜態文字

 

2.4 下環路模組

控制元件標籤

控制元件名稱

控制元件新增的變數

控制元件型別

控制元件設定

下環路測試

IDC_STATIC

 

組合框

Group:True

接收512位元組

IDC_LOOP_R_512B

m_LOOP_R_512B

按鈕

 

傳送512位元組

IDC_LOOP_T_512B

m_LOOP_T_512B

按鈕

 

速度測試開啟

IDC_loop_FPGA_key

m_loop_FPGA_key

按鈕

 

下環路測試

IDC_loop_test

m_Startloop_FPGA

按鈕

 

3. 功能介紹

3.1 速度測試模組

        本模組用於USB埠單向速度測試,模組使用時需要FPGA燒寫speed專案工程的程式!上位機在測試USB的接收或者傳送的速率時,會統計傳輸的速度大小、成功次數、失敗次數以及總共傳輸位元組數。

3.2 資料傳輸模組

        資料傳輸模組負責手動環路的功能驗證,包括上方的傳送與接收資料和資料顯示框兩個部分,模組使用時需要FPGA燒寫USB_LOOPBACK 專案工程的程式!上位機在手動環路測試時,可進行以下三種資料的傳送與接收:

(1)傳送512位元組數值固定的資料;

(2)傳送512位元組數值從0x 00遞增至0x FF的資料;

(3)傳送512位元組不同數值的資料,比如510位元組0x 00和2位元組0x FF。

3.3 環路模組

        環路模組負責自動環路功能的測試,模組使用時需要FPGA燒寫USB_LOOPBACK 專案工程的程式!在自動環路測試時,上位機負責512位元組指定數值的資料傳送、接收和對比,FPGA負責資料的搬運,資料流向圖如下圖所示。環路模組的傳送模組可選固定值、隨機值、遞增位元組、遞增雙位元組,傳輸位元組數必須為512位元組整數倍,最大為2048,開始數值可選範圍0-255。

3.4 下環路模組

        下環路模組負責手動或者自動下環路的測試,傳輸資料數值由FPGA控制,上位機僅完成資料的從USB端點EP6到EP2的搬運,模組使用時需要FPGA燒寫LOOPBACK_FPGA 專案工程的程式!點選接收512位元組按鈕,接收EP6端點內的512位元組資料,並將資料顯示資料顯示框內。點擊發送512位元組按鈕,上位機會將接收的512位元組資料傳送至EP2端點內。下環路帶有測試開關,預設關閉,開啟後上位機累積完成20Mbyte資料傳輸時,顯示傳輸的平均速度!

4. 使用注意事項

4.1 配套FPGA程式

測模組

FPGA程式對應工程

備註

速度測試

speed

USB接收或者傳送資料的速度測試

資料接收與傳送

USB_LOOPBACK

接收或者傳送指定數值的512位元組資料

環路測試

USB_LOOPBACK

4中傳輸模式下資料環路測試

下環路測試

LOOPBACK_FPGA 

FPGA為主控端時的環路測試

4.2 開發板驅動程式

        上位機測試時需要配合易津USB開發板使用,電腦在第一次連線開發板時需要安裝驅動程式。Cypress公司提供Win7 x86和x64、Win XP x86和x64以及Win vista x86和x64的驅動程式,驅動程式檔名為cyusbfx2lp18.inf。驅動安裝時,開啟裝置管理器找到Cypress公司的USB裝置,右擊更新驅動程式軟體,找到驅動檔案所在位置,最後根據提示完成驅動程式的更新!

4.3 上位機生成可執行程式

        上位機除錯時,解決方案配置可選Debug或者Release模式,在Debug模式下生成的exe檔案放在其它電腦上執行會報錯,在XP系統下執行提示“由於應用程式配置不正確,應用程式未啟動。重新安裝應用程式可能會糾正這個問題。”如果在該電腦上安裝VS2008後,exe程式就能正常使用。

        如何解決上述問題呢,在電腦沒有安裝VS2008的情況下也能使用上位機exe程式?

方法(1):

        將解決方案配置選擇Release,重新編譯該上位機,在上位機工程的Release資料夾下會生成USBproj.exe,使用該exe不會出現上方報錯資訊。

方法(2):

        在專案上右擊屬性,依次選擇 配置屬性——常規——MFC的使用——在靜態庫中使用MFC,在Debug模式下重新編譯上位機,在上位機工程的Debug資料夾下會生成USBproj.exe,使用該exe也不會出現上方報錯資訊。

5. 專案工程檔案包

(1)Cy7c68013a-USB測試工具v1.4-CSDN下載
https://download.csdn.net/download/snaking616/10867119