Commit 2bbf758b by “liusq”

当sn相同ip不相同,强制下线以前ip,按理来说修改ip,以前应该句柄抓图会失败

parent 47306f3d
......@@ -910,6 +910,9 @@ void CameraHandle::updateImage(const cv::Mat & frame,qint64 currentTime){
void CameraHandle::findIp(QString &ip){
ip=QString::fromStdString(loginParam->sDevId);
}
void CameraHandle::findPort(int &port){
port=loginParam->nDevPort;
}
void CameraHandle::findFirmwareVersion(QString &firmwareVersion){
char szOutBuffer[1024] = { 0 };
......
......@@ -124,6 +124,9 @@ public:
//获取ip
void findIp(QString &ip);
void findPort(int &port);
void sdkDownloadFileByTime(XSDK_HANDLE hDevice,int id,
QString startTimer,QString endTime);
......
......@@ -531,7 +531,7 @@ void MainWindow::startCamera(const QString &httpurl){
HttpService httpService(httpurl);
vides_data::response *re= httpService.httpFindCameras(serialNumber,devices);
if(re->code==0 || re->code==20004){
//本次搜索到设备列表
std::map<QString,vides_data::localDeviceStatus*> localDevices;
mediaFaceImage->SdkSearchDevicesSyn(localDevices);
if(localDevices.size()<=0){
......@@ -574,18 +574,30 @@ void MainWindow::startCamera(const QString &httpurl){
instace.deleteObj(devRes);
//未连接的CameraHandle
if(faceDetectionParkingPushs.count(key)<=0){
vides_data::cameraParameters parameter;
parameter.sDevId=ipAddress;
parameter.nDevPort=localDevice->TCPPort;
parameter.sUserName=devConfig.camera.username;
parameter.sPassword=devConfig.camera.password;
parameter.channel=localDevice->ChannelNum;
parameter.httpUrl=nonConstHttpUrl;
parameter.sSn=device.sSn;
parameter.mac=localDevice->mac;
//parameter.rtspUrl="rtsp://192.168.10.131:554/user=admin&password=&channel=1&stream=1.sdp?";
//parameter.rtspUrl=std::move(QString("rtsp://admin:@%1/stream1").arg(ipAddress));
this->initCameras(parameter,devConfig,device.areas,reStatus.camera_info_list);
//ip变了 sn一样
auto old=findHandle(device.sSn);
if(old!=nullptr){
QString ipAddress;
int port;
old->findIp(ipAddress);
old->findPort(port);
qInfo()<<QString("SN(%1): 清理掉变动的老ip:%2,port:%3").arg(device.sSn)
.arg(ipAddress).arg(port);
clearOfflineCameraHandle(ipAddress,port);
}else{
vides_data::cameraParameters parameter;
parameter.sDevId=ipAddress;
parameter.nDevPort=localDevice->TCPPort;
parameter.sUserName=devConfig.camera.username;
parameter.sPassword=devConfig.camera.password;
parameter.channel=localDevice->ChannelNum;
parameter.httpUrl=nonConstHttpUrl;
parameter.sSn=device.sSn;
parameter.mac=localDevice->mac;
//parameter.rtspUrl="rtsp://192.168.10.131:554/user=admin&password=&channel=1&stream=1.sdp?";
//parameter.rtspUrl=std::move(QString("rtsp://admin:@%1/stream1").arg(ipAddress));
this->initCameras(parameter,devConfig,device.areas,reStatus.camera_info_list);
}
}
else {
auto it = this->faceDetectionParkingPushs.find(key);
......@@ -598,8 +610,6 @@ void MainWindow::startCamera(const QString &httpurl){
camera_info.mac=localDevice->mac;
reStatus.camera_info_list.push_front(camera_info);
qInfo()<<"推送mac地址"<<localDevice->mac;;
HttpService http_gb28181(httpurl);
vides_data::response *res=http_gb28181.httpFindGb28181Config(camera_info.sSn);
if(res->code!=0){
......@@ -659,6 +669,9 @@ bool MainWindow::isDeviceInList(const QString& deviceId, const std::list<vides_d
});
return it != devices.end(); // 如果迭代器不是end,说明找到了匹配项
}
//从localDevices中过滤出不在devices列表中的设备
void MainWindow::deleteCloudNotCamer(const std::map<QString, vides_data::localDeviceStatus*>& localDevices,
const std::list<vides_data::responseDeviceStatus>& devices) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment