C++ (Qt)int myMegaSum( int n ){ for (int i=1;i<n;i++) { int a = a + i; }}...int n = 3000;QFuture<int> future = QtConcurrent::run( myMegaSum, n );
//+++++++функция обработки данных и получения с датчикаQString ReadWrite (QString serial,QString nms,QString nameFile,FT_HANDLE ftHandle1){ FT_STATUS ftStatus1; DWORD BytesWritten1; //DWORD sizeMsg; QString TxBuffer1; QString lrc; // int msg; nms=QString::number( nms.toInt()+1); TxBuffer1="#TPO,TO:"; TxBuffer1.append(serial); TxBuffer1.append(QString(",FROM:")).append( QString("000001,")).append("PAS:1111,NMS:"); TxBuffer1.append(nms); TxBuffer1.append(",GET_DATA:DBG_DATA,LRC:"); lrc="00"; QString TxBuffer1NEW = TxBuffer1; TxBuffer1.append(lrc).append(",#TPE"); QString a; a = TxBuffer1; QByteArray buffer1 = TxBuffer1.toAscii(); char * p; p = buffer1.data(); quint8 cSummator; int lrC =buffer1.length(); for (int k=5;k<=(lrC-5);k++) { cSummator = cSummator+p[k]; } //подсчет лрц int cFirst,cSecond; cFirst=cSummator/16; cSecond = cSummator % 16; if (cFirst>9) {cFirst=cFirst+55;} else cFirst=cFirst+48; if(cSecond>9) {cSecond=cSecond+55;} else cSecond=cSecond+48; lrc = QString(cFirst); lrc.append(cSecond); // cSummator = lrc.toUInt()- 0xFF+1; //lrc = cSummator; TxBuffer1NEW.append(lrc).append(",#TPE"); QByteArray TBuffer1= TxBuffer1NEW.toAscii(); DWORD sizeMsg; int dlinaComand; dlinaComand =TxBuffer1.length(); sizeMsg = TxBuffer1.length();// отправка команды ftStatus1 = FT_Write(ftHandle1, TBuffer1.data(), sizeMsg, &BytesWritten1); if (ftStatus1 == FT_OK) {//если строчка прошла успешно //progres=progres+1; } else { QMessageBox::warning(0,"ОШИБКА", "ошибка при обмене сообщениями с датчиком топлива \n" "перезапустите программу и повторите попытку", QMessageBox::Ok,QMessageBox::Ok); }//чтение ответa с прибора DWORD BytesReceived; DWORD RxBytes = 100; char RxBuffer[255]= "0"; // FT_SetTimeouts(ftHandle1,250,250); ftStatus1 = FT_Read(ftHandle1,RxBuffer,RxBytes,&BytesReceived); QString sbufRead; int sum=0; sum= sum+ BytesReceived; sbufRead = QString(RxBuffer); ftStatus1 = FT_Read(ftHandle1,RxBuffer,RxBytes,&BytesReceived); sum= sum+ BytesReceived; sbufRead.append(QString(RxBuffer)); QString otvet; QFile fl(nameFile); fl.open(QIODevice::Append | QIODevice::Text ); QTextStream out(&fl); out << nms; out << endl; fl.close(); for(int cm = dlinaComand;cm <= sbufRead.length();cm++) { if (sbufRead[cm]=='#'&& sbufRead[cm+1]=='T' && sbufRead[cm+2]=='P' && sbufRead[cm+3] == 'E' ) { otvet = otvet.append(sbufRead[cm]); otvet = otvet.append(sbufRead[cm+1]); otvet = otvet.append(sbufRead[cm+2]); otvet = otvet.append(sbufRead[cm+3]); break; } otvet = otvet.append(sbufRead[cm]); } int error=0; int dlinaOtvet=0; dlinaOtvet = otvet.length(); if (ftStatus1 == FT_OK) { if (dlinaOtvet+dlinaComand ==sum ) { // запись ответов датчика QString sPokazateli; for(int datc1=1; datc1<dlinaOtvet;datc1++) { if (otvet[datc1]=='L'&& otvet[datc1+1]=='U' && otvet[datc1+2]=='E' && otvet[datc1+3]==':') { datc1 = datc1+4; while ( otvet[datc1]!=',' && otvet[datc1+1]!='L' && otvet[datc1+2]!='R' && otvet[datc1+3]!='C' ) { if ((otvet[datc1]!=';') ) { sPokazateli.append(otvet[datc1]); datc1++; if (otvet[datc1] ==',') { QFile d1(nameFile); d1.open(QIODevice::Append | QIODevice::Text ); QTextStream out(&d1); out << sPokazateli; out << endl; d1.close(); sPokazateli.clear(); // break; }} else { QFile d1(nameFile); d1.open(QIODevice::Append | QIODevice::Text ); QTextStream out(&d1); out << sPokazateli; out << endl; d1.close(); sPokazateli.clear(); datc1++; } } } } }else { error++; if (error <=3) { QMessageBox::warning(0,"ОШИБКА", "тест провален 3 подрят ошибки обмена с датчиком \n" "перезапустите программу и повторите попытку", QMessageBox::Ok,QMessageBox::Ok); } } } return nms; }
C++ (Qt) QByteArray buffer1 = TxBuffer1.toAscii(); char * p; p = buffer1.data(); quint8 cSummator; // Сумматор не инициализирован! int lrC =buffer1.length(); for (int k=5;k<=(lrC-5);k++) // почему условие меньгше или равно? Нужно только меньше! // что это за констранта 5? Почему 5, а не 7? { cSummator = cSummator+p[k]; // для чего использовать указатель p? Вместо p[k] можно просто buffer1[k]. }