2016年6月29日 星期三

在 MFC 上使用lusb-win32

將lusb-win32導入MFC專案步驟:
1.建立MFC專案後,將"libusb.lib"與"libusb0.dll"丟到所建立的專案目錄下。
2.在標頭檔中加入"lusb0_usb.h"檔案,加入"#pragma comment(lib, "libusb")"至"lusb0_usb.h"或是專案主程式XXX.cpp中來link libusb.lib。
3.在專案主程式XXX.cpp中include "lusb0_usb.h"後,就可以開始撰寫你要的功能了。


MFC(VS2015 Community)中的Console printf
1.添加標頭檔
#include "io.h"
#include "fcntl.h"
#include "conio.h"

2.新增InitConsoleWindow()至主程式中
void InitConsoleWindow()
{
  int nCrt = 0;
  FILE* fp;
  AllocConsole();
  nCrt = _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE),   _O_TEXT);
  fp = _fdopen(nCrt, "w");
  *stdout = *fp;
  setvbuf(stdout, NULL, _IONBF, 0);
}

3.在::OnInitDialog()初始化函數中添加InitConsoleWindow()
BOOL CUsbXSTM32F4xxDlg::OnInitDialog()
{
  CDialog::OnInitDialog();

  ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  ASSERT(IDM_ABOUTBOX < 0xF000);

  CMenu* pSysMenu = GetSystemMenu(FALSE);
  if (pSysMenu != NULL)
  {
    ...
  }

  SetIcon(m_hIcon, TRUE); // 設定大圖示
  SetIcon(m_hIcon, FALSE); // 設定小圖示
  InitConsoleWindow();

  return TRUE; // 傳回 TRUE,除非您對控制項設定焦點
}

4.由於VS2015使用網路上printf的方式無法輸出到console上,有另外找到解決方法,加入"conio.h"用_cprintf可以解決無法輸出到console上的問題。

沒有留言:

張貼留言