JurisdictionMap::JurisdictionMap(const char* rootHexCode, const char* endNodesHexCodes) { _rootOctalCode = hexStringToOctalCode(QString(rootHexCode)); QString endNodesHexStrings(endNodesHexCodes); QString delimiterPattern(","); QStringList endNodeList = endNodesHexStrings.split(delimiterPattern); for (int i = 0; i < endNodeList.size(); i++) { QString endNodeHexString = endNodeList.at(i); unsigned char* endNodeOctcode = hexStringToOctalCode(endNodeHexString); //printOctalCode(endNodeOctcode); _endNodes.push_back(endNodeOctcode); } }
void ips::setdata(QString comdata) { for (int j=0; j<10; j++) // { // Setzt das Zwischenspeicher-Array=0 zwischenspeicher[j]=0; // } // QString delimiterPattern("\n"); //Teilt den comdata-String in die einzelnen Datenpakete, anhand der Endmarke \n QStringList comdatasplit = comdata.split(delimiterPattern); // for (int i=0; i<comdatasplit.size(); i++) //Die Schleife geht alle Datenpakete7Stücke durch { if(comdatasplit[i].length()>0){ //Verhindert Abstürze bei leeren Paketen if (comdatasplit[i].left(1).contains("t", Qt::CaseInsensitive)) //Fragt ab ob es ein t Paket ist, andere werden verworfen {if(comdatasplit[i].length()==13) //Verhindert Abstürze bei unvollständigen Datenpaketen { bool ok; int s=0; s=comdatasplit[i].mid(1,2).toInt(&ok,10)-1; //extrahiert den String mit der Stationsnummer und konvertiert in einene int (Basis 10) int t=0; comdatasplit[i].mid(3,10).toInt(&ok,10); //extrahiert den String mit der Zeit und konvertiert in eine int (Basis 10) if(ok){ t=comdatasplit[i].mid(3,10).toInt(&ok,10); zwischenspeicher[s]=t; } //Speichert die empfangenenen Werte zwischen //setstationtime(s,t); //speichert die Stationsnummer und Zeit } // else{ //braucht es das? ich glaub nicht // if(comdatasplit[i].length()>3) // { // bool ok; // int s=0; // comdatasplit[i].mid(1,2).toInt(&ok,10); // if(ok) // { // s=comdatasplit[i].mid(1,2).toInt(&ok,10)-1; // } // else // { // // s=comdatasplit[i-1].mid(1,2).toInt(&ok,10); //geht nicht // } // //setstationtime(s,0); // keepstationtime(s); // } // else // { // // bool ok; // int s=0; // // s=comdatasplit[i-1].mid(1,2).toInt(&ok,10); //geht nicht // //setstationtime(s,0); // keepstationtime(s); // } // } // } } } for(int k=0; k<10; k++) { setstationtime(k, zwischenspeicher[k]); //qDebug()<<zwischenspeicher[k]; } }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // temp vars QStringList pieces; QString line; QString delimiterPattern(","), tempData; int dimension = 2; int nInc = 100; // ========================= NODES FILE (open and read nodes file) ========================= QString nodesFile = QFileDialog::getOpenFileName(this, QObject::tr("Open Nodes File"),"",QObject::tr("Data (*.dat*);; Text (*.txt*)")); QFile fileNodes(nodesFile); fileNodes.open(QIODevice::ReadOnly | QIODevice::Text); // get number of lines QTextStream inNodes(&fileNodes); NodeList nodes; DoubleList coords(2); DoubleList coordsPrescribed(2); double x1,x2,x1t,x2t; bool bflag; int idxNode = 0; while (!inNodes.atEnd()) { // read node line = inNodes.readLine(); pieces = line.split(delimiterPattern); tempData = pieces.value(0); x1 = tempData.toDouble(); tempData = pieces.value(1); x2 = tempData.toDouble(); tempData = pieces.value(2); bflag = tempData.toDouble(); bflag = (bool) bflag; tempData = pieces.value(3); x1t = tempData.toDouble(); tempData = pieces.value(4); x2t = tempData.toDouble(); coords[0] = x1; coords[1] = x2; coordsPrescribed[0] = x1t; coordsPrescribed[1] = x2t; // write nodes array if (bflag) { nodes.push_back(Node()); nodes[idxNode].initializeNode(coords,idxNode,dimension,bflag); nodes[idxNode].setPrescribedDisplacement(coordsPrescribed); } else { nodes.push_back(Node()); nodes[idxNode].initializeNode(coords,idxNode,dimension,bflag); } // update counter idxNode++; } // total number of nodes int nNodes = idxNode; fileNodes.close(); // ========================= ELEMENTS FILE (open and read nodes file) ========================= QString elementsFile = QFileDialog::getOpenFileName(this, QObject::tr("Open Elements File"),"",QObject::tr("Data (*.dat*);; Text (*.txt*)")); QFile fileElements(elementsFile); fileElements.open(QIODevice::ReadOnly | QIODevice::Text); // get number of lines QTextStream inElements(&fileElements); ElementList elements; int idxN1,idxN2; double cl,ch,cutoff; int idxElement = 0; while (!inElements.atEnd()) { // read node line = inElements.readLine(); pieces = line.split(delimiterPattern); tempData = pieces.value(0); idxN1 = tempData.toDouble(); idxN1 = (int) idxN1; tempData = pieces.value(1); idxN2 = tempData.toDouble(); idxN2 = (int) idxN2; tempData = pieces.value(2); cl = tempData.toDouble(); tempData = pieces.value(3); ch = tempData.toDouble(); tempData = pieces.value(4); cutoff = tempData.toDouble(); // write elements array elements.push_back(Element(nodes[idxN1],nodes[idxN2],cl,ch,cutoff)); // update counter idxElement++; } // total number of nodes int nElements = idxElement; fileElements.close(); // ========================= INITIALIZE NETWORK AND SOLVE ========================= Network network(nodes,elements,nNodes,nElements,nInc); }