//初始化系统 void Gprs::initAT() { //打开和设置端口 if(fd==0) { if((fd=SerialPort::open_port(1))<0){ QMessageBox::warning(0, tr("Warning:"), tr("Open port error!")); return; } if((SerialPort::set_opt(fd,115200,8,'N',1))<0){ QMessageBox::warning(0, tr("Warning:"), tr("Set port error!")); return; } } //tcflush(fd,TCIOFLUSH); resetBuff();//给buff清零 //设置定时器 timerRead = new QTimer; timerRead->start(TIME); connect( timerRead, SIGNAL(timeout()), this, SLOT(timeout_slot()) ); //发送获取短信中心号码请求(部分设备不支持) //SerialPort::nwrite(fd,"AT+CSCA?\r\n",sizeof("AT+CSCA?\r\n")); //serverNumFlag=1; //呼叫线路识别显示 SerialPort::nwrite(fd,"AT+CLIP=1\r\n",sizeof("AT+CLIP=1\r\n")); }
/* * Receive response waiting timeout millisec */ char* HTTP::getResponse(int sk,int timeout) { int len; char* line; int i; for(i=-1;i<timeout;i=i+10){line=readLine(sk);if(line!=NULL) break;delay(10);} if (line==NULL) return NULL; if (memcmp(line,"HTTP/1.1",8)!=0) {strcpy(respmess,"ERR");cleanBuff(sk);return "Err!";} strncpy(respmess,(line+9),3); if (memcmp(line,"HTTP/1.1 200",12)!=0) {cleanBuff(sk);return NOPAGE;} while (line!=NULL) { line=readLine(sk); if (line!=NULL) { char *param=checkHeader(line,headerLen); if (param!=NULL) sscanf(param,"%i",&len); if (strlen(line)<2) {break;} } } readLine(sk); char* p=strchr(linebuff,'\0');*p='\n'; if (len>LINEBUFFLEN) len=LINEBUFFLEN; linebuff[len]='\0'; resetBuff(); uint8_t tmp[8];while (readData(sk,tmp,8)>0); return linebuff; }
/* * With timeout (millisec) */ unsigned int HTTP::getResponse(int sk,uint8_t rbuff[],int rbufflen,int timeout) { int len; char* line; int i; for(i=-1;i<timeout;i=i+10){line=readLine(sk);if(line!=NULL) break;delay(10);} if (line==NULL) return -1; if (memcmp(line,"HTTP/1.1",8)!=0) {strcpy(respmess,"ERR");cleanBuff(sk);return -2;} strncpy(respmess,(line+9),3); if (line==NULL) return -1; if (memcmp(line,"HTTP/1.1 200",12)!=0) {cleanBuff(sk);return -2;} while (line!=NULL) { line=readLine(sk); if (line!=NULL) { char *param=checkHeader(line,headerLen); if (param!=NULL) sscanf(param,"%i",&len); if (strlen(line)<2) {break;} } } resetBuff(); if (len==0) return 0; uint16_t nb=readData(sk,rbuff,rbufflen); return nb; }
//定时器触发(从串口读取数据) void Gprs::timeout_slot() { if(fd) { if(read(fd,buff,sizeof(buff))!=0) { qDebug()<<QString(buff); ReadMsg(QString(buff)); resetBuff(); } } }
//===================>>> vedTextEditor::ReadFile <<<==================== int vedTextEditor::ReadFile(char* name, int paintIt) { char buff[maxBuff+2]; if (!name || !*name) return 0; ifstream inFile(name); if (!inFile) return 0; // file not there resetBuff(); // this buffer is empty while (inFile.getline(buff,maxBuff)) { if (!addLine(buff)) { vNoticeDialog note(theApp); note.Notice("File too big -- only paritally read."); break; } } inFile.close(); if ( ((videApp*)theApp)->getBackup()) { char outname[maxBuff+2]; vOS os; if (strstr(name,".bak") == 0 && strlen(name) < maxBuff - 4) { strcpy(outname,name); strcat(outname,".bak"); os.vDeleteFile(outname); // delete old .bak first if (os.vRenameFile(name,outname)) SaveFile(name); } } displayBuff(1,paintIt); // Now, display the buffer , don't paint return 1; }