📄 frmclient.cpp
字号:
{ SendBasicTimer->start( 200 , TRUE ) ; bSendBasicInfo=TRUE; } if(controlfd>0) ControlPower(); } else QMessageBox::information(this,"Information","Net is disconnected or\nSerial Port is not open"); }void frmclient::PowerCtrl()//电源开关控制{ if( (bconnect>0) || (controlfd>0)) { bPowerOn=!bPowerOn;// btnPower->setPixmap( bPowerOn==TRUE ? Poweronicon :Powerofficon ) ; if(bconnect>0) { SendBasicTimer->start( 200 , TRUE ) ; bSendBasicInfo=TRUE; } if(controlfd>0) ControlPower(); } else QMessageBox::information(this,"Information","Net is disconnected or\nSerial Port is not open"); }void frmclient::GasSwitchCtrl()//煤气开关控制{ if( (bconnect>0) || (controlfd>0)) { bGasswitchOn=!bGasswitchOn;// btnGasSwitch->setPixmap( bGasswitchOn==TRUE ? Poweronicon :Powerofficon ) ; if(bconnect>0) { SendBasicTimer->start( 200 , TRUE ) ; bSendBasicInfo=TRUE; } if(controlfd>0) ControlPower(); } else QMessageBox::information(this,"Information","Net is disconnected or\nSerial Port is not open"); }void frmclient::AirConditionCtrl()//空调开关控制{ if( (bconnect>0) || (controlfd>0)) { bAirconditionOn=!bAirconditionOn;// btnAir->setPixmap( bAirconditionOn==TRUE ? Poweronicon :Powerofficon ) ; if(bconnect>0) { SendBasicTimer->start( 200 , TRUE ) ; bSendBasicInfo=TRUE; } if(controlfd>0) ControlPower(); } else QMessageBox::information(this,"Information","Net is disconnected or\nSerial Port is not open"); }////////////////////////////////////////传感器控制操作(共三个函数)//////////////////////////////////////void frmclient::IrdaAlertCtrl(){ IRDAenable=!IRDAenable;// btnIrdaAlert->setPixmap( IRDAenable==TRUE ? Alarmonicon : Alarmofficon); if(IRDAenable) { IRDAalert=0;// picIrdaAlert->setPixmap(Alarmnoalarmicon ); } if( bconnect>0) { SendBasicTimer->start( 200 , TRUE ) ; bSendBasicInfo=TRUE; }}void frmclient::SmokeAlertCtrl(){ Smokeenable=!Smokeenable;// btnSmokeAlert->setPixmap(Smokeenable==TRUE ? Alarmonicon :Alarmofficon); if(Smokeenable) { Smokealert=0;// picSmokeAlert->setPixmap( Alarmnoalarmicon ); } if( bconnect>0) { SendBasicTimer->start( 200 , TRUE ) ; bSendBasicInfo=TRUE; } }void frmclient::GasAlertCtrl(){ Gasenable=!Gasenable;// btnGasAlert->setPixmap( Gasenable==TRUE ? Alarmonicon : Alarmofficon); if(Gasenable) { Gasalert=0;// picGasAlert->setPixmap( Alarmnoalarmicon ); } if( bconnect>0) { SendBasicTimer->start( 200 , TRUE ) ; bSendBasicInfo=TRUE; }}////////////////////////////////////////////////////////////////模块控制部分(包括:GPS GSM 音频 视频 网络/////////////////////////////////////////////////////////////void frmclient::GpsControl(){ //if(bconnect) // { if (!GPSEnable) { if (gpsfd>0) { GPSEnable=TRUE; btnGPS->setPixmap( GPSenableicon ) ; //OpenTTYS1() ; } else { GPSEnable=FALSE; QMessageBox::information(this,"information","Serial port is not open"); } } else { GPSEnable=FALSE; btnGPS->setPixmap( GPSdisableicon ) ; //GetBaudRate(); //ReadCom2Timer->stop() ; //serial->CloseSerialPort( gsmfd ) ;// gsmfd=-1;// // lbGPSData->setText( tr( "position" ) ); } // } // else //QMessageBox::information(this,"Information","Net is disconnected");}void frmclient::RecordControl(){ /* if(bconnect) { if ( !RecordEnable ) { RecordEnable=TRUE; btnRecord->setPixmap( Recordenableicon ) ; } else { RecordEnable=FALSE; btnRecord->setPixmap( Recorddisableicon ) ; } } else QMessageBox::information(this,"Information","Net is disconnected");*/ QMessageBox::information(this,"Information","This function is not finished"); }void frmclient::CameraControl(){ if(!bInitCamera) { bInitCamera=this->InitCamera(0,WIDTH,HEIGHT); } if(bInitCamera) { CameraEnable=!CameraEnable;// btnCamera->setPixmap(CameraEnable==TRUE? Cameraenableicon : Cameradisableicon ) ; if(CameraEnable) { txtMsgContent->insert("Camarea enable\n"); if(NetworkEnable) { CameraTimer->stop(); this->SendPicture(); //start video transmit } else CameraTimer->start(50,false); } else CameraTimer->stop(); } else QMessageBox::information(this,"Information","Please plug in the camera first"); }bool frmclient::InitCamera(int index, int width, int height){ int result; result=-1; capture = cvCaptureFromCAM(index); if(capture) { result=cvSetCaptureProperty(capture,CV_CAP_PROP_FRAME_WIDTH,width); result=cvSetCaptureProperty(capture,CV_CAP_PROP_FRAME_HEIGHT,height); return TRUE; } else return FALSE; }void frmclient::SendPicture(){ int size; if(CameraEnable) { IplImage *frame=0; char * image32=0; char *image ; if( capture ) { if( !cvGrabFrame( capture )) //grabs the frame from camera return; frame = cvRetrieveFrame( capture );//Gets the image grabbed with cvGrabFrame image=frame->imageData; size=(frame->width)*(frame->height)*3; if (image) { if(bSendOver && NetworkEnable) { socket->flush(); sendType = "<PICTURE>"; send = 0; canSend = TRUE; fileSize=size; int t, remain, i; t = size/BUF_SIZE; times = t; remain = size%BUF_SIZE; if(remain) times++; for(i=1; i<=t; i++) strncpy(PictureBuffer[i], (image+(i-1)*BUF_SIZE),BUF_SIZE); if(remain) strncpy(PictureBuffer[i],(image+(i-1)*BUF_SIZE),remain); this->AutoSendPicture(); } image32=bgr24_bgr32(frame->width,frame->height,frame->imageData); QImage image=QImage((uchar*)image32,frame->width,frame->height, 32,NULL,0,QImage::LittleEndian);// QPainter p1(picCamera);// p1.drawImage(0, 0, image); if(image32) free(image32); } } }}char *frmclient::bgr24_bgr32(int width,int height, char *src){ char *dst=0, *tmp; dst=(char *)malloc(width*height*4); tmp=dst; for(int y=0; y<height;y++) { for(int x=0; x<width; x++) { for(int i=0;i<3;i++) { *dst++=*src++; } *dst++=0; } } return(tmp); }void frmclient::NetworkControl(){ if(!bconnect) {// QString Hostip=txtServerIP->text(); socket->open(IO_ReadWrite) ;// socket->connectToHost( Hostip , PORT ); } if(NetworkEnable) { // btnNetwork->setPixmap( Networkdisableicon ) ;// picNetwork->setPixmap( Networkdisconnectedicon ) ; NetworkEnable=FALSE; socket->close(); bconnect=FALSE; // when the connection with host is closed disable camera also if(CameraEnable) CameraTimer->start(50,false); RecordEnable=FALSE;// btnRecord->setPixmap( Recorddisableicon ) ; GPSEnable=FALSE; btnGPS->setPixmap( GPSdisableicon ) ; }}/////////////////////////////////////////////////////////////// 网络控制函数部分(包括 连接 断开/////////////////////////////////////////////////////////////void frmclient::SocketConnected(){ NetworkEnable=TRUE; bconnect=TRUE; CameraTimer->stop(); bSendOver=TRUE; txtMsgContent->insert("network connected\n");// btnNetwork->setPixmap( Networkenableicon ) ; // picNetwork->setPixmap( Networkconnectedicon ) ; SendBasicTimer->start( 200 , TRUE ) ; }void frmclient::ServerConnectionClosed(){ NetworkEnable=FALSE; bconnect=FALSE; // btnNetwork->setPixmap( Networkdisableicon ) ; // picNetwork->setPixmap( Networkdisconnectedicon ) ; socket->close(); if(CameraEnable) CameraTimer->start(50,false); else CameraTimer->stop(); RecordEnable=FALSE;// btnRecord->setPixmap( Recorddisableicon ) ; GPSEnable=FALSE; btnGPS->setPixmap( GPSdisableicon ) ; }void frmclient::SocketReadyRead(){ QDataStream datain(socket); QString string; datain >> string; if (string == QString("<FEEDBACK>")) { QString feedbackFileName; int feedbackSend; datain >> feedbackSend; if(feedbackSend==send)//数据已经 { canSend = TRUE; AutoSendPicture(); } if(feedbackSend == times)//一幅图像发送完毕 { bSendOver=TRUE; if(bSendBasicInfo) this->SendBasicInfo(); else if(CameraEnable) { this->SendPicture();//启动下一幅图像的发送 } } } }///////////////////////////////////////////////////////////////////////////////////////// 视频 音频处理部分//////////////////////////////////////////////////////////////////////////////////////void frmclient::AutoSendPicture() { if(canSend) { send++; QDataStream dataout(socket); dataout << sendType; dataout << fileSize << times << send; dataout.writeRawBytes(PictureBuffer[send], BUF_SIZE); canSend = FALSE; bSendOver=FALSE; if(send==times) bSendOver=TRUE; }}void frmclient::RefreshTime(){ QTime timeNow = QTime::currentTime() ; QString timenow=timeNow.toString();// lbTime->setText(timenow); }/////////////////////////////////////////////////////////////////////////////////////////////////////////////// void frmclient::SendBasicInfo(){ if ( NetworkEnable) { if(bSendOver) { socket->flush(); QDataStream dataout ( socket ) ; dataout << QString ( "Basic" ) ; dataout << IRDAalert << Gasalert << Smokealert; dataout << IRDAenable<< Gasenable<< Smokeenable; dataout << bPowerOn<< bGasswitchOn<< bAirconditionOn<< bLightOn; bSendBasicInfo=FALSE; txtMsgContent->insert("Send Basic\n"); //继续启动视频传送 if(CameraEnable) { ::sleep(1); txtMsgContent->insert("start capture\n"); bSendOver=TRUE; this->SendPicture(); //启动视频传输 } } } }void frmclient::enableGsmButton(bool en){ btnReadMsg->setEnabled(en); btnDeleteMsg->setEnabled(en); btnSendMsg->setEnabled(en); }void frmclient::enableGpsButton(bool en){ btnGPS->setEnabled(en) ;}void frmclient::enableNetButton(bool en){ btnGPS->setEnabled(en) ;// btnCamera->setEnabled(en) ;// btnRecord->setEnabled(en) ; }void frmclient::DisplayPicture(void){ // dynamic icon Networkconnectedicon = QPixmap(picPath+"network_connected.png"); Networkdisconnectedicon = QPixmap(picPath+"network_disconnected.png"); Alarmalarmicon = QPixmap(picPath+"alarm_alarm.png"); Alarmnoalarmicon = QPixmap(picPath+"alarm_noalarm.png"); Alarmofficon = QPixmap(picPath+"alarm_off.png"); Alarmonicon = QPixmap(picPath+"alarm_on.png"); Poweronicon = QPixmap(picPath+"power_on.png"); Poweron1icon = QPixmap(picPath+"power_on1.png"); Powerofficon = QPixmap(picPath+"power_off.png"); GSMenableicon = QPixmap(picPath+"gsm_on.png"); GSMdisableicon = QPixmap(picPath+"gsm_off.png"); GPSenableicon = QPixmap(picPath+"gps_on.png"); GPSdisableicon = QPixmap(picPath+"gps_off.png"); Networkenableicon = QPixmap(picPath+"host_on.png"); Networkdisableicon = QPixmap(picPath+"host_off.png"); Cameraenableicon = QPixmap(picPath+"camera_on.png"); Cameradisableicon = QPixmap(picPath+"camera_off.png"); Recordenableicon = QPixmap(picPath+"mic_on.png"); Recorddisableicon = QPixmap(picPath+"mic_off.png"); // display the static icons// picDevice->setPixmap( QPixmap(picPath+"home_device.png")); // picSensor->setPixmap( QPixmap(picPath+"sensor.png") ) ; picMessage->setPixmap( QPixmap(picPath+"message.png") ) ;// picOperation->setPixmap( QPixmap(picPath+"user.png") ) ; // picTimer->setPixmap( QPixmap(picPath+"time.png") ) ; // picGPS->setPixmap( QPixmap(picPath+"gps_static.png")); // picCamera->setPixmap( QPixmap(picPath+"Liod.png")); // display the dynamic icons// picNetwork->setPixmap( Networkdisconnectedicon ) ; /* picIrdaAlert->setPixmap( Alarmnoalarmicon ); picGasAlert->setPixmap( Alarmnoalarmicon ); picSmokeAlert->setPixmap( Alarmnoalarmicon ); */ /* btnIrdaAlert->setPixmap( Alarmofficon ); btnGasAlert->setPixmap( Alarmonicon ); btnSmokeAlert->setPixmap( Alarmonicon );*/ /* btnPower->setPixmap( Powerofficon ) ; btnGasSwitch->setPixmap( Powerofficon ) ; btnAir->setPixmap( Powerofficon ) ; btnLight->setPixmap( Powerofficon ) ; */ btnGSM->setPixmap( GSMdisableicon ) ; btnGPS->setPixmap( GPSdisableicon ) ;// btnNetwork->setPixmap( Networkdisableicon ) ;// btnCamera->setPixmap( Cameradisableicon ) ;// btnRecord->setPixmap( Recorddisableicon ) ; }void frmclient::SystemInit(){ picPath="/usr/qpe/pics/client/"; pGsmControl=new GsmControl(); pBoardSerial=new Serial(); socket = new QSocket( this ); nBaudindex=2; gsmfd=-1; gpsfd=-1; portIndex=1; bPowerOn=bGasswitchOn=bAirconditionOn=bLightOn=FALSE; bSendOver=TRUE; // only the IRDA is disabled here IRDAenable=0; Gasenable=1; Smokeenable=1; nReadCount=0; SendBasicTimer=new QTimer; SengEmergentTimer=new QTimer; ReadGsmTimer=new QTimer; ReadBoardTimer=new QTimer; refreshTimer=new QTimer; CameraTimer=new QTimer; IRDAalert=Smokealert=Gasalert=0; IRDAalertmessage=Gasalertmessage=Smokealertmessage=0; NetworkEnable=CameraEnable=RecordEnable=GSMEnable= GPSEnable=FALSE; Emergentflag=FALSE; bSendBasicInfo=FALSE; bconnect=binitGsm=bInitCamera=FALSE; breadMsg=bdeleMsg=bsendMsg=bnewMsg=FALSE; enableGsmButton(FALSE); txtPoneNumber->setText("138xxxxxxxx"); }void frmclient::ReadBoardPort(){ int buflen= -1; if(gpsfd) { if(GPSEnable) { memset(BoardRecvbuf,0,sizeof(BoardRecvbuf)); buflen=::read( gpsfd, BoardRecvbuf, SBUFFER_LEN); if (buflen>0) { BoardRecvbuf[buflen]=0; QString str(BoardRecvbuf); txtMsgContent->insert(str); //this->ProcessGpsData(str); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -