⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmclient.cpp

📁 嵌入式pxa 270平台上的GPS和GSM通信实验
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	{	    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 + -