Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gamera_videos_no_ui
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liusq
gamera_videos_no_ui
Commits
47306f3d
Commit
47306f3d
authored
Oct 15, 2024
by
“liusq”
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改gb28181和新增mac推送
parent
0fd25424
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
258 additions
and
169 deletions
+258
-169
CameraHandle.cpp
+67
-51
CameraHandle.h
+39
-35
Common.cpp
+0
-4
Common.h
+2
-1
FaceReconitionHandle.cpp
+46
-20
FaceReconitionHandle.h
+5
-0
HttpService.cpp
+3
-0
MediaFaceImage.cpp
+1
-0
MqttSubscriber.cpp
+3
-2
NonConnectedCameraHandle.cpp
+8
-8
NonConnectedCameraHandle.h
+0
-1
VidesData.h
+23
-2
mainwindow.cpp
+60
-44
mainwindow.h
+1
-1
No files found.
CameraHandle.cpp
View file @
47306f3d
...
...
@@ -1017,7 +1017,7 @@ void CameraHandle::printWifi(XSDK_HANDLE hDevice,XSDK_CFG::NetWork_Wifi &cfg){
需注意和定时任务对比GB28181配置冲突处理
需确认修改IP后抓图是否正常,如不正常需在命令开始前增加删除句柄,命令完成后增加句柄以保证抓图实时性
*/
int
CameraHandle
::
resetGb28181
(
QString
&
uuiq
){
int
CameraHandle
::
resetGb28181
(){
NonConnectedCameraHandle
*
connectedCameraHandle
=
NonConnectedCameraHandle
::
getInstance
();
int
old
=
this
->
hDevice
;
qInfo
()
<<
QString
(
"SN(%1): resetGb28181老句柄%2"
).
arg
(
sSn
).
arg
(
old
);
...
...
@@ -1110,6 +1110,67 @@ int CameraHandle::resetGb28181(QString &uuiq){
//this->updateSdkDevStatus(true);
return
1
;
}
void
CameraHandle
::
initWorkSpVMn
(
vides_data
::
responseGb28181
*
gb28181
,
QString
&
workSpWMn
){
// 构建 toJsonObject
QJsonObject
toJsonObject
;
toJsonObject
[
"szCsIP"
]
=
gb28181
->
sip_ip
;
toJsonObject
[
"szServerNo"
]
=
gb28181
->
serial
;
toJsonObject
[
"sCsPort"
]
=
gb28181
->
sip_port
;
toJsonObject
[
"szServerDn"
]
=
gb28181
->
realm
;
toJsonObject
[
"iRsAgedTime"
]
=
gb28181
->
register_validity
;
toJsonObject
[
"iHsIntervalTime"
]
=
gb28181
->
heartbeat_interval
;
toJsonObject
[
"szConnPass"
]
=
gb28181
->
password
;
toJsonObject
[
"szDeviceNO"
]
=
gb28181
->
device_id
;
// 构建 AlarmLevel 数组
QJsonArray
alarmLevelArray
;
for
(
int
i
=
0
;
i
<
8
;
++
i
)
{
alarmLevelArray
.
append
(
0
);
}
toJsonObject
[
"AlarmLevel"
]
=
alarmLevelArray
;
// 构建 Alarmid 数组
QJsonArray
alarmidArray
;
for
(
int
i
=
1
;
i
<=
8
;
++
i
)
{
alarmidArray
.
append
(
"3402000000134000000"
+
QString
::
number
(
i
,
10
).
rightJustified
(
2
,
'0'
));
}
toJsonObject
[
"Alarmid"
]
=
alarmidArray
;
// 构建 CamreaLevel 数组
QJsonArray
camreaLevelArray
;
for
(
int
i
=
0
;
i
<
8
;
++
i
)
{
camreaLevelArray
.
append
(
0
);
}
toJsonObject
[
"CamreaLevel"
]
=
camreaLevelArray
;
// 构建 Camreaid 数组
QJsonArray
camreaidArray
;
for
(
int
i
=
1
;
i
<=
8
;
++
i
)
{
if
(
i
==
1
)
{
camreaidArray
.
append
(
gb28181
->
channel_id
);
}
else
{
camreaidArray
.
append
(
"3402000000131000001"
+
QString
::
number
(
i
,
10
).
rightJustified
(
2
,
'0'
));
}
}
toJsonObject
[
"Camreaid"
]
=
camreaidArray
;
// 添加其他字段
toJsonObject
[
"HeartBeatCount"
]
=
0
;
toJsonObject
[
"bCsEnable"
]
=
true
;
toJsonObject
[
"uiAlarmStateBlindEnable"
]
=
"0xFFFFFFFF"
;
toJsonObject
[
"uiAlarmStateConnectEnable"
]
=
"0xFFFFFFFF"
;
toJsonObject
[
"uiAlarmStateGpinEnable"
]
=
"0xFFFFFFFF"
;
toJsonObject
[
"uiAlarmStateLoseEnable"
]
=
"0xFFFFFFFF"
;
toJsonObject
[
"uiAlarmStateMotionEnable"
]
=
"0xFFFFFFFF"
;
toJsonObject
[
"uiAlarmStatePerformanceEnable"
]
=
"0xFFFFFFFF"
;
toJsonObject
[
"sUdpPort"
]
=
5060
;
// 生成 workSpWMn
QJsonDocument
doc
(
toJsonObject
);
QByteArray
jsonDataOutput
=
doc
.
toJson
(
QJsonDocument
::
Compact
);
workSpWMn
=
QString
::
fromUtf8
(
jsonDataOutput
);
}
int
CameraHandle
::
forceWriteGb28181
(){
Common
&
instace
=
Common
::
getInstance
();
...
...
@@ -1117,63 +1178,18 @@ int CameraHandle::forceWriteGb28181(){
vides_data
::
response
*
res
=
http_gb28181
.
httpFindGb28181Config
(
sSn
);
ScopeSemaphoreExit
guard
([
&
instace
,
&
res
]()
{
instace
.
deleteObj
(
res
);
});
if
(
res
->
code
!=
0
){
qInfo
()
<<
"请求摄像头gb28181配置失败"
;
return
-
1
;
}
QString
stGb281
;
vides_data
::
responseGb28181
*
gb28181
=
reinterpret_cast
<
vides_data
::
responseGb28181
*>
(
res
->
data
);
XSDK_CFG
::
NetWork_SPVMN
config
;
config
.
Camreaid
.
InitArraySize
(
64
);
for
(
int
i
=
1
;
i
<=
64
;
++
i
)
{
if
(
i
==
1
)
{
QByteArray
b_StrValue
=
gb28181
->
channel_id
.
toUtf8
();
const
char
*
str_Value
=
b_StrValue
.
constData
();
JStrObj
*
newCameraId
=
&
config
.
Camreaid
[
i
-
1
];
newCameraId
->
operator
=
(
str_Value
);
}
else
{
QString
str
(
"3402000000131000001"
+
QString
::
number
(
i
,
10
).
rightJustified
(
2
,
'0'
));
QByteArray
b_Str
=
str
.
toUtf8
();
const
char
*
s_ct
=
b_Str
.
constData
();
JStrObj
*
newCameraId
=
&
config
.
Camreaid
[
i
-
1
];
newCameraId
->
operator
=
(
s_ct
);
}
}
QByteArray
&&
bSip_ip
=
gb28181
->
sip_ip
.
toUtf8
();
char
*
sip_ip
=
bSip_ip
.
data
();
config
.
szCsIP
.
SetValue
(
sip_ip
);
QByteArray
&&
bSzServerNo
=
gb28181
->
serial
.
toUtf8
();
char
*
sz_ServerNo
=
bSzServerNo
.
data
();
config
.
szServerNo
.
SetValue
(
sz_ServerNo
);
config
.
sCsPort
.
SetValue
(
gb28181
->
sip_port
);
config
.
sUdpPort
.
SetValue
(
5060
);
QByteArray
&&
bSzServerDn
=
gb28181
->
realm
.
toUtf8
();
char
*
sz_ServerDn
=
bSzServerDn
.
data
();
config
.
szServerDn
.
SetValue
(
sz_ServerDn
);
config
.
bCsEnable
.
SetValue
(
true
);
config
.
iRsAgedTime
.
SetValue
(
gb28181
->
register_validity
);
config
.
iHsIntervalTime
.
SetValue
(
gb28181
->
heartbeat_interval
);
QByteArray
&&
bSzConnPass
=
gb28181
->
password
.
toUtf8
();
char
*
sz_connPass
=
bSzConnPass
.
data
();
config
.
szConnPass
.
SetValue
(
sz_connPass
);
QByteArray
&&
bDevice_id
=
gb28181
->
device_id
.
toUtf8
();
char
*
cdevice_id
=
bDevice_id
.
data
();
config
.
szDeviceNO
.
SetValue
(
cdevice_id
);
const
char
*
pCfg
=
config
.
ToString
();
sdkDevSpvMn
(
pCfg
);
initWorkSpVMn
(
gb28181
,
stGb281
);
QByteArray
bGb
=
stGb281
.
toUtf8
();
const
char
*
pCfg
=
bGb
.
data
();
qInfo
()
<<
"forceWriteGb28181"
<<
pCfg
;
return
sdkDevSpvMn
(
pCfg
);
}
bool
CameraHandle
::
sdkWifi
(
QString
&
pwd
,
QString
&
ssid
){
...
...
CameraHandle.h
View file @
47306f3d
...
...
@@ -42,7 +42,7 @@ enum CAR_INFORMATION {
class
CameraHandle
:
public
QObject
{
Q_OBJECT
public
:
CameraHandle
(
QString
&
url
,
QString
&
httpUrl
,
QString
&
sSn
,
int
&
channel
,
int
imageSave
,
float
&
heightReference
,
vides_data
::
responseConfig
&
devConfig
);
...
...
@@ -50,7 +50,7 @@ public:
~
CameraHandle
();
int
sdkDevLoginSyn
(
QString
sDevId
,
int
nDevPort
,
QString
sUserName
,
QString
sPassword
,
int
nTimeout
);
//int SdkMediaGetFaceImage(int hDevice, int nSeq, int nTimeout);
int
sdkDevSetAlarmListener
(
XSDK_HANDLE
hDevice
,
int
bListener
);
int
getHdevice
();
...
...
@@ -64,33 +64,33 @@ public:
void
cameraParameterUpdate
(
vides_data
::
responseConfig
&
cloudConfig
);
void
initSdkRealTimeDevSnapSyn
(
int
syn_timer
,
uint64
face_frequency
);
void
notificationUpdateImageMap
(
std
::
map
<
QString
,
QString
>&
maps
,
int
numberFaces
,
float
confidence
);
void
featureRemove
();
void
updateImage
(
const
cv
::
Mat
&
frame
,
qint64
currentTime
);
void
matToBase64
(
const
cv
::
Mat
&
image
,
QByteArray
&
base64Data
);
//把原始图片转换成不同区域的掩码
void
matToAreaMask
(
const
cv
::
Mat
&
source
,
std
::
map
<
int
,
cv
::
Mat
>
&
maskFrame
);
int
callbackFunction
(
XSDK_HANDLE
hObject
,
QString
&
szString
);
void
checkAndUpdateCurrentPlate
(
ParkingSpaceInfo
*
park
,
const
cv
::
Mat
&
frame
,
RecognizedInfo
&
newInfo
,
int
&
result
);
void
licensePlateRecognitionResults
(
vides_data
::
requestLicensePlate
&
location
);
void
sdkDevSnapSyn
(
XSDK_HANDLE
hDevice
,
int
nChannel
);
void
printWifi
(
XSDK_HANDLE
hDevice
,
XSDK_CFG
::
NetWork_Wifi
&
cfg
);
bool
isWifiConnect
(
XSDK_HANDLE
hDevice
,
XSDK_CFG
::
NetWork_Wifi
&
cfg
);
void
setCarConfidenceMaxAndMin
(
float
carConfidenceMax
,
float
carConfidenceMin
);
//设置相机连接的wifi
bool
sdkWifi
(
QString
&
pwd
,
QString
&
ssid
);
//时间设置
...
...
@@ -103,10 +103,10 @@ public:
int
sdkDevSpvMn
(
const
char
*
spvMn
);
//gb218开启
int
updateSdkDevStatus
(
bool
status
);
void
updateSdkDevSpvMn
(
vides_data
::
responseGb28181
*
gb28181
);
//重启设备
int
deviceReboot
();
//设备关机
...
...
@@ -114,34 +114,37 @@ public:
//获取固件版本
void
findFirmwareVersion
(
QString
&
firmwareVersion
);
//复位GB28181
int
resetGb28181
(
QString
&
uuiq
);
int
resetGb28181
();
//强制gb28181配置后写入摄像头
int
forceWriteGb28181
();
void
initWorkSpVMn
(
vides_data
::
responseGb28181
*
gb28181
,
QString
&
workSpWMn
);
//获取ip
void
findIp
(
QString
&
ip
);
void
sdkDownloadFileByTime
(
XSDK_HANDLE
hDevice
,
int
id
,
QString
startTimer
,
QString
endTime
);
void
batchRegionalPushLicensePlate
(
QByteArray
&
imgs
,
qint64
currentTime
,
vides_data
::
requestLicensePlate
&
newPlate
);
void
faceUniformOverlap
(
std
::
map
<
QString
,
vides_data
::
requestFaceReconition
>&
mapFaces
,
std
::
vector
<
vides_data
::
ParkingArea
>
&
uniforms
,
std
::
list
<
QString
>&
outUniforms
);
bool
isClockwise
(
const
std
::
vector
<
cv
::
Point2f
>&
polygon
);
QString
getSSn
();
int
getMediaHandle
();
void
setMediaHandle
(
int
mediaHandle
);
void
initAlgorithmPermissions
(
__uint8_t
algorithm
);
void
initFaceFrequency
(
uint64
face_frequency
);
void
initParkingSpaceInfo
(
const
std
::
list
<
vides_data
::
responseArea
>&
areas
);
bool
compareLists
(
const
std
::
list
<
vides_data
::
responseArea
>&
newAreas
);
...
...
@@ -160,13 +163,13 @@ public:
// 计算两个多边形的交集面积
double
calculateIntersectionArea
(
const
QPolygonF
&
polygon1
,
const
QPolygonF
&
polygon2
);
double
ccw
(
const
QPointF
&
a
,
const
QPointF
&
b
,
const
QPointF
&
c
);
void
getCurrentFrame
(
std
::
vector
<
uchar
>
&
buffer
);
bool
isAnyOverlap
(
ParkingSpaceInfo
*
parkArea
,
std
::
vector
<
vides_data
::
ParkingArea
>
&
currentPlates
);
int
findPointRegion
(
ParkingSpaceInfo
&
prakArea
);
int
determineArea
(
ParkingSpaceInfo
&
prakArea
);
signals
:
void
callbackFrameReady
(
const
cv
::
Mat
&
frame
,
const
QString
&
url
);
...
...
@@ -181,10 +184,10 @@ private :
int
hDevice
;
int
channel
;
QString
httpUrl
;
SXSDKLoginParam
*
loginParam
;
SXMediaFaceImageReq
*
sxMediaFaceImageReq
;
QString
sSn
;
QString
url
;
std
::
map
<
int
,
vides_data
::
responseRecognitionData
>
videoCurrentData
;
...
...
@@ -204,14 +207,15 @@ private :
QTimer
*
dev_snap_syn_timer
;
int
offlineCount
=
0
;
QSemaphore
semaphore
;
int
image_save
;
std
::
atomic
<
uint64
>
faceCount
;
std
::
atomic
<
bool
>
isOperateGb28181
{
false
};
uint64
face_frequency
;
__uint8_t
algorithmPermissions
;
...
...
@@ -219,11 +223,11 @@ private :
vides_data
::
responseConfig
devConfig
;
float
heightReference
;
float
carConfidenceMax
;
float
carConfidenceMin
;
};
#endif // CAMERAHANDLE_H
Common.cpp
View file @
47306f3d
...
...
@@ -201,10 +201,6 @@ bool Common::pingAddress(const QString &address) {
return
true
;
// 成功,返回true
}
//获取本机mask
bool
GetLocalNetMask
(
const
char
*
eth_inf
,
char
*
netmask_addr
)
{
...
...
Common.h
View file @
47306f3d
...
...
@@ -33,7 +33,7 @@
#define ICMP_HDRLEN 8
#define PAYLOAD_SIZE 56
#define MAC_SIZE 18
// ICMP 头部结构体
struct
ICMPHeader
{
uint8_t
type
;
// 类型
...
...
@@ -78,6 +78,7 @@ public:
QString
GetLocalGateWay
();
//获取本机gateway
bool
pingAddress
(
const
QString
&
address
)
;
QString
getImages
();
void
setImages
(
QString
images
);
...
...
FaceReconitionHandle.cpp
View file @
47306f3d
...
...
@@ -46,23 +46,23 @@ cv::Mat FaceReconitionHandle::loadImage(const QString &path) {
return
image
;
}
image
=
loadImageFromByteStream
(
path
);
if
(
!
image
.
empty
())
{
qInfo
()
<<
"图像以CImg成功加载。"
;
return
image
;
}
image
=
loadImageWithSTB
(
path
);
if
(
!
image
.
empty
())
{
qInfo
()
<<
"图像以stb_image成功加载。"
;
return
image
;
}
image
=
loadQImageFromByteStream
(
path
);
if
(
!
image
.
empty
())
{
qInfo
()
<<
"图像以QImage成功加载。"
;
return
image
;
}
qInfo
()
<<
"四种加载方式都不行"
;
return
cv
::
Mat
();
image
=
loadImageFromByteStream
(
path
);
if
(
!
image
.
empty
())
{
qInfo
()
<<
"图像以CImg成功加载。"
;
return
image
;
}
image
=
loadImageWithSTB
(
path
);
if
(
!
image
.
empty
())
{
qInfo
()
<<
"图像以stb_image成功加载。"
;
return
image
;
}
image
=
loadQImageFromByteStream
(
path
);
if
(
!
image
.
empty
())
{
qInfo
()
<<
"图像以QImage成功加载。"
;
return
image
;
}
qInfo
()
<<
"四种加载方式都不行"
;
return
cv
::
Mat
();
}
...
...
@@ -70,7 +70,8 @@ void FaceReconitionHandle::initSourceImageMap(std::map<QString,QString>&maps,int
ScopeSemaphoreExit
streamGuard
([
this
]()
{
isImageChanged
.
store
(
false
,
std
::
memory_order_release
);
});
featureRemove
();
//featureRemove();
featureRemoveMap
(
maps
);
HResult
ret
;
// 初始化context
#if defined(__arm__) || defined(__ARM_ARCH)
...
...
@@ -95,7 +96,7 @@ void FaceReconitionHandle::initSourceImageMap(std::map<QString,QString>&maps,int
return
;
}
}
customIds
.
clear
();
//
customIds.clear();
int
i
=
0
;
qInfo
()
<<
"加载图像size: "
<<
maps
.
size
();
...
...
@@ -146,7 +147,8 @@ void FaceReconitionHandle::initSourceImageMap(std::map<QString,QString>&maps,int
HF_FaceFeatureIdentity
identity
=
{
0
};
identity
.
feature
=
&
feature
;
identity
.
customId
=
i
;
customIds
.
push_back
(
identity
.
customId
);
//customIds.push_back( identity.customId);
mapCustomId
[
key
]
=
i
;
identity
.
tag
=
tagName
;
ret
=
HF_FeaturesGroupInsertFeature
(
ctxHandle
,
identity
);
...
...
@@ -178,6 +180,30 @@ void FaceReconitionHandle::featureRemove(){
setImageChanged
(
false
);
}
}
void
FaceReconitionHandle
::
featureRemoveMap
(
std
::
map
<
QString
,
QString
>
&
maps
){
if
(
mapCustomId
.
size
()
>
0
){
for
(
auto
it
=
mapCustomId
.
begin
();
it
!=
mapCustomId
.
end
();
)
{
// 检查当前键是否存在于 maps 中
if
(
maps
.
find
(
it
->
first
)
==
maps
.
end
())
{
int32_t
&
customId
=
it
->
second
;
// 如果不存在,则从 mapCustomId 中删除该键
it
=
mapCustomId
.
erase
(
it
);
HResult
ret
=
HF_FeaturesGroupFeatureRemove
(
ctxHandle
,
customId
);
if
(
ret
!=
HSUCCEED
)
{
qInfo
()
<<
QString
(
"从特征组中移除一个面部特征失败: %1"
).
arg
(
ret
);
continue
;
}
}
else
{
// 如果存在,则继续下一个元素
++
it
;
}
}
setImageChanged
(
false
);
}
}
cv
::
Mat
FaceReconitionHandle
::
loadImageWithSTB
(
const
QString
&
filename
)
{
int
width
,
height
,
channels
;
QByteArray
&&
b_filename
=
filename
.
toUtf8
();
...
...
FaceReconitionHandle.h
View file @
47306f3d
...
...
@@ -20,6 +20,8 @@ private:
std
::
vector
<
int32_t
>
customIds
;
std
::
map
<
QString
,
int32_t
>
mapCustomId
;
std
::
atomic
<
bool
>
isImageChanged
{
false
};
public
:
FaceReconitionHandle
();
...
...
@@ -44,5 +46,8 @@ public:
void
featureRemove
();
void
featureRemoveMap
(
std
::
map
<
QString
,
QString
>&
maps
);
};
#endif // FACERECONITIONHANDLE_H
HttpService.cpp
View file @
47306f3d
...
...
@@ -20,7 +20,9 @@ vides_data::response* HttpService::httpPostDeviceStatus(vides_data::requestDevic
QJsonObject
json
;
json
.
insert
(
"sn"
,
deviceStatus
.
sSn
);
json
.
insert
(
"type"
,
deviceStatus
.
type
);
json
.
insert
(
"mac"
,
deviceStatus
.
mac
);
json
.
insert
(
"state"
,
deviceStatus
.
status
);
json
.
insert
(
"ip_addr"
,
deviceStatus
.
ip_addr
);
json
.
insert
(
"firmware_version"
,
deviceStatus
.
firmware_version
);
// 将固件版本添加到主 JSON 对象中
...
...
@@ -30,6 +32,7 @@ vides_data::response* HttpService::httpPostDeviceStatus(vides_data::requestDevic
QJsonObject
cameraObject
;
cameraObject
.
insert
(
"sn"
,
cameraInfo
.
sSn
);
cameraObject
.
insert
(
"ip_addr"
,
cameraInfo
.
ip_addr
);
cameraObject
.
insert
(
"mac"
,
cameraInfo
.
mac
);
cameraObject
.
insert
(
"firmware_version"
,
cameraInfo
.
firmware_version
);
cameraArray
.
append
(
cameraObject
);
}
...
...
MediaFaceImage.cpp
View file @
47306f3d
...
...
@@ -106,6 +106,7 @@ int MediaFaceImage::SdkSearchDevicesSyn(std::map<QString, vides_data::localDevic
pDevice
->
HttpPort
=
pRet
[
i
].
HttpPort
;
pDevice
->
UserName
=
QString
::
fromUtf8
(
pRet
[
i
].
DefaultUser
,
sizeof
(
pRet
[
i
].
DefaultUser
));
pDevice
->
password
=
QString
::
fromUtf8
(
pRet
[
i
].
DefaultPwd
,
sizeof
(
pRet
[
i
].
DefaultPwd
));
pDevice
->
mac
=
QString
::
fromUtf8
(
pRet
[
i
].
sMac
);
devices
.
insert
(
std
::
make_pair
(
pDevice
->
sSn
,
pDevice
));
}
...
...
MqttSubscriber.cpp
View file @
47306f3d
...
...
@@ -199,7 +199,7 @@ int MqttSubscriber::messageArrived(char* topicName, int topicLen, MQTTAsync_mess
}
else
{
qInfo
()
<<
"Failed to parse JSON payload"
;
}
//1开 2关 3 重启 4 GB28181开 5 GB28181 关 6 一键配网 7 WIFI配留 8 复位GB28181
//1开 2关 3 重启 4 GB28181开 5 GB28181 关 6 一键配网 7 WIFI配留 8 复位GB28181
9 修改GB28181
int
res
=
-
2
;
CameraHandle
*
cameraHandle
=
MainWindow
::
sp_this
->
findHandle
(
response
.
sn
);
int
hDevice
=
0
;
...
...
@@ -228,7 +228,8 @@ int MqttSubscriber::messageArrived(char* topicName, int topicLen, MQTTAsync_mess
}
break
;
}
case
8
:
res
=
cameraHandle
->
resetGb28181
(
response
.
uniq
);
break
;
case
8
:
res
=
cameraHandle
->
resetGb28181
();
break
;
case
9
:
res
=
cameraHandle
->
forceWriteGb28181
();
break
;
default
:
qInfo
()
<<
"Unknown message type"
;
break
;
}
}
...
...
NonConnectedCameraHandle.cpp
View file @
47306f3d
...
...
@@ -24,23 +24,23 @@ NonConnectedCameraHandle* NonConnectedCameraHandle::getInstance()
bool
NonConnectedCameraHandle
::
changeCameraIp
(
vides_data
::
localDevice
&
device
){
Common
&
instace
=
Common
::
getInstance
();
char
interface
[
IFNAMSIZ
];
// 确定当前网络接口
instace
.
determine_interface
(
interface
);
QString
subnetMask
;
bool
sub
=
vides_data
::
GetSubnetMask
(
subnetMask
);
QString
gateway
=
instace
.
GetLocalGateWay
();
if
(
!
sub
&&
gateway
.
length
()
==
0
)
{
qInfo
()
<<
QString
(
"SN(%1): 获取本地MAC失败"
).
arg
(
device
.
sSn
);
return
false
;
}
QByteArray
&&
byJsonIp
=
device
.
reachableIp
.
toUtf8
();
const
char
*
charIp
=
byJsonIp
.
data
();
...
...
@@ -250,7 +250,7 @@ int NonConnectedCameraHandle::sdkDevLoginSyn(QString sDevId, int nDevPort,
}
bool
NonConnectedCameraHandle
::
distributionNetwork
(
QString
&
ip
,
QString
&
sSn
,
int
hDevice
){
Common
&
instace
=
Common
::
getInstance
();
if
(
ip
.
length
()
>
0
&&
instace
.
pingAddress
(
ip
)){
qInfo
()
<<
QString
(
"SN(%1): 当前ip已被使用%2"
).
arg
(
sSn
).
arg
(
ip
);
return
false
;
...
...
NonConnectedCameraHandle.h
View file @
47306f3d
...
...
@@ -31,7 +31,6 @@ public:
int
sdkDevLoginSyn
(
QString
sDevId
,
int
nDevPort
,
QString
sUserName
,
QString
sPassword
,
int
nTimeout
)
;
private
:
NonConnectedCameraHandle
();
// 构造函数声明为私有
~
NonConnectedCameraHandle
();
// 析构函数声明为私有
...
...
VidesData.h
View file @
47306f3d
...
...
@@ -36,6 +36,7 @@ struct requestCameraInfo{
QString
ip_addr
;
QString
firmware_version
;
QString
sSn
;
QString
mac
;
requestCameraInfo
()
{}
};
...
...
@@ -46,6 +47,7 @@ struct requestDeviceStatus
int8_t
status
;
QString
ip_addr
;
QString
firmware_version
;
QString
mac
;
std
::
list
<
requestCameraInfo
>
camera_info_list
;
requestDeviceStatus
()
{}
};
...
...
@@ -106,6 +108,7 @@ struct localDeviceStatus
int
ChannelNum
;
QString
UserName
;
QString
password
;
QString
mac
;
localDeviceStatus
()
{}
};
struct
localDevice
...
...
@@ -188,6 +191,7 @@ struct cameraParameters
QString
sSn
;
QString
rtspUrl
;
QString
rtmpUrl
;
QString
mac
;
cameraParameters
()
{}
};
struct
NetWorkNetCommon
{
...
...
@@ -441,13 +445,30 @@ inline bool isInSameSubnet(const QString &ip1, const QString &ip2, const QString
return
result1
==
result2
;
}
inline
QString
getHostMacAddress
()
{
QList
<
QNetworkInterface
>
nets
=
QNetworkInterface
::
allInterfaces
();
// 获取所有网络接口列表
int
nCnt
=
nets
.
count
();
QString
strMacAddr
=
""
;
for
(
int
i
=
0
;
i
<
nCnt
;
i
++
)
{
// 如果此网络接口被激活并且正在运行并且不是回环地址,则就是我们需要找的Mac地址
if
(
nets
[
i
].
flags
().
testFlag
(
QNetworkInterface
::
IsUp
)
&&
nets
[
i
].
flags
().
testFlag
(
QNetworkInterface
::
IsRunning
)
&&
!
nets
[
i
].
flags
().
testFlag
(
QNetworkInterface
::
IsLoopBack
))
{
strMacAddr
=
nets
[
i
].
hardwareAddress
();
break
;
}
}
return
strMacAddr
.
toLower
();
}
// 获取子网掩码
inline
bool
GetSubnetMask
(
QString
&
subnetMask
)
{
QList
<
QNetworkInterface
>
interfaces
=
QNetworkInterface
::
allInterfaces
();
foreach
(
QNetworkInterface
interface
,
interfaces
)
{
if
(
interface
.
flags
().
testFlag
(
QNetworkInterface
::
IsUp
)
&&
interface
.
flags
().
testFlag
(
QNetworkInterface
::
IsRunning
)
&&
!
interface
.
flags
().
testFlag
(
QNetworkInterface
::
IsLoopBack
))
{
interface
.
flags
().
testFlag
(
QNetworkInterface
::
IsRunning
)
&&
!
interface
.
flags
().
testFlag
(
QNetworkInterface
::
IsLoopBack
))
{
QList
<
QNetworkAddressEntry
>
addressEntries
=
interface
.
addressEntries
();
foreach
(
QNetworkAddressEntry
entry
,
addressEntries
)
{
...
...
mainwindow.cpp
View file @
47306f3d
This diff is collapsed.
Click to expand it.
mainwindow.h
View file @
47306f3d
...
...
@@ -63,7 +63,7 @@ public:
void
removeImageFiles
(
QString
id
);
void
modifyImagesAndNames
(
QString
&
modId
);
void
modifyImagesAndNames
(
QString
&
modId
,
std
::
map
<
QString
,
QString
>
&
currentImageMap
);
void
findLocalSerialNumber
(
QString
&
serialNumber
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment