| | |
| | | ET__FIRST, |
| | | ET_PC_SERVER, |
| | | ET_HCNET_DECODER__FIRST, |
| | | ET_HCNET_DECODER_POPWIN, |
| | | ET_HCNET_DECODER_LOGO, |
| | | ET_HCNET_DECODER_ALARMOUT, |
| | | ET_HCNET_DECODER_POPWIN, // 3 |
| | | ET_HCNET_DECODER_LOGO, // 4 |
| | | ET_HCNET_DECODER_ALARMOUT, // 5 |
| | | ET_HCNET_DECODER__LAST, |
| | | ET__LAST |
| | | }; |
| | |
| | | } |
| | | SupperConnectedflag[i]=1; |
| | | SupperConnectedIP[i] = equipments[i].serverIP; |
| | | printf("server connect Success=:%s:%s\n",equipments[i].serverIP,equipments[i].serverport); |
| | | //printf("server connect Success=:%s:%s\n",equipments[i].serverIP,equipments[i].serverport); |
| | | pthread_create(&thread_no[i],NULL,&createServerthread,(void*)i);//super |
| | | } |
| | | } |
| | |
| | | std::cout << "hcnetsdk_alarm_popwin" << std::endl; |
| | | } |
| | | |
| | | int hcnetsdk_alarm_logo() |
| | | { |
| | | } |
| | | |
| | | void hcnetsdk_finial() |
| | | { |
| | | //NET_DVR_Logout(lUserID); //#todo |
| | | NET_DVR_Cleanup(); |
| | | } |
| | | |
| | | int hcnetsdk_init_logo(LONG lUserID) |
| | | { |
| | | //logo信息 |
| | | NET_DVR_MATRIX_LOGO_INFO net_dvr_matrix_logocfg1; |
| | | net_dvr_matrix_logocfg1.byRes[32]=0; |
| | | net_dvr_matrix_logocfg1.dwSize=0; |
| | | net_dvr_matrix_logocfg1.dwLogoSize=0; |
| | | |
| | | char logobuf[5000]; |
| | | { |
| | | FILE * pFile; |
| | | pFile = fopen("./ico.bmp","rb"); |
| | | if (pFile!=NULL) |
| | | { |
| | | net_dvr_matrix_logocfg1.dwLogoSize = fread(logobuf, 1, sizeof(logobuf), pFile); |
| | | fclose (pFile); |
| | | } |
| | | else |
| | | { |
| | | perror ("Error opening file"); |
| | | return -1; |
| | | } |
| | | } |
| | | |
| | | net_dvr_matrix_logocfg1.dwSize= sizeof(net_dvr_matrix_logocfg1); |
| | | |
| | | //上传logo |
| | | if (TRUE != NET_DVR_UploadLogo_NEW(lUserID, 1, &net_dvr_matrix_logocfg1 , logobuf)) |
| | | { |
| | | printf("NET_DVR_UploadLogo_NEW error, err: %d\n", NET_DVR_GetLastError()); |
| | | return -1; |
| | | } |
| | | else |
| | | { |
| | | printf("NET_DVR_UploadLogo_NEW done.\n"); |
| | | return 0; |
| | | } |
| | | |
| | | return -1; |
| | | } |
| | | |
| | | int hcnetsdk_init() |
| | |
| | | |
| | | g_hcnetsdk_user.insert(std::make_pair(g_hcnetsdkconfig.serverIP, int(lUserID))); |
| | | |
| | | hcnetsdk_init_logo(lUserID); |
| | | |
| | | return lUserID; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | return NULL; |
| | | } |
| | | |
| | | sockinfo* hcnetsdk_find_equip(const std::string& decoder_ip) |
| | | { |
| | | for (size_t i = 0; i < NUM; i++) |
| | | { |
| | | sockinfo* equip = &(equipments[i]); |
| | | if (equip->m_type > ET_HCNET_DECODER__FIRST || equip->m_type < ET_HCNET_DECODER__LAST) |
| | | { |
| | | if (equip->serverIP == decoder_ip) |
| | | return equip; |
| | | } |
| | | } |
| | | |
| | | return NULL; |
| | | } |
| | | |
| | | sockinfo* hcnetsdk_find_equip(const std::string& decoder_ip, int channel) |
| | | { |
| | | for (size_t i = 0; i < NUM; i++) |
| | | { |
| | | sockinfo* equip = &(equipments[i]); |
| | | if (equip->m_type > ET_HCNET_DECODER__FIRST || equip->m_type < ET_HCNET_DECODER__LAST) |
| | | { |
| | | HCNetCameraConfig* camConfig = (HCNetCameraConfig*)equip->user_config; |
| | | if (camConfig != NULL && camConfig->channel == channel && equip->serverIP == decoder_ip) |
| | | return equip; |
| | | } |
| | | } |
| | | |
| | | return NULL; |
| | | } |
| | | |
| | | int hcnetsdk_alarm_logo(LONG lUserID, const HCNetCameraConfig& _camConfig, const std::string& ip, int channel, bool disalarm) |
| | | { |
| | | HCNetCameraConfig camConfig(_camConfig); |
| | | if (camConfig.channel != channel) |
| | | { |
| | | camConfig.channel = -1; |
| | | sockinfo* equipConfig = hcnetsdk_find_equip(ip, channel); |
| | | if (equipConfig != NULL) |
| | | camConfig = *(HCNetCameraConfig*)(equipConfig->user_config); |
| | | } |
| | | |
| | | printf("hcnetsdk_alarm_logo, channel=%d, matchc=%d\n", channel, camConfig.channel); |
| | | |
| | | if (camConfig.channel < 0) |
| | | return -1; |
| | | |
| | | //窗口配置信息 |
| | | NET_DVR_WIN_LOGO_CFG net_dvr_win_logo_cfg; |
| | | net_dvr_win_logo_cfg.dwLogoNo = 1; |
| | | net_dvr_win_logo_cfg.byEnable = (disalarm ? 0 : 1);//0:hidden,1:visible |
| | | net_dvr_win_logo_cfg.byRes1[3] =0; |
| | | net_dvr_win_logo_cfg.dwCoordinateX = 5; |
| | | net_dvr_win_logo_cfg.dwCoordinateY =5; |
| | | net_dvr_win_logo_cfg.byFlash = 1; |
| | | net_dvr_win_logo_cfg.byTranslucent = 0; |
| | | net_dvr_win_logo_cfg.byRes2[34] = 0; |
| | | |
| | | net_dvr_win_logo_cfg.dwSize = sizeof(net_dvr_win_logo_cfg); |
| | | //设置窗口输出logo |
| | | int byWallNo=1,dwSubWinNo=2,dwWinNo=1; |
| | | DWORD dwDecChanNum=(camConfig.byWallNo << 24) | (camConfig.dwSubWinNo << 16) | camConfig.dwWinNo; |
| | | if(!NET_DVR_SetDVRConfig(lUserID,NET_DVR_SET_WIN_LOGO_CFG,dwDecChanNum,&net_dvr_win_logo_cfg,net_dvr_win_logo_cfg.dwSize)) |
| | | { |
| | | printf("NET_DVR_SetDVRConfig2 error, err: %d\n", NET_DVR_GetLastError()); |
| | | return -1; |
| | | } |
| | | else |
| | | { |
| | | printf("NET_DVR_SetDVRConfig2 done.\n"); |
| | | //return 0; |
| | | } |
| | | |
| | | //sleep(3); |
| | | //net_dvr_win_logo_cfg.byEnable = 0; |
| | | //NET_DVR_SetDVRConfig(lUserID,NET_DVR_SET_WIN_LOGO_CFG,dwDecChanNum,&net_dvr_win_logo_cfg,net_dvr_win_logo_cfg.dwSize); |
| | | } |
| | | |
| | | int main(int argc,char **argv) |
| | |
| | | int length=0; |
| | | char buff[102400]; |
| | | |
| | | puts("Step.1 ========>Server Thread is strarted......"); |
| | | //puts("Step.1 ========>Server Thread is strarted......"); |
| | | unsigned char data[4096]; |
| | | //=======================================equipment data================================ |
| | | int idx=0; |
| | |
| | | } |
| | | data[idx++]=0x16; |
| | | write(sock_upper[sidx],&data,idx);//send to equipment; |
| | | printf("Send equipment's info to Server OK! len=:%d\n",idx); |
| | | //printf("Send equipment's info to Server OK! len=:%d\n",idx); |
| | | //=======================================data================================================ |
| | | while(1) |
| | | { |
| | | int j; |
| | | length=read(sock_upper[sidx],&buff,sizeof(buff)-1); |
| | | printf("from Server received data===============:%d\n",length); |
| | | //printf("from Server received data===============:%d\n",length); |
| | | if(length<=0) |
| | | { |
| | | printf(" Upper Socket closed \n"); |
| | | //printf(" Upper Socket closed \n"); |
| | | break; |
| | | } |
| | | else { |
| | |
| | | continue; |
| | | } |
| | | } |
| | | puts("Server Thread is stoped.."); |
| | | //puts("Server Thread is stoped.."); |
| | | close(sock_upper[sidx]); |
| | | sock_upper[sidx] = -1; |
| | | SupperConnectedflag[sidx]=0;//?//#todo |
| | |
| | | void* MyEquipmentthread(void* arg) |
| | | { |
| | | int eidx = (int)arg; |
| | | printf("Step.3 ===%d=====>RealTimeEvent Thread is strarted......\n",eidx); |
| | | //printf("Step.3 ===%d=====>RealTimeEvent Thread is strarted......\n",eidx); |
| | | |
| | | int length=0; |
| | | char buff[102400]; |
| | |
| | | } |
| | | else if(length>0) |
| | | { |
| | | bool isDisalarm = false; |
| | | if (strstr(buff, "ViqEventNotificationAlert") == NULL) // <urn |
| | | continue; |
| | | if (strstr(buff, "startTime") == NULL) // <urn |
| | | continue; |
| | | isDisalarm = true; |
| | | //std::cout << buff<<std::endl; |
| | | |
| | | int channel = -1; |
| | | { |
| | | const char* strChannel = strstr(buff, "<urn:channelId>"); |
| | | if (strChannel != NULL) |
| | | { |
| | | channel = strtol(strChannel + strlen("<urn:channelId>"), NULL, 10); |
| | | } |
| | | } |
| | | |
| | | if(gCapturing[eidx]==1) |
| | | { |
| | | int k; |
| | |
| | | if(SupperConnectedIP.size() > k) |
| | | { |
| | | const std::string& ip(SupperConnectedIP[k]); |
| | | sockinfo* equipConfig = hcnetsdk_find_equip(ip); |
| | | HCNetCameraConfig* camConfig = hcnetsdk_find_config(ip); |
| | | int lUserData = hcnetsdk_get_userid(ip); |
| | | if (camConfig != NULL && lUserData >= 0) |
| | | if (camConfig != NULL && equipConfig != NULL && lUserData >= 0) |
| | | { |
| | | std::cout << "alarm begin k=" << k << std::endl; |
| | | hcnetsdk_alarm_alarmout(lUserData, *camConfig); |
| | | if (equipConfig->m_type == ET_HCNET_DECODER_ALARMOUT && !isDisalarm) |
| | | hcnetsdk_alarm_alarmout(lUserData, *camConfig); |
| | | else if (equipConfig->m_type == ET_HCNET_DECODER_LOGO) |
| | | hcnetsdk_alarm_logo(lUserData, *camConfig, ip, channel, isDisalarm); |
| | | std::cout << "alarm end k=" << k << std::endl; |
| | | } |
| | | else |
| | |
| | | int i; |
| | | int retVal; |
| | | int result; |
| | | printf("Step.3 ========>GPIO manupulation===> AnalyEquipmentNum=%d \n",equip_num); |
| | | //printf("Step.3 ========>GPIO manupulation===> AnalyEquipmentNum=%d \n",equip_num); |
| | | for(i=0;i<equip_num;i++) |
| | | { |
| | | retVal = -1; |
| | | result=-1; |
| | | printf("=============================:%d \n",equipments[i].reboot); |
| | | //printf("=============================:%d \n",equipments[i].reboot); |
| | | result=net_test(equipments[i].ip,equipments[i].port); |
| | | if(result<0) |
| | | { |
| | | printf("Equipment(%d) check=%s:%s\n",i+1,equipments[i].ip,equipments[i].port); |
| | | //printf("Equipment(%d) check=%s:%s\n",i+1,equipments[i].ip,equipments[i].port); |
| | | retVal = GPIO_OPEN(PortNum); |
| | | if(retVal == 0) |
| | | { |
| | |
| | | } |
| | | else printf("GPIO OPEN FAIL! \n"); |
| | | } |
| | | else printf("Equipment(%d) Check Success!=%s:%s\n",i+1,equipments[i].ip,equipments[i].port); |
| | | else |
| | | { |
| | | //printf("Equipment(%d) Check Success!=%s:%s\n",i+1,equipments[i].ip,equipments[i].port); |
| | | } |
| | | } |
| | | } |
| | | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
| | |
| | | length=read(rsock_down[Idx],&buff,sizeof(buff)); |
| | | alarm(0); |
| | | sigrelse(SIGALRM); |
| | | printf("Myequipment connect ==================length =%d:\n",length); |
| | | //printf("Myequipment connect ==================length =%d:\n",length); |
| | | if(length<=0) |
| | | { |
| | | close(rsock_down[Idx]); |