设为首页 加入收藏

TOP

C++之AT指令与GPRS通信(四)
2015-07-24 07:26:43 来源: 作者: 【 】 浏览:478
Tags:指令 GPRS 通信
mobilephone number 编码手机号码----yuanyu strSendTemp+=chMsgTail; // add the message tail 添加信息尾部 strEncodeMsg=ToUnicode(strSendMsg); // encode the message content 编码信息内容 ---string to yuanyu // get the whole encoded ready sent message data length except for the SMS Center number // 获取整个编码准备完毕的正要发送的断信数据长度----但是除了短信MSM中心号码 bool ok; int Msglen; Msglen=strEncodeMsg.mid(0,2).toInt(&ok ,16); Msglen+=14; strSendTemp+=strEncodeMsg; strSendTemp+=esc; strSendTemp+=enter; QString sendata=QString(AT+CMGS=%1).arg(Msglen); // AT+CMGS -----to send Messege sendata+=enter; const char *send=sendata.toLatin1(); //----Byte stream ecode int len=strlen( send ); MySerial::nwrite( fd, send, len); //write send content into fd; } return strSendTemp; } /************************************************************************/ QString Gprs::NumberConversion(QString strNumber) // translate Messege---Center Number to yuanyu. { QString strTempNumber; int length=strNumber.length(); int i; for(i=0;i there are data ? { if(fd) { if(read(fd,buff,sizeof(buff))!=0) { // printf(%s,buff);//for debug ui->Txt_State->setPlainText(read data is success! ); //ui->Txt_State->setTextCursor(ui->Txt_State->document()->lineCount());//[setCursorPosition] ----cursor in paragraph quanlity ReadMsg(QString(buff)); memset(buff,0,sizeof(buff)); } } } /************************************************************************/ void Gprs::ReadMsg(QString strRecv) { if(BRead) //encode messege { BRead=0; int i=0; unsigned char buff[BUFFER_SIZE]; unsigned char ring; int len; OpenDoor *open=new OpenDoor; strMsgContent=ProcessMessage(strRecv,strClientNum); //ProcessMessage(strRecv,strNum);-----encode meassege for read ui->Txt_TargetNum->clear(); //clear old number ui->Txt_TargetNum->setText(strClientNum); //get new client number ui->Txt_HostMsg->setPlainText(+strMsgContent); ui->Txt_TargetMsg->setPlainText(+strMsgContent); if(!flag) //myself { if(strMsgContent==开门) //----first order : Open door---->please input passwd { QString strPhoneNumber=strClientNum; strEncodeMsg=PreSendMessage(请输入密码: ,strPhoneNumber,strServerNumber); const char *sendata=strEncodeMsg.toLatin1(); int len=strlen(sendata); if(fd>0) MySerial::nwrite( fd,sendata,len); ui->Txt_State->setPlainText( send success); strEncodeMsg=; } flag=true; } else //passwd is right, Open door---->read 0 and 1 registers~ { while(++i<4) { if(strMsgContent==SmartDoorRing) //passwd =SmartDoorRing { QMessageBox::information(this,提示:,密码正确!芝麻开门...); //提示打开成功 ---->然后读取寄存器,将门打开 if((fd=MySerial::open_port(fd,4))<0) //door open { printf(open device mydoor error! ); return ; } else { if(len=read(fd,(char *)&buff,sizeof(buff)) < 0) { printf(read mydoor error! ); return ; } QString readstr(MySerial::nread(fd,(char *)&buff,sizeof(buff))); ui->Txt_State->setText(readstr+ui->Txt_State->toPlainText()+ ); //open->doorRun(); //Open door Now!!! ioctl(fd,MYLOCK_START_IOCFG, 0); //write(fd,(char *)MYLOCK_START_IOCFG,sizeof(MYLOCK_START_IOCFG)); sleep(5); //open->doorStop(); //Stop ioctl(fd,MYLOCK_STOP_IOCFG, 0); //write(fd,(char *)MYLOCK_STOP_IOCFG,sizeof(MYLOCK_STOP_IOCFG)); } continue ; } flag=false; } //Over 4 ,then alarm---->buzzer ring if((fd=MySerial::open_port(fd,5))<0) //buzzer open ----> alarm { printf(open device mycar error! ); return ; } else { if(len=read(fd,(char *)&ring,sizeof(ring)) < 0) { printf(read myring error! ); return ; } QString readstr(MySerial::nread(fd,(char *)&buff,sizeof(buff))); ui->Txt_State->setText(readstr+ui->Txt_State->toPlainText()+ ); ioctl(fd,PWM_IOCTL_SET_FREQ, 0); //buzzer is ringing!!! //write(fd,(char *)PWM_IOCTL_SET_FREQ,sizeof(PWM_IOCTL_SET_FREQ)); sleep(10); ioctl(fd,PWM_IOCTL_STOP, 0); //buzzer stop. //write(fd,(char *)PWM_IOCTL_STOP,sizeof(PWM_IOCTL_STOP)); } } ui->Txt_State->setPlainText(read s
首页 上一页 1 2 3 4 5 下一页 尾页 4/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇UVA 12508 - Triangles in the Gr.. 下一篇HDU2577dp基础

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: