Sfoglia il codice sorgente

1、修正UB530显示失败的问题;

scbc.sat2 5 anni fa
parent
commit
ac6b5f0c51

+ 10 - 8
SATHelper/SATHelper/MainFrm.cpp

@@ -22,6 +22,8 @@
 #define new DEBUG_NEW
 #endif
 
+CMainFrame* g_pMainFrame = NULL;
+
 #if USE_TRAYICON
 #define WM_MY_TRAY_NOTIFICATION WM_USER + 108
 const UINT WM_TASKBARCREATED = ::RegisterWindowMessage(_T("UB530"));
@@ -269,31 +271,31 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	ModifyStyle(0, FWS_PREFIXTITLE);
 #endif
 
-#if 0 // 第一个视图;
+	g_pMainFrame = this;
+
+#if _USE_DLGVIEW_ // 第一个视图;
 	CCreateContext context;
 	m_pUB530View = new CChildFrame();
 	context.m_pLastView = NULL;
 	context.m_pCurrentFrame = this;
 	context.m_pCurrentDoc = m_pDoc;
-	context.m_pNewViewClass = RUNTIME_CLASS(CSATHelperView);
+	context.m_pNewViewClass = RUNTIME_CLASS(CUB530View);
 	context.m_pNewDocTemplate = m_pDoc->GetDocTemplate();
-	if (m_pUB530View->LoadFrame(1100, WS_MAXIMIZE | WS_OVERLAPPEDWINDOW /*WS_CHILDWINDOW*/, this, &context))
+	if (m_pUB530View->LoadFrame(DLG_UB530VIEW, WS_MAXIMIZE | WS_OVERLAPPEDWINDOW /*WS_CHILDWINDOW*/, this, &context))
 	{
 		//m_pUB530View->ShowWindow(SW_SHOWMAXIMIZED);
 		m_pUB530View->InitialUpdateFrame(context.m_pCurrentDoc, TRUE);
 		//m_pUB530View->MDIActivate();
 	}
-#endif
-
-#if 1 // 第一个视图;
+#else
 	CCreateContext context;
 	m_pUB530View = new CChildFrame();
 	context.m_pLastView = NULL;
 	context.m_pCurrentFrame = this;
 	context.m_pCurrentDoc = m_pDoc;
-	context.m_pNewViewClass = RUNTIME_CLASS(CUB530View);
+	context.m_pNewViewClass = RUNTIME_CLASS(CSATHelperView);
 	context.m_pNewDocTemplate = m_pDoc->GetDocTemplate();
-	if (m_pUB530View->LoadFrame(DLG_UB530VIEW, WS_MAXIMIZE | WS_OVERLAPPEDWINDOW /*WS_CHILDWINDOW*/, this, &context))
+	if (m_pUB530View->LoadFrame(1100, WS_MAXIMIZE | WS_OVERLAPPEDWINDOW /*WS_CHILDWINDOW*/, this, &context))
 	{
 		//m_pUB530View->ShowWindow(SW_SHOWMAXIMIZED);
 		m_pUB530View->InitialUpdateFrame(context.m_pCurrentDoc, TRUE);

+ 11 - 8
SATHelper/SATHelper/MemoryClient.cpp

@@ -5,8 +5,11 @@
 #include "Global.h"
 #include "MainFrm.h"
 
-CFormView* CMemoryClient::m_pView2 = NULL;
+#if _USE_DLGVIEW_
+CUB530View* CMemoryClient::m_pView = NULL;
+#else
 CSATHelperView* CMemoryClient::m_pView = NULL;
+#endif
 HANDLE CMemoryClient::m_hRecordFile = NULL;
 HANDLE CMemoryClient::m_hThreadAudio = NULL;
 BOOL CMemoryClient::m_bCapture = FALSE;
@@ -102,7 +105,7 @@ DWORD CMemoryClient::ThreadProc(LPVOID lpVoid)
 						CMD_Result result;
 						unsigned short nIndex = 0;
 						memcpy(&nIndex, ((BYTE*)pThis->m_pMemory) + sizeof(CommandHead), sizeof(unsigned short));
-						//result.bResult = m_pView->HwInitialize();
+						result.bResult = m_pView->HwInitialize();
 
 						// 返回结果;						
 						result.cmdHead = cmdHead;
@@ -117,7 +120,7 @@ DWORD CMemoryClient::ThreadProc(LPVOID lpVoid)
 						CMD_Result result;
 						unsigned short nIndex = 0;
 						memcpy(&nIndex, ((BYTE*)pThis->m_pMemory) + sizeof(CommandHead), sizeof(unsigned short));
-						//result.bResult = m_pView->HwUninitialize();
+						result.bResult = m_pView->HwUninitialize();
 						m_pView->Invalidate();
 
 						// 返回结果;						
@@ -271,7 +274,7 @@ BOOL CMemoryClient::CaptureImage(const CMD_CaputerImage& cmd, BOOL bSingle)
 			}
 		}
 
-		//m_pView->CaptureMultiImageEx(cmd.szSaveDir, cmd.szPrefix, bIsJPG, cmd.nKeepTime);
+		m_pView->CaptureMultiImageEx(cmd.szSaveDir, cmd.szPrefix, bIsJPG, cmd.nKeepTime);
 	}
 	else
 	{// 单张;
@@ -305,13 +308,13 @@ BOOL CMemoryClient::CaptureImage(const CMD_CaputerImage& cmd, BOOL bSingle)
 					strFile.append(_T("\\"));
 			}
 
-			//m_pView->CaptureSingleImageAutoNameEx(strFile.c_str(), bIsJPG);
+			m_pView->CaptureSingleImageAutoNameEx(strFile.c_str(), bIsJPG);
 		}
 		else
 		{
 			TCHAR szFile[MAX_PATH] = { 0 };
 			_stprintf_s(szFile, _T("%s"), cmd.szSaveDir);
-			//m_pView->CaptureSingleImageEx(szFile, bIsJPG);
+			m_pView->CaptureSingleImageEx(szFile, bIsJPG);
 		}
 		// 等待磁盘完成写入;
 		//Sleep(bIsJPG ? 200 : 200);
@@ -328,12 +331,12 @@ BOOL CMemoryClient::SynCaptureAudio(const CMD_CaputerAudio& cmd)
 
 BOOL CMemoryClient::AsyCaptureAudio(const CMD_CaputerAudio& cmd)
 {
-	//m_pView->StartRecord(cmd.dwDuration, cmd.szSaveDir);
+	m_pView->StartRecord(cmd.dwDuration, cmd.szSaveDir);
 	return TRUE;
 }
 
 BOOL CMemoryClient::StopCaptureAudio()
 {
-	//m_pView->StopRecord();
+	m_pView->StopRecord();
 	return TRUE;
 }

+ 10 - 1
SATHelper/SATHelper/MemoryClient.h

@@ -5,8 +5,14 @@
 
 #include "MemoryDef.h"
 #include "MemoryComm.h"
+#if _USE_DLGVIEW_
+#include "UB530View.h"
+class CUB530View;
+#else
 #include "SATHelperView.h"
 class CSATHelperView;
+#endif
+
 
 class CMemoryClient:public CMemoryComm
 {
@@ -21,8 +27,11 @@ private:
 	static BOOL m_bIsConnect;
 	static HANDLE m_hThreadAudio;
 public:
+#if _USE_DLGVIEW_
+	static CUB530View* m_pView;
+#else
 	static CSATHelperView* m_pView;
-	static CFormView* m_pView2;
+#endif
 	static HANDLE m_hRecordFile;
 	BOOL StartThread();
 	void EndOfThread();

+ 1 - 3
SATHelper/SATHelper/SATHelper.cpp

@@ -80,8 +80,6 @@ CSATHelperApp theApp;
 CIOCPModel g_iocp;
 HANDLE g_hMutex = NULL;	// 全局互斥量;
 ULONG_PTR CSATHelperApp::m_gdiplusToken = 0;
-CMainFrame* g_pMainFrame = NULL;
-// CMainFrame* g_pMainFrame = NULL;
 
 BOOL CSATHelperApp::InitInstance()
 {
@@ -202,7 +200,7 @@ BOOL CSATHelperApp::InitInstance()
 		delete pMainFrame;
 		return FALSE;
 	}
-	m_pMainWnd = g_pMainFrame = pMainFrame;
+	m_pMainWnd = pMainFrame;
 
 
 	// 分析标准 shell 命令、DDE、打开文件操作的命令行

+ 9 - 3
SATHelper/SATHelper/SATHelperView.cpp

@@ -433,7 +433,13 @@ BOOL CSATHelperView::HwInitialize()
 	// CREATE CAPTURE DEVICE
 	//
 	if (m_hVideoDevice == NULL)
-		QCAP_CREATE("CY3014 USB", 0, m_hWnd, &m_hVideoDevice, 1);
+	{
+		QRESULT qr = QCAP_CREATE("CY3014 USB", 0, m_hWnd, &m_hVideoDevice, 1);
+		if (qr != QCAP_RS_SUCCESSFUL)
+		{
+			OutputDebugString("初始化UB530失败\n");
+		}
+	}
 
 	if (m_hVideoDevice == NULL) {
 		return FALSE;
@@ -983,12 +989,12 @@ int CSATHelperView::OnCreate(LPCREATESTRUCT lpCreateStruct)
 
 	// TODO:  在此添加您专用的创建代码
 	// 初始化共享内存;
+#if !_USE_DLGVIEW_
 	CMemoryClient::m_pView = this;
+#endif
 	g_ub530.InitMemery();
 	g_ub530.StartThread();
 
-	//g_pMainFrame = (CMainFrame*)this->GetParent();
-
 	// TODO:  在此添加您专用的创建代码
 	// 创建视频流,并关联指定显示窗口;
 	HwInitialize();

+ 0 - 17
SATHelper/SATHelper/SATHelperView.h

@@ -16,23 +16,6 @@
 #include "SATHelperDoc.h"
 #include "MemoryClient.h"
 
-typedef struct __CAPTURE_INFO__
-{
-	// 是否是jpg;
-	BOOL bIsJPG;
-	// 持续时间;
-	int nKeepTime;
-	// 每秒抓取张数;
-	int nCaputerCount;
-	// 保存路径;
-	TCHAR szSaveDir[MAX_PATH];
-	// 文件名前缀;
-	TCHAR szPrefix[64];
-	// 是否自动命名;
-	BOOL IsAutoName;
-	// 是否单张截图;
-	BOOL bSingle;
-}CaptureInfo, * pCaptureInfo;
 
 class CSATHelperView : public CView
 {

+ 44 - 12
SATHelper/SATHelper/UB530View.cpp

@@ -266,6 +266,7 @@ BEGIN_MESSAGE_MAP(CUB530View, CFormView)
 	ON_UPDATE_COMMAND_UI(ID_CHECK_FORMAT_AVI, &CUB530View::OnUpdateCheckFormatAvi)
 	ON_UPDATE_COMMAND_UI(ID_START_RECORD, &CUB530View::OnUpdateStartRecord)
 	ON_UPDATE_COMMAND_UI(ID_STOP_RECORD, &CUB530View::OnUpdateStopRecord)
+	ON_WM_CREATE()
 END_MESSAGE_MAP()
 
 
@@ -294,17 +295,17 @@ void CUB530View::OnInitialUpdate()
 	CFormView::OnInitialUpdate();
 
 	// TODO: 在此添加专用代码和/或调用基类
-	CMemoryClient::m_pView2 = this;
-	g_ub530.InitMemery();
-	g_ub530.StartThread();
-
-	// TODO:  在此添加您专用的创建代码
-	// 创建视频流,并关联指定显示窗口;
-	HwInitialize();
-
-	// 创建截图线程;
-	std::thread t(CaptureImageThread, this);
-	t.detach();
+// 	CMemoryClient::m_pView2 = this;
+// 	g_ub530.InitMemery();
+// 	g_ub530.StartThread();
+// 
+// 	// TODO:  在此添加您专用的创建代码
+// 	// 创建视频流,并关联指定显示窗口;
+// 	HwInitialize();
+// 
+// 	// 创建截图线程;
+// 	std::thread t(CaptureImageThread, this);
+// 	t.detach();
 }
 
 
@@ -365,7 +366,13 @@ BOOL CUB530View::HwInitialize()
 	// CREATE CAPTURE DEVICE
 	//
 	if (m_hVideoDevice == NULL)
-		QCAP_CREATE("CY3014 USB", 0, m_hWnd, &m_hVideoDevice, 1);
+	{
+		QRESULT qr = QCAP_CREATE("CY3014 USB", 0, m_hWnd, &m_hVideoDevice, 1);
+		if ( qr != QCAP_RS_SUCCESSFUL )
+		{
+			OutputDebugString("初始化UB530失败\n");
+		}
+	}
 
 	if (m_hVideoDevice == NULL) {
 		return FALSE;
@@ -1128,3 +1135,28 @@ void CUB530View::OnUpdateStopRecord(CCmdUI* pCmdUI)
 	// TODO: 在此添加命令更新用户界面处理程序代码
 	pCmdUI->Enable(m_bIsRecord);
 }
+
+
+int CUB530View::OnCreate(LPCREATESTRUCT lpCreateStruct)
+{
+	if (CFormView::OnCreate(lpCreateStruct) == -1)
+		return -1;
+
+	// TODO:  在此添加您专用的创建代码
+	// 初始化共享内存;
+#if _USE_DLGVIEW_
+	CMemoryClient::m_pView = this;
+#endif
+	g_ub530.InitMemery();
+	g_ub530.StartThread();
+
+	// TODO:  在此添加您专用的创建代码
+	// 创建视频流,并关联指定显示窗口;
+	HwInitialize();
+
+	// 创建截图线程;
+	std::thread t(CaptureImageThread, this);
+	t.detach();
+
+	return 0;
+}

+ 2 - 0
SATHelper/SATHelper/UB530View.h

@@ -4,6 +4,7 @@
 #include "MemoryClient.h"
 // CUB530View 窗体视图
 
+
 class CUB530View : public CFormView
 {
 	DECLARE_DYNCREATE(CUB530View)
@@ -153,6 +154,7 @@ public:
 	afx_msg void OnUpdateCheckFormatAvi(CCmdUI* pCmdUI);
 	afx_msg void OnUpdateStartRecord(CCmdUI* pCmdUI);
 	afx_msg void OnUpdateStopRecord(CCmdUI* pCmdUI);
+	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
 };
 
 

+ 21 - 0
SATHelper/SATHelper/stdafx.h

@@ -18,6 +18,25 @@
 using namespace std;
 using namespace chrono;
 
+
+typedef struct __CAPTURE_INFO__
+{
+	// 是否是jpg;
+	BOOL bIsJPG;
+	// 持续时间;
+	int nKeepTime;
+	// 每秒抓取张数;
+	int nCaputerCount;
+	// 保存路径;
+	TCHAR szSaveDir[MAX_PATH];
+	// 文件名前缀;
+	TCHAR szPrefix[64];
+	// 是否自动命名;
+	BOOL IsAutoName;
+	// 是否单张截图;
+	BOOL bSingle;
+}CaptureInfo, * pCaptureInfo;
+
 // 启停停靠窗口;
 #define __DOCKINGBAR__ 1
 // 启停导航栏;
@@ -34,6 +53,8 @@ using namespace chrono;
 #define __PANE_DLG__ 0
 // 是否自动创建文档视图;
 #define _AUTO_NEW_FILE_ 0
+// 使用默认CView类或使用CFormView对话框类做为UB530显示窗口;
+#define _USE_DLGVIEW_ 1
 
 //////////////////////////////////////////////////////////////////////////
 // START;