| | |
| | | #include <errno.h>
|
| | | #include <sys/stat.h>
|
| | | #include <signal.h>
|
| | | #include <string> |
| | | #include <map> |
| | | #include <vector> |
| | | #include <stdint.h> |
| | | #include <iostream> |
| | | |
| | | #include <unistd.h> |
| | |
|
| | | #include "MD5Linux.h"
|
| | | |
| | | #include "HCNetSDK/incCn/HCNetSDK.h" |
| | | #define HPR_OK 0 |
| | | #define HPR_ERROR -1 |
| | |
|
| | | #define MAX_NUM 16
|
| | | #define MAX 1024
|
| | | #define fileread_buf 128
|
| | | |
| | | typedef std::map<std::string, int> hcnetsdk_user_t; // decoder_ip, userid |
| | | hcnetsdk_user_t g_hcnetsdk_user; |
| | | |
| | | enum EquipmentType |
| | | { |
| | | ET__FIRST, |
| | | ET_PC_SERVER, |
| | | ET_HCNET_DECODER__FIRST, |
| | | ET_HCNET_DECODER_POPWIN, |
| | | ET_HCNET_DECODER_LOGO, |
| | | ET_HCNET_DECODER_ALARMOUT, |
| | | ET_HCNET_DECODER__LAST, |
| | | ET__LAST |
| | | }; |
| | | |
| | | struct HCNetCameraConfig |
| | | { |
| | | int lUserID; |
| | | std::string ip; |
| | | int port; |
| | | std::string username; |
| | | std::string passwd; |
| | | int channel; |
| | | uint16_t byWallNo; |
| | | uint16_t dwSubWinNo; |
| | | uint16_t dwWinNo; |
| | | uint16_t lAlarmOutPort; |
| | | }; |
| | | |
| | | typedef struct{
|
| | | int m_id;
|
| | | EquipmentType m_type; |
| | | char serverIP[32];
|
| | | char serverport[10];
|
| | | char port[10];
|
| | |
| | | char user[64];
|
| | | char pass[64];
|
| | | int reboot;
|
| | | void* user_config; |
| | | }sockinfo,*lpsockinfo;
|
| | | pthread_t thread_no[MAX_NUM];
|
| | | pthread_t thread_noEQ[MAX_NUM];
|
| | |
| | | int SupperConnectedflag[16]={0,},EquipConnectedflag[16]={0,},serverflag=0,GPIO_flag=0;
|
| | | int EquipRealAlarmConnectedflag[16];
|
| | | timer_t* timerID;
|
| | | |
| | | std::vector<std::string> SupperConnectedIP; |
| | | |
| | | int hcnetsdk_user = -1; |
| | |
|
| | | int Read_MysqlData();
|
| | | int UpdateMysqData(int key);
|
| | |
| | | equip_num=NUM;
|
| | | //time_lock(2016,10,28,10,10,10,30);
|
| | | }
|
| | | //serverthread
|
| | | for(i=0;i<NUM;i++){ |
| | | for(j=0;j<i;j++) if(strcmp(equipments[i].serverIP,equipments[j].serverIP)==0 && strcmp(equipments[i].serverport,equipments[j].serverport)==0) break;
|
| | | if(j<i)continue;
|
| | |
|
| | | if(SupperConnectedflag[i]==0){
|
| | | //serverthread |
| | | for(i=0;i<NUM;i++) |
| | | { |
| | | for(j=0;j<i;j++) |
| | | if(strcmp(equipments[i].serverIP,equipments[j].serverIP)==0 && strcmp(equipments[i].serverport,equipments[j].serverport)==0) |
| | | break; |
| | | if(j<i) |
| | | continue; |
| | | |
| | | if(SupperConnectedflag[i]==0) |
| | | { |
| | | struct sockaddr_in servaddr;
|
| | | int strlen1=sizeof(servaddr);
|
| | | if(equipments[i].serverIP[0]!=0 && equipments[i].serverport[0]!=0) {
|
| | | if((sock_upper[i]=socket(PF_INET,SOCK_STREAM,0))<0){
|
| | | if(equipments[i].serverIP[0]!=0 && equipments[i].serverport[0]!=0) |
| | | { |
| | | if((sock_upper[i]=socket(PF_INET,SOCK_STREAM,0))<0) |
| | | { |
| | | perror("socket fail1");
|
| | | continue;
|
| | | }
|
| | |
| | | int rt = connect(sock_upper[i],(struct sockaddr*)&servaddr,strlen1);
|
| | | alarm(0);
|
| | | sigrelse(SIGALRM);
|
| | | if(rt<0){
|
| | | if(rt<0) |
| | | { |
| | | printf("server connect fail-%s:%s\n",equipments[i].serverIP,equipments[i].serverport);
|
| | | close(sock_upper[i]);
|
| | | continue;
|
| | | }
|
| | | SupperConnectedflag[i]=1;
|
| | | SupperConnectedIP[i] = equipments[i].serverIP; |
| | | printf("server connect Success=:%s:%s\n",equipments[i].serverIP,equipments[i].serverport);
|
| | | pthread_create(&thread_no[i],NULL,&createServerthread,(void*)i);//super
|
| | | }
|
| | | }
|
| | | }
|
| | | //equipment thread
|
| | | for(i=0;i<NUM;i++){ |
| | | for(j=0;j<i;j++) if(strcmp(equipments[i].ip,equipments[j].ip)==0 && strcmp(equipments[i].port,equipments[j].port)==0) break;
|
| | | if(j<i)continue;
|
| | | if(EquipConnectedflag[i]==0){
|
| | | if(equipments[i].ip[0]!=0 && equipments[i].port[0]!=0) {
|
| | | for(i=0;i<NUM;i++) |
| | | { |
| | | for(j=0;j<i;j++) |
| | | if(strcmp(equipments[i].ip,equipments[j].ip)==0 && strcmp(equipments[i].port,equipments[j].port)==0) |
| | | break; |
| | | if(j<i) |
| | | continue; |
| | | if(EquipConnectedflag[i]==0) |
| | | { |
| | | if(equipments[i].ip[0]!=0 && equipments[i].port[0]!=0) |
| | | { |
| | | struct sockaddr_in servaddr;
|
| | | int strlen1=sizeof(servaddr);
|
| | | if((sock_down[i]=socket(PF_INET,SOCK_STREAM,0))<0){
|
| | | if((sock_down[i]=socket(PF_INET,SOCK_STREAM,0))<0) |
| | | { |
| | | perror("socket fail2");
|
| | | continue;
|
| | | }
|
| | |
| | | int rt = connect(sock_down[i],(struct sockaddr*)&servaddr,strlen1);
|
| | | alarm(0);
|
| | | sigrelse(SIGALRM);
|
| | | if(rt<0){
|
| | | if(rt<0) |
| | | { |
| | | printf("Equipment connect fail-%s:%s\n",equipments[i].ip,equipments[i].port);
|
| | | close(sock_down[i]);
|
| | | continue;
|
| | |
| | | //printf("Myequipment connect ==================:");
|
| | | if(RealEventStart(i)==0) EquipRealAlarmConnectedflag[i]=1;
|
| | | }
|
| | |
|
| | | }
|
| | | } |
| | | |
| | | int hcnetsdk_get_userid(const std::string& decode_ip) |
| | | { |
| | | hcnetsdk_user_t::const_iterator iter = g_hcnetsdk_user.find(decode_ip); |
| | | if(iter == g_hcnetsdk_user.end()) |
| | | return -1; |
| | | else |
| | | return iter->second; |
| | | } |
| | | |
| | | void CALLBACK hcnetsdk_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser) |
| | | { |
| | | printf("hcnetsdk_ExceptionCallBack: %d\n", int(dwType)); |
| | | } |
| | | |
| | | int hcnetsdk_alarm_alarmout(LONG lUserID, const HCNetCameraConfig& camConfig) |
| | | { |
| | | //报警时间段 |
| | | NET_DVR_SCHEDTIME net_dvr_schedtime = {0}; |
| | | net_dvr_schedtime.byStartHour = 0; |
| | | net_dvr_schedtime. byStartMin = 1; |
| | | net_dvr_schedtime.byStopHour = 11; |
| | | net_dvr_schedtime.byStopMin = 59; |
| | | |
| | | //报警设置信息 |
| | | NET_DVR_ALARMOUTCFG_V30 net_dvr_alarmoutcfg = {0}; |
| | | net_dvr_alarmoutcfg.dwSize = sizeof(net_dvr_alarmoutcfg); |
| | | memcpy(net_dvr_alarmoutcfg.sAlarmOutName, "ac", sizeof("ac")); |
| | | net_dvr_alarmoutcfg.dwAlarmOutDelay = 0; |
| | | memcpy(net_dvr_alarmoutcfg.struAlarmOutTime, &net_dvr_schedtime, sizeof(net_dvr_schedtime)); |
| | | //net_dvr_alarmoutcfg.byRes[16] = 0; |
| | | if(!NET_DVR_SetDVRConfig(lUserID,NET_DVR_SET_ALARMOUTCFG_V30,0,&net_dvr_alarmoutcfg,net_dvr_alarmoutcfg.dwSize)){ |
| | | printf("NET_DVR_SetDVRConfig failed, err: %d\n", NET_DVR_GetLastError()); |
| | | } |
| | | |
| | | //开启警报 |
| | | if(NET_DVR_SetAlarmOut(lUserID,camConfig.lAlarmOutPort,1) == FALSE){ |
| | | printf("NET_DVR_SetAlarmOut failed, err: %d\n", NET_DVR_GetLastError()); |
| | | } |
| | | |
| | | sleep(3); |
| | | |
| | | //解除警报 |
| | | NET_DVR_SetAlarmOut(lUserID,camConfig.lAlarmOutPort,0); |
| | | } |
| | | |
| | | int hcnetsdk_alarm_popwin(LONG lUserID, const HCNetCameraConfig& camConfig) |
| | | { |
| | | //LONG lUserID = hcnetsdk_get_userid(camConfig); |
| | | if(lUserID < 0) |
| | | { |
| | | std::cerr << "hcnetsdk_get_userid ret -1" << std::endl; |
| | | return -1; |
| | | } |
| | | |
| | | //设置电视墙窗口参数,即开窗,坐标在电视墙范围之内 |
| | | DWORD m_dwWinCount=1; |
| | | //开两个窗口 |
| | | DWORD m_dwWinNum[1]; |
| | | //1字节墙号+ 1字节保留+ 2字节窗口号m_dwWinNum[0] = 1<<24; |
| | | //开窗时窗口号为0 |
| | | m_dwWinNum[0] = 1<<24; |
| | | |
| | | NET_DVR_VIDEOWALLWINDOWPOSITION m_struWinPos[1]; |
| | | memset(m_struWinPos, 0, sizeof(m_struWinPos)); |
| | | |
| | | m_struWinPos[0].dwSize=sizeof(NET_DVR_VIDEOWALLWINDOWPOSITION); |
| | | m_struWinPos[0].byEnable=1; |
| | | m_struWinPos[0].struRect.dwXCoordinate=200; |
| | | m_struWinPos[0].struRect.dwYCoordinate=200; |
| | | m_struWinPos[0].struRect.dwWidth=1520; |
| | | m_struWinPos[0].struRect.dwHeight=1520; |
| | | |
| | | DWORD m_dwWinStatus[1]; |
| | | DWORD dwRetWinNum[1]; |
| | | //开窗时窗口号由设备返回 |
| | | |
| | | NET_DVR_IN_PARAM struInputPapam = {0}; |
| | | struInputPapam.struCondBuf.pBuf = &m_dwWinNum; |
| | | //输入条件缓冲区 |
| | | struInputPapam.struCondBuf.nLen = m_dwWinCount * sizeof(DWORD); |
| | | struInputPapam.dwRecvTimeout = 5000; |
| | | //接收超时时间 |
| | | struInputPapam.struInParamBuf.pBuf = m_struWinPos; |
| | | struInputPapam.struInParamBuf.nLen = m_dwWinCount * sizeof(NET_DVR_VIDEOWALLWINDOWPOSITION); |
| | | |
| | | NET_DVR_OUT_PARAM struOutputPapam = {0}; |
| | | struOutputPapam.lpStatusList = m_dwWinStatus; |
| | | struOutputPapam.struOutBuf.pBuf = dwRetWinNum; |
| | | struOutputPapam.struOutBuf.nLen = m_dwWinCount*sizeof(DWORD); |
| | | |
| | | if (!NET_DVR_SetDeviceConfigEx(lUserID, NET_DVR_SET_VIDEOWALLWINDOWPOSITION, m_dwWinCount, &struInputPapam, &struOutputPapam)) { |
| | | printf("NET_DVR_SET_VIDEOWALLWINDOWPOSITION error, err: %d\n", NET_DVR_GetLastError()); |
| | | return -1; |
| | | } |
| | | |
| | | //前端设备 动态解码 |
| | | NET_DVR_PU_STREAM_CFG_V41 m_struDynamicInfo= {0}; |
| | | m_struDynamicInfo.dwSize=sizeof(m_struDynamicInfo); |
| | | m_struDynamicInfo.byStreamMode=1; |
| | | strcpy((char *)m_struDynamicInfo.uDecStreamMode.struDecStreamDev.struDevChanInfo.byAddress, camConfig.ip.c_str()); |
| | | m_struDynamicInfo.uDecStreamMode.struDecStreamDev.struDevChanInfo.wDVRPort = camConfig.port; |
| | | strcpy((char *)m_struDynamicInfo.uDecStreamMode.struDecStreamDev.struDevChanInfo.sUserName, camConfig.username.c_str()); |
| | | strcpy((char *)m_struDynamicInfo.uDecStreamMode.struDecStreamDev.struDevChanInfo.sPassword, camConfig.passwd.c_str()); |
| | | m_struDynamicInfo.uDecStreamMode.struDecStreamDev.struDevChanInfo.byChannel = camConfig.channel; |
| | | m_struDynamicInfo.uDecStreamMode.struDecStreamDev.struDevChanInfo.byFactoryType=0; |
| | | |
| | | //int byWallNo=1,dwSubWinNo=1,dwWinNo=1; |
| | | //DWORD dwDecChanNum=0x01000002; |
| | | |
| | | int dwWinNo = 2;//#todo get max win count and +1 |
| | | { |
| | | //NET_DVR_WINLIST winlist; |
| | | //BYTE pBuffer[224*sizeof(NET_DVR_SCREEN_WINCFG)]; |
| | | //winlist.dwSize = sizeof(winlist); |
| | | //winlist.pBuffer = pBuffer; |
| | | //winlist.dwBufLen = 224; |
| | | //if (!NET_DVR_GetAllValidWinInfo(lUserID, &winlist)) |
| | | // printf("NET_DVR_GetAllValidWinInfo error, err: %d\n", NET_DVR_GetLastError()); |
| | | // |
| | | //std::cout<<"winnum="<<winlist.dwWinNum<<std::endl; |
| | | } |
| | | |
| | | DWORD dwDecChanNum=(camConfig.byWallNo << 24) | (camConfig.dwSubWinNo << 16) | dwWinNo; |
| | | //1字节墙号+1字节子窗口号+2字节窗口号: (byWallNo << 24) | (dwSubWinNo<<16) |dwWinNo; |
| | | if (!NET_DVR_MatrixStartDynamic_V41(lUserID, dwDecChanNum, &m_struDynamicInfo)) |
| | | { |
| | | printf("NET_DVR_MatrixStartDynamic_V41 error, err: %d\n", NET_DVR_GetLastError()); |
| | | return -1; |
| | | } |
| | | |
| | | 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() |
| | | { |
| | | NET_DVR_Init(); |
| | | NET_DVR_SetConnectTime(2000, 1); |
| | | NET_DVR_SetReconnect(10000, true); |
| | | NET_DVR_SetExceptionCallBack_V30(0, NULL,hcnetsdk_ExceptionCallBack, NULL); |
| | | |
| | | LONG lUserID; |
| | | |
| | | NET_DVR_DEVICEINFO_V30 struDeviceInfo; |
| | | lUserID = NET_DVR_Login_V30("192.168.1.101", 8000, "admin", "a1234567", &struDeviceInfo); |
| | | if (lUserID < 0) { |
| | | printf("NET_DVR_Login_V30 failed, err: %d\n", NET_DVR_GetLastError()); |
| | | NET_DVR_Cleanup(); |
| | | return -1; |
| | | } |
| | | |
| | | g_hcnetsdk_user.insert(std::make_pair("192.168.1.101", int(lUserID))); |
| | | |
| | | return lUserID; |
| | | } |
| | | |
| | | HCNetCameraConfig* hcnetsdk_find_config(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) |
| | | { |
| | | HCNetCameraConfig* camConfig = (HCNetCameraConfig*)equip->user_config; |
| | | if (camConfig != NULL && equip->serverIP == decoder_ip) |
| | | return camConfig; |
| | | } |
| | | } |
| | | |
| | | return NULL; |
| | | }
|
| | |
|
| | | int main(int argc,char **argv)
|
| | |
| | | rsock_down[i] = -1;
|
| | | }
|
| | |
|
| | | SupperConnectedIP.resize(sizeof(SupperConnectedflag)/sizeof(int)); |
| | | |
| | | hcnetsdk_user = hcnetsdk_init(); |
| | | if (hcnetsdk_user < 0) |
| | | { |
| | | printf("hcnetsdk_user < 0"); |
| | | exit(EXIT_FAILURE); |
| | | } |
| | | |
| | | /*Install timer_handler as th siganl handler for SIGVTALRM */
|
| | | memset(&sa,0,sizeof(sa));
|
| | | sa.sa_handler=&timer_handler;
|
| | |
| | | /*Start a virtual timer.It counts down whenever this process is executing.*/
|
| | |
|
| | | setitimer(ITIMER_VIRTUAL,&timer,NULL);
|
| | | while(1);
|
| | |
|
| | | |
| | | |
| | | |
| | | while(1); |
| | | } |
| | | |
| | | void* createServerthread_hcnetsdk(void* arg) |
| | | { |
| | | }
|
| | |
|
| | | //=================================================================
|
| | | void* createServerthread(void* arg)
|
| | | void* createServerthread_pc_server(void* arg) |
| | | {
|
| | | int sidx = (int)arg;
|
| | | int length=0;
|
| | |
| | | memcpy(&data[idx],equipments[i].pass,strlen(equipments[i].pass));idx+=strlen(equipments[i].pass);
|
| | | }
|
| | | data[idx++]=0x16;
|
| | | write(sock_upper[sidx],&data,idx);//send to equipment;순환문
|
| | | write(sock_upper[sidx],&data,idx);//send to equipment; |
| | | printf("Send equipment's info to Server OK! len=:%d\n",idx);
|
| | | //=======================================data================================================
|
| | | while(1)
|
| | |
| | | puts("Server Thread is stoped..");
|
| | | close(sock_upper[sidx]);
|
| | | sock_upper[sidx] = -1;
|
| | | SupperConnectedflag[sidx]=0;//?
|
| | | SupperConnectedflag[sidx]=0;//?//#todo |
| | | pthread_exit((void*)thread_no[sidx]);
|
| | | } |
| | | |
| | | void* createServerthread(void* arg) |
| | | { |
| | | return createServerthread_pc_server(arg); |
| | | }
|
| | |
|
| | | void* createEquipmentthread(void* arg)
|
| | |
| | | printf(" Down Socket closed \n");
|
| | | break;
|
| | | }
|
| | | else if(length>0){
|
| | | if(gCapturing[eidx]==1){
|
| | | else if(length>0) |
| | | { |
| | | if (strstr(buff, "ViqEventNotificationAlert") == NULL) // <urn |
| | | continue; |
| | | if (strstr(buff, "startTime") == NULL) // <urn |
| | | continue; |
| | | std::cout << buff<<std::endl; |
| | | if(gCapturing[eidx]==1) |
| | | { |
| | | int k;
|
| | | for(k=0;k<16;k++){
|
| | | if(SupperConnectedflag[k]==1){
|
| | | write(sock_upper[k],buff,strlen(buff));
|
| | | printf("======>>>>>>>upper send length====%d======\n",strlen(buff));
|
| | | printf("=============================================================\n");
|
| | | for(k=0;k<16;k++) |
| | | { |
| | | //if(SupperConnectedflag[k]==1) |
| | | //{ |
| | | // write(sock_upper[k],buff,strlen(buff)); |
| | | // printf("======>>>>>>>upper send length====%d======\n",strlen(buff)); |
| | | // printf("=============================================================\n"); |
| | | |
| | | //struct sockaddr peeraddr; |
| | | //socklen_t len = sizeof(sockaddr); |
| | | //if (getpeername(sock_upper[k], &peeraddr, &len) == 0) |
| | | //{ |
| | | // struct sockaddr_in* sin = (struct sockaddr_in*)(&peeraddr); |
| | | // int port = sin->sin_port; |
| | | // char addr_buffer[INET_ADDRSTRLEN]; |
| | | // if (inet_ntop(AF_INET, &(sin->sin_addr), addr_buffer, INET_ADDRSTRLEN) == NULL) |
| | | // { |
| | | // std::cerr << "inet_ntop err" << std::endl; |
| | | // } |
| | | // else |
| | | // { |
| | | // //std::cout << "addr:" << addr_buffer << std::endl; // #todo |
| | | // HCNetCameraConfig* camConfig = hcnetsdk_find_config(addr_buffer); |
| | | // if (camConfig != NULL) |
| | | // { |
| | | // std::cout << "alarm " << std::endl; |
| | | // hcnetsdk_alarm_popwin(*camConfig); |
| | | // } |
| | | // } |
| | | //} |
| | | |
| | | //printf("%s",buff);
|
| | | //} |
| | | //else |
| | | { |
| | | if(SupperConnectedIP.size() > k) |
| | | { |
| | | const std::string& ip(SupperConnectedIP[k]); |
| | | HCNetCameraConfig* camConfig = hcnetsdk_find_config(ip); |
| | | int lUserData = hcnetsdk_get_userid(ip); |
| | | if (camConfig != NULL && lUserData >= 0) |
| | | { |
| | | std::cout << "alarm begin k=" << k << std::endl; |
| | | hcnetsdk_alarm_alarmout(lUserData, *camConfig); |
| | | std::cout << "alarm end k=" << k << std::endl; |
| | | } |
| | | else |
| | | { |
| | | //std::cout << "alarm lost k=" << k << std::endl; |
| | | } |
| | | } |
| | | }
|
| | | }
|
| | | continue;
|
| | |
| | | // .port = "80", // equipmentport
|
| | | // .user = "supervisor", // equipment username
|
| | | // .pass = "supervisor", // equipment password
|
| | | // .serverIP = "192.168.1.2", // serverip
|
| | | // .serverIP = "192.168.1.2", // serverip (accept alarm) |
| | | // .serverport = "5015", // serverport
|
| | | // .reboot = 0
|
| | | //},
|
| | |
| | | //{ .m_id = 1, .ip = "192.168.1.5", .port = "80", .user = "supervisor", .pass = "supervisor", .serverIP = "192.168.1.2", .serverport = "5015", .reboot = 0 },
|
| | | };
|
| | |
|
| | | { |
| | | equipments_config[0].m_id = 1;
|
| | | equipments_config[0].m_type = ET_HCNET_DECODER_ALARMOUT; |
| | | strcpy(equipments_config[0].ip, "192.168.1.5");
|
| | | strcpy(equipments_config[0].port, "80");
|
| | | strcpy(equipments_config[0].user, "supervisor");
|
| | | strcpy(equipments_config[0].pass, "supervisor");
|
| | | strcpy(equipments_config[0].serverIP, "192.168.1.2");
|
| | | strcpy(equipments_config[0].serverport, "5015");
|
| | | strcpy(equipments_config[0].serverIP, "192.168.1.101"); |
| | | strcpy(equipments_config[0].serverport, "8000"); |
| | | //strcpy(equipments_config[0].serverIP, "192.168.1.10"); |
| | | //strcpy(equipments_config[0].serverport, "5015"); |
| | | equipments_config[0].reboot = 0;
|
| | | HCNetCameraConfig* camConfig = new HCNetCameraConfig; // #todo delete when exit |
| | | equipments_config[0].user_config = camConfig; |
| | | |
| | | camConfig->ip = "192.168.1.63"; |
| | | camConfig->port = 8000; |
| | | camConfig->username = "admin"; |
| | | camConfig->passwd = "admin12345"; |
| | | camConfig->channel = 1; |
| | | camConfig->byWallNo = 1; |
| | | camConfig->dwSubWinNo = 1; |
| | | camConfig->dwWinNo = 0; |
| | | camConfig->lAlarmOutPort = 0x0001; |
| | | } |
| | |
|
| | | memcpy(equipments, equipments_config, sizeof(equipments_config));
|
| | | NUM = sizeof(equipments_config) / sizeof(sockinfo);
|