/*
|
* publicfuc.cpp
|
*
|
* Created on: 2009-11-5
|
* Author: letian
|
*/
|
|
#include "publicfuc.h"
|
#include <QMessageBox>
|
|
#define MAX_CHAN_CHECKBOX 64
|
|
//convert the QLineEdit to int
|
//Please note that the bit num of pNum!!!!!!
|
int KIT_editToInt(const QLineEdit *pEdit, int *pNum)
|
{
|
QString qstrTemp;
|
QByteArray cArrTemp;
|
const char *pTemp;
|
qstrTemp = pEdit->text();
|
cArrTemp = qstrTemp.toLatin1();
|
pTemp = cArrTemp.data();
|
*pNum = atoi(pTemp);
|
|
return HPR_OK;
|
}
|
|
|
int KIT_intToEdit(QLineEdit *pEdit, int iNum)
|
{
|
char strTemp[INT_LEN];
|
memset(strTemp, 0, INT_LEN);
|
//firstly, convert int to char *
|
sprintf(strTemp, "%d", iNum);
|
//secondly, convert char * to QLineEdit
|
pEdit->setText(QString(QLatin1String(strTemp)));
|
|
return HPR_OK;
|
}
|
|
int KIT_unintToEdit(QLineEdit *pEdit, unsigned int iNum)
|
{
|
char strTemp[INT_LEN];
|
memset(strTemp, 0, INT_LEN);
|
//firstly, convert int to char *
|
sprintf(strTemp, "%u", iNum);
|
//secondly, convert char * to QLineEdit
|
pEdit->setText(QString(QLatin1String(strTemp)));
|
|
return HPR_OK;
|
}
|
|
//check ip
|
int KIT_checkIP(char * ip)
|
{
|
if(ip == NULL)
|
{
|
return HPR_ERROR; //-1
|
}
|
if(strlen(ip) == 0)
|
{
|
return HPR_OK;
|
}
|
|
char str[20];
|
memset(str, 0, 20);
|
strcpy(str,ip);
|
char a;
|
int dot=0;
|
int a3, a2, a1, a0, i;
|
i = 0;
|
a3 = a2 = a1 = a0 = -1;
|
|
while ((a=str[i++]))
|
{
|
if ((a==' ')||(a=='.')||((a>='0')&&(a<='9')))
|
{
|
if (a=='.')
|
{
|
dot++;
|
}
|
}
|
else
|
{
|
return HPR_ERROR;
|
}
|
}
|
if (dot!=3)
|
{
|
return HPR_ERROR;
|
}
|
else
|
{
|
sscanf(str,"%d.%d.%d.%d",&a3,&a2,&a1,&a0);
|
if ((a0>255)||(a1>255)||(a2>255)||(a3>255))
|
{
|
return HPR_ERROR;
|
}
|
if ((a0 < 0) || (a1 < 0) || (a2 < 0) || (a3 < 0))
|
{
|
return HPR_ERROR;
|
}
|
}
|
|
return HPR_OK;
|
}
|
|
//convert QLineEdit to char*
|
int KIT_editToStr(const QLineEdit *pEdit, BYTE *pStr, int iLen)
|
{
|
if( pEdit == NULL || pStr == NULL)
|
{
|
return HPR_ERROR;
|
}
|
|
QString qstrTemp;
|
QByteArray cArrTemp;
|
|
//first, convert QLineEdit to QByteArray
|
qstrTemp = pEdit->text();
|
cArrTemp = qstrTemp.toLatin1();
|
//second, convert QByteArray to char*.
|
memcpy(pStr, cArrTemp.data(), iLen);
|
|
return HPR_OK;
|
}
|
|
int KIT_qstringToStr(const QString *pString, BYTE *pStr, int iLen)
|
{
|
if( pString == NULL || pStr == NULL)
|
{
|
return HPR_ERROR;
|
}
|
|
QByteArray cArrTemp;
|
//first, convert QLineEdit to QByteArray
|
cArrTemp = pString->toLatin1();
|
//second, convert QByteArray to char*.
|
memcpy(pStr, cArrTemp.data(), iLen);
|
|
return HPR_OK;
|
}
|
|
|
int KIT_qstringToInt(const QString *pString, int *pNum)
|
{
|
QByteArray cArrTemp;
|
const char *pTemp;
|
cArrTemp = pString->toLatin1();
|
pTemp = cArrTemp.data();
|
*pNum = atoi(pTemp);
|
|
return HPR_OK;
|
}
|
|
//convert edit to ip
|
int KIT_editToIP(const QLineEdit *pEditIP, BYTE *pIP, int iLen)
|
{
|
if( pEditIP == NULL || pIP == NULL)
|
{
|
return HPR_ERROR;
|
}
|
|
int iRet;
|
char strIP[20];
|
memset(strIP, 0, 20);
|
//1.get ip str
|
iRet = KIT_editToStr(pEditIP, (BYTE *)strIP, 20);
|
if(iRet == HPR_ERROR)
|
{
|
return HPR_ERROR;
|
}
|
//2.check ip
|
iRet = KIT_checkIP(strIP);
|
if(iRet == HPR_ERROR)
|
{
|
return HPR_ERROR;
|
}
|
else
|
{
|
memcpy(pIP, strIP, iLen);
|
}
|
|
return HPR_OK;
|
}
|
|
|
//ͨ¹ýÓû§IDÈ¥»ñȡͨµÀÐÅÏ¢, iArrayChanelInfoÊý×飺-1±íʾÎÞÐÅÏ¢£¬·Ç¸ºÊý±íʾͨµÀºÅ
|
//iArrayChanelInfoÊý×é´óСΪMAX_CHANNUM_V30
|
int KIT_GetChannelInfo(long lUserID, PKIT_CHAN_INFO pChanInfo)
|
{
|
if(pChanInfo == NULL || lUserID < 0)
|
{
|
return HPR_ERROR;
|
}
|
|
NET_DVR_DEVICECFG struDeviceParams;
|
DWORD paramsLen;
|
int iRet;
|
|
//***1.Get the channel number and IP channel number.***//
|
iRet = NET_DVR_GetDVRConfig(lUserID, NET_DVR_GET_DEVICECFG, -1,
|
&struDeviceParams, sizeof(NET_DVR_DEVICECFG), ¶msLen);
|
if (iRet == 0)
|
{
|
iRet = NET_DVR_GetLastError();
|
QMessageBox::information(NULL, "Please check!", "Get device parameters error!");
|
return HPR_ERROR;
|
}
|
pChanInfo->cStartNO = (int) (struDeviceParams.byStartChan);
|
|
//***2.Get the channel which is enabled.***//
|
//iRetµÄÖµÓÃÓÚÅжÏÊÇ·ñÖ§³ÖIPͨµÀ
|
NET_DVR_IPPARACFG struIPParams;
|
iRet = NET_DVR_GetDVRConfig(lUserID, NET_DVR_GET_IPPARACFG, -1, &struIPParams, sizeof(NET_DVR_IPPARACFG), ¶msLen);
|
int i, j;
|
j = 0;
|
if (iRet)//if support ip channel
|
{
|
pChanInfo->cSupportIP = 1;
|
//Ä£ÄâͨµÀ
|
for (i = 0; i < MAX_ANALOG_CHANNUM; i++)
|
{
|
if (struIPParams.byAnalogChanEnable[i])
|
{
|
pChanInfo->iArrayChanInfo[j]= i + pChanInfo->cStartNO;
|
j++;
|
}
|
}
|
|
//IPͨµÀ
|
for (i = 0; i < MAX_IP_CHANNEL; i++)
|
{
|
if (struIPParams.struIPChanInfo[i].byIPID != 0)
|
{
|
pChanInfo->iArrayChanInfo[j] = i + pChanInfo->cStartNO + MAX_ANALOG_CHANNUM;
|
j++;
|
}
|
}
|
}
|
else//if not support ip channel
|
{
|
pChanInfo->cSupportIP = 0;
|
//simulate channel
|
for (i = 0; (i < MAX_ANALOG_CHANNUM)&& (i < struDeviceParams.byChanNum); i++)
|
{
|
pChanInfo->iArrayChanInfo[j] = i + pChanInfo->cStartNO ;
|
j++;
|
}
|
//m_iSimChannelNum = j;
|
}
|
pChanInfo->cTotalNum = j;
|
|
//Ê£ÓàµÄÖµ¶¼ÉèÖÃΪ-1
|
for(; j < MAX_CHANNUM_V30; j++)
|
{
|
pChanInfo->iArrayChanInfo[j] = -1;
|
}
|
|
return HPR_OK;
|
}
|
|
//ͨ¹ýÓû§IDÈ¥´´½¨Ò»¸öcheckboxÊý×é; new³öÀ´µÄ±äÁ¿£¬ÓÉÍⲿÊÍ·Å
|
//¸ÃÊý×é´óСΪ64, ´«ÈëµÄÊý×éÒ»¶¨²»ÄܱÈÕâ¸öС£¬·ñÔò³ÌÐò»á±ÀÀ£
|
int KIT_CreateCheckboxChanArr(long lUserID, QCheckBox *qArrChan[], int *piTotalNum)
|
{
|
if(qArrChan == NULL || lUserID < 0)
|
{
|
return HPR_ERROR;
|
}
|
|
KIT_CHAN_INFO struChanInfo;// = {0};
|
memset(&struChanInfo, 0, sizeof(KIT_CHAN_INFO));
|
if( KIT_GetChannelInfo(lUserID, &struChanInfo) == HPR_ERROR)
|
{
|
return HPR_ERROR;
|
}
|
|
//Çå¿ÕqArrChan
|
int i;
|
for(i = 0; i < MAX_CHAN_CHECKBOX; i++)
|
{
|
qArrChan[i] = NULL;
|
}
|
|
//***new check box***//
|
char strTemp[100] = { 0 };
|
int iStartNO = (int)struChanInfo.cStartNO;
|
for (i = 0; i < MAX_CHANNUM_V30; i++)
|
{
|
//·¢ÏÖÒ»¸öͨµÀ
|
if (struChanInfo.iArrayChanInfo[i] >= 0)
|
{
|
if (struChanInfo.iArrayChanInfo[i] < MAX_ANALOG_CHANNUM) //Ä£ÄâͨµÀ
|
{
|
sprintf(strTemp, "Camora%d", struChanInfo.iArrayChanInfo[i]);
|
}
|
else//IP channel
|
{
|
if (struChanInfo.cSupportIP)//supprot IP channel
|
{
|
sprintf(strTemp, "IPCamora%d", (struChanInfo.iArrayChanInfo[i] - MAX_ANALOG_CHANNUM));
|
}
|
}
|
//new³öÀ´Ò»¸öеıäÁ¿
|
qArrChan[struChanInfo.iArrayChanInfo[i] - iStartNO] = new QCheckBox();
|
//ÉèÖÃÎı¾ÀàÈÝ
|
qArrChan[struChanInfo.iArrayChanInfo[i] - iStartNO]->setText(strTemp);
|
}
|
}
|
|
*piTotalNum = struChanInfo.cTotalNum;
|
return HPR_OK;
|
}
|
|
//¸ù¾Ý±¨¾¯Êä³öÐòºÅ£¬»ñÈ¡±¨¾¯Êä³öÃû³Æ
|
int getAlarmOutInfo(int iAlarmOut, QCheckBox *pQCheckAlarmOut)
|
{
|
char strTemp[100] = {0};
|
if(iAlarmOut < MAX_ANALOG_ALARMOUT)
|
{
|
sprintf(strTemp, "AlarmOut%d", iAlarmOut + 1);
|
}
|
else
|
{
|
sprintf(strTemp, "IPAlarmOut%d", iAlarmOut - MAX_ANALOG_ALARMOUT + 1);
|
}
|
pQCheckAlarmOut->setText(strTemp);
|
|
return HPR_OK;
|
}
|
|
int KIT_CreateCheckboxAlarmOut(long lUserID, QCheckBox *qArrAlarmOut[], int *piTotalNum)
|
{
|
if(lUserID < 0 || NULL == qArrAlarmOut || NULL == piTotalNum)
|
{
|
return HPR_ERROR;
|
}
|
|
int iRet;
|
DWORD uiReturnLen;
|
//¿ÉÓÃÄ£Äⱨ¾¯Êä³ö¸öÊý
|
NET_DVR_DEVICECFG struDeviceInfo;
|
iRet = NET_DVR_GetDVRConfig(lUserID, NET_DVR_GET_DEVICECFG, -1, &struDeviceInfo, sizeof(NET_DVR_DEVICECFG), &uiReturnLen);
|
if(iRet == 0)
|
{
|
iRet = NET_DVR_GetLastError();
|
return HPR_ERROR;
|
//QMessageBox::information(this, tr("Please check!"), tr("Get device parameters error! \"%1\"").arg(iRet));
|
}
|
|
//IP±¨¾¯Êä³ö
|
NET_DVR_IPALARMOUTCFG struIPAlarmOut;
|
iRet = NET_DVR_GetDVRConfig(lUserID, NET_DVR_GET_IPALARMOUTCFG, -1, &struIPAlarmOut, sizeof(NET_DVR_IPALARMOUTCFG), &uiReturnLen);
|
if(iRet == 0)
|
{
|
//²»Ö§³ÖIP±¨¾¯Êä³ö
|
memset(&struIPAlarmOut, 0, sizeof(struIPAlarmOut));
|
iRet = NET_DVR_GetLastError();
|
//QMessageBox::information(this, tr("Please check!"), tr("Get device parameters error! \"%1\"").arg(iRet));
|
}
|
|
//»ñÈ¡IP±¨¾¯Êä³öµÄ¸öÊý£¬ÒÔÉèÖñí¸ñµÄÐÐÊý
|
int i;
|
int iRow = 0;
|
for(i = 0; i < MAX_IP_ALARMOUT; i++ )
|
{
|
if(struIPAlarmOut.struIPAlarmOutInfo[i].byIPID > 0)
|
{
|
iRow++;
|
}
|
}
|
iRow += struDeviceInfo.byAlarmOutPortNum;
|
*piTotalNum = iRow;
|
|
//Çå¿ÕÊý×飬¿ªÊ¼new³öcheckbox
|
for(i = 0; i < MAX_ALARMOUT_V30; i++)
|
{
|
qArrAlarmOut[i] = NULL;
|
}
|
//new³öÄ£Äⱨ¾¯Êä³ö
|
for(i = 0; i < struDeviceInfo.byAlarmOutPortNum && i < MAX_ANALOG_ALARMOUT; i++)
|
{
|
//new Ò»¸öеÄcheckbox
|
qArrAlarmOut[i] = new(std::nothrow) QCheckBox;
|
//»ñÈ¡±¨¾¯Êä³öÃû
|
getAlarmOutInfo(i, qArrAlarmOut[i]);
|
}
|
|
//new³öIP±¨¾¯Êä³ö
|
for(i = 0; i < MAX_IP_ALARMOUT; i++)
|
{
|
//ÅжÏIP±¨¾¯Êä³öÊÇ·ñ¿ÉÓÃ
|
if(struIPAlarmOut.struIPAlarmOutInfo[i].byIPID > 0)
|
{
|
//new³öÀ´Ò»¸öеÄcheckbox
|
qArrAlarmOut[i + MAX_ANALOG_ALARMOUT] = new(std::nothrow) QCheckBox;
|
//»ñÈ¡±¨¾¯Êä³öÃû³Æ
|
getAlarmOutInfo(i + MAX_ANALOG_ALARMOUT, qArrAlarmOut[i + MAX_ANALOG_ALARMOUT]);
|
}
|
}
|
|
return HPR_OK;
|
}
|
|
//ÐÅÏ¢ÀàÐÍ£¬Ìáʾ·½Ê½
|
int KIT_DisplayErrorInfo(char *pInfoType, int iDisplayType)
|
{
|
//Ŀǰֻ֧³ÖÒ»ÖÖÏÔʾ·½Ê½
|
if(NULL == pInfoType || iDisplayType != KIT_ERRPR_DIS_TYPE)
|
{
|
return HPR_ERROR;
|
}
|
|
int iError = 0;
|
iError = NET_DVR_GetLastError();
|
char strError[100] = {0};
|
if (NET_DVR_NOSUPPORT == iError)
|
{
|
sprintf(strError, "Device not support: %s", pInfoType);
|
}
|
else
|
{
|
sprintf(strError, "%s unsuccessfully!error:%d", pInfoType, iError);
|
}
|
|
if(KIT_ERRPR_DIS_TYPE == iDisplayType)
|
{
|
QMessageBox::information(NULL, QObject::tr("Please check!"), strError);
|
}
|
|
return HPR_OK;
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|