You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
313 lines
7.3 KiB
Plaintext
313 lines
7.3 KiB
Plaintext
#include "mainwindow.h"
|
|
#include "ui_mainwindow.h"
|
|
|
|
#include <QMessageBox>
|
|
|
|
|
|
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;
|
|
}
|
|
|