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

1 year ago
#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;
}