#include "mainwindow.h" #include "ui_mainwindow.h" #include static int RecordInfoBeginCallBack(PVOID pUserData, DWORD dwCarID) { // printf("%s pUserData = %p, dwCarID = %lu\n", __FUNCTION__, dwCarID); return 0; }; static int RecordInfoEndCallBack(PVOID pUserData, DWORD dwCarID) { // printf("%s pUserData = %p, dwCarID = %lu\n", __FUNCTION__, dwCarID); return 0; }; static int RecordInfoPlateCallBack(PVOID pUserData, DWORD dwCarID, LPCSTR pcPlateNo, LPCSTR pcAppendInfo, DWORD dwRecordType, DWORD64 dw64TimeMS) { /* printf("%s pUserData = %p, dwCarID = %lu , pcPlateNo = %s, \npcAppendInfo= \n%s dwRecordType = %x, dw64TimeMS = %llu\n", __FUNCTION__, pUserData, dwCarID, pcPlateNo, pcAppendInfo, dwRecordType, dw64TimeMS); */ return 0; } static int RecordInfoBigImageCallBack(PVOID pUserData, DWORD dwCarID, WORD wImgType, WORD wWidth, WORD wHeight, PBYTE pbPicData, DWORD dwImgDataLen, DWORD dwRecordType, DWORD64 dw64TimeMS) { /* printf("%s pUserData = %p, dwCarID = %lu ,wImgType = %x, " "wWidth = %d, wHeight = %d, pbPicData = %p, dwImgDataLen = %lu, dwRecordType = %x, dw64TimeMS = %llu\n", __FUNCTION__, pUserData, dwCarID, wImgType, wWidth, wHeight, pbPicData, dwImgDataLen, dwRecordType, dw64TimeMS); */ return 0; } static int RecordInfoSmallImageCallBack(PVOID pUserData, DWORD dwCarID, WORD wWidth, WORD wHeight, PBYTE pbPicData, DWORD dwImgDataLen, DWORD dwRecordType, DWORD64 dw64TimeMS) { /* printf("%s pUserData = %p, dwCarID = %lu , wWidth = %d, wHeight = %d, pbPicData = %p, dwImgDataLen = %lu, dwRecordType = %x, dw64TimeMS = %llu\n", __FUNCTION__, pUserData, dwCarID, wWidth, wHeight, pbPicData, dwImgDataLen, dwRecordType, dw64TimeMS); */ return 0; } static int RecordInfoBinaryImageCallBack(PVOID pUserData, DWORD dwCarID, WORD wWidth, WORD wHeight, PBYTE pbPicData, DWORD dwImgDataLen, DWORD dwRecordType, DWORD64 dw64TimeMS) { /* printf("%s pUserData = %p, dwCarID = %lu , wWidth = %d, wHeight = %d, pbPicData = %p, dwImgDataLen = %lu, dwRecordType = %x, dw64TimeMS = %llu\n", __FUNCTION__, pUserData, dwCarID, wWidth, wHeight, pbPicData, dwImgDataLen, dwRecordType, dw64TimeMS); */ return 0; } /* static int JPEGStreamCallBack( PVOID pUserData, PBYTE pbImageData, DWORD dwImageDataLen, DWORD dwImageType, LPCSTR szImageExtInfo ) { printf("%s pUserData = %p, pbImageData = %p , dwImageDataLen = %u, dwImageType = %x, szImageExtInfo = %s\n", __FUNCTION__, pUserData, pbImageData, dwImageDataLen, dwImageType, szImageExtInfo); return 0; }; */ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); InitStr(); } MainWindow::~MainWindow() { delete ui; } void MainWindow::InitStr() { m_HvHdl = NULL; InitFunPtr(); } void MainWindow::InitFunPtr() { m_OpenHv_Fun = NULL; m_CloseHv_Fun = NULL; m_HvIsConnected_Fun = NULL; m_SetHvCallBack_Fun = NULL; } void MainWindow::on_pushButtonConnect_clicked() { int iRet; char buf[64]; QString qtemp; if(m_HvHdl) { return; } if(! m_OpenHv_Fun) { iRet = OpenLib(); if(iRet <0) { QMessageBox::warning(this,"提示","打开HDLL.so失败"); return ; } } qtemp = ui->textEditIpInput->toPlainText(); if(qtemp.isEmpty()) { QMessageBox::warning(this,"提示","ip 地址不能为空"); return; } iRet = QStringToChar(buf,qtemp,32); if(iRet <0) { return ; } iRet = ConnectDevice(buf); if (iRet <0) { ui->textEditShowInfo->insertPlainText("连接失败\r\n"); } else { ui->textEditShowInfo->insertPlainText("连接成功\r\n"); } } int MainWindow::OpenLib() { QString fileName; int iRet; if(m_Lib.isLoaded()) { m_Lib.unload(); } fileName = QCoreApplication::applicationDirPath(); fileName +="/HDLL.so"; m_Lib.setFileName(fileName); if(! m_Lib.load()) { return -1; } iRet = GetFunPtr(); if(iRet <0) { InitFunPtr(); m_Lib.unload(); return -2; } return 0; } // int MainWindow::GetFunPtr() { // InitFunPtr(); m_OpenHv_Fun = (OpenHv_Fun)(m_Lib.resolve("OpenHv")); if(! m_OpenHv_Fun) { return -1; } m_CloseHv_Fun = (CloseHv_Fun)(m_Lib.resolve("CloseHv")); if(! m_CloseHv_Fun) { return -2; } m_HvIsConnected_Fun = (HvIsConnected_Fun)(m_Lib.resolve("HvIsConnected")); if(! m_HvIsConnected_Fun) { return -3; } m_SetHvCallBack_Fun = (SetHvCallBack_Fun)(m_Lib.resolve("SetHvCallBack")); if(! m_SetHvCallBack_Fun) { return -4; } return 0; } int MainWindow::ConnectDevice(char * pIp) { HRESULT hRet; m_HvHdl = m_OpenHv_Fun(pIp); if (!m_HvHdl) { return -1; } hRet = m_SetHvCallBack_Fun(m_HvHdl, (void *)CARINFO_BEGIN_FUN, NULL, 0, _TYPE_CARINFO_BEGIN); if (S_OK != hRet) { return false; } hRet = SetHvCallBack(m_HvHdl, (void *)CARINFO_END_FUN, NULL, 0, _TYPE_CARINFO_END); if (S_OK != hRet) { return false; } hRet = SetHvCallBack(m_HvHdl, (void *)BIG_IMAGE_FUN, NULL, 0, _TYPE_BIG_IMAGE); if (S_OK != hRet) { return false; } hRet = SetHvCallBack(m_HvHdl, (void *)SMALL_IMAGE_FUN, NULL, 0, _TYPE_SMALL_IMAGE); if (S_OK != hRet) { return false; } hRet = SetHvCallBack(m_HvHdl, (void *)BINARY_IMAGE_FUN, NULL, 0, _TYPE_BINARY_IMAGE); if (S_OK != hRet) { return false; } hRet = SetHvCallBack(m_HvHdl, (void *)PLATE_NO_FUN, NULL, 0, _TYPE_PLATE_STR); if (S_OK != hRet) { return false; } return 0; }