void read_error_image(const char *file) { ifstream iF(file); if (!iF) return; int w, h; iF >> w >> h; int s = w*h * 3; vector<float> data(s); float err, max_error = 0; for (int i = 0; i < s; i++) { iF >> err; data[i] = err; if (err > max_error) max_error = err; } for (int i = 0; i < s; i++) { data[i] /= max_error; data[i] *= 255.; } error_image.resize(w*h * 3); for(int y = 0 ; y<h;y++) for (int x = 0; x < w; x++) { int idx = y*w + x; error_image[idx * 3] = data[idx]; error_image[idx * 3+1] = data[idx]; error_image[idx * 3+1] = data[idx]; } int sss = 0; }
bool readHashTable(HashTable &hT,const char *file) { // std::ofstream oF("sss.txt"); oF.close(); std::ifstream iF(file); if (!iF) return false; int size; iF >> size; table_size = size; InitHashTable(hT); ElemType data; //student while (iF >> data.id) { iF >> data.score; InsertHashTable(hT, data); } return true; }
bool YarrGui::addFE(std::string fN){ nlohmann::json j; std::ifstream iF(fN); if(!iF.is_open()){ std::cerr << "Config file " << fN << " does not exist. Aborting... " << std::endl; return false; } try{ iF >> j; } catch(std::invalid_argument){ std::cerr << "File " << fN << " does not contain a valid configuration. Aborting... " << std::endl; iF.close(); return false; } try{ if(bk->isChannelUsed((unsigned int)j["FE-I4B"]["rxChannel"])){ std::cerr << "Channel " << (unsigned int)j["FE-I4B"]["rxChannel"] << " in config file " << fN << " already used. Aborting... " << std::endl; iF.close(); return false; } } catch(std::domain_error){ std::cerr << "Missing txChannel/rxChannel field in config file " << fN << ". Aborting... " << std::endl; iF.close(); return false; } iF.close(); bk->addFe(new Fei4(bk->tx, (unsigned int)j["FE-I4B"]["txChannel"], (unsigned int)j["FE-I4B"]["rxChannel"]), (unsigned int)j["FE-I4B"]["txChannel"], (unsigned int)j["FE-I4B"]["rxChannel"]); try{ dynamic_cast<Fei4*>(bk->getLastFe())->fromFileJson(j); } catch(std::domain_error){ std::cerr << "Config file " << fN << " does not contain a valid configuration. Aborting... " << std::endl; return false; } tx->setCmdEnable(0x1 << (unsigned int)j["FE-I4B"]["rxChannel"]); dynamic_cast<Fei4*>(bk->getFe((unsigned int)j["FE-I4B"]["rxChannel"]))->configure(); dynamic_cast<Fei4*>(bk->getFe((unsigned int)j["FE-I4B"]["rxChannel"]))->configurePixels(); while(!(tx->isCmdEmpty())) { ; } std::this_thread::sleep_for(std::chrono::microseconds(1000)); tx->setCmdEnable(bk->getTxMask()); rx->setRxEnable(bk->getRxMask()); QTreeWidgetItem * feTreeItem = new QTreeWidgetItem(ui->feTree); QTreeWidgetItem * feTreeItemId = new QTreeWidgetItem(feTreeItem); QTreeWidgetItem * feTreeItemTx = new QTreeWidgetItem(feTreeItem); QTreeWidgetItem * feTreeItemRx = new QTreeWidgetItem(feTreeItem); QTreeWidgetItem * feTreeItemCf = new QTreeWidgetItem(feTreeItem); QTreeWidgetItem * feTreeItemCk = new QTreeWidgetItem(feTreeItem); { std::string chipNameTmp; unsigned int chipIdTmp; unsigned int txChannelTmp; unsigned int rxChannelTmp; try{ chipNameTmp = j["FE-I4B"]["name"]; } catch(std::domain_error){ std::cerr << "Config file " << fN << " has no \"name\" field. " << "Defaulting to \"myChip\". " << std::endl; chipNameTmp = "myChip"; } try{ chipIdTmp = j["FE-I4B"]["Parameter"]["chipId"]; } catch(std::domain_error){ std::cerr << "Config file " << fN << " has no \"chipId\" field. " << "Defaulting to 6. " << std::endl; chipIdTmp = 6; } txChannelTmp = j["FE-I4B"]["txChannel"]; rxChannelTmp = j["FE-I4B"]["rxChannel"]; feTreeItem->setText(0, QString::fromStdString(chipNameTmp)); feTreeItemId->setText(0, "Chip ID"); feTreeItemId->setText(1, QString::number(chipIdTmp)); feTreeItemTx->setText(0, "TX Channel"); feTreeItemTx->setText(1, QString::number(txChannelTmp)); feTreeItemRx->setText(0, "RX Channel"); feTreeItemRx->setText(1, QString::number(rxChannelTmp)); feTreeItemCf->setText(0, "Config file"); feTreeItemCf->setText(1, QString::fromStdString(fN)); } QPushButton * b = new QPushButton("Edit config", this); ui->feTree->setItemWidget(feTreeItemCf, 2, b); QObject::connect(b, &QPushButton::clicked, this, [=](){ EditCfgDialog d(dynamic_cast<Fei4*>(bk->getFe((unsigned int)j["FE-I4B"]["rxChannel"])), QString::fromStdString(fN), this); d.exec(); }); feTreeItemCk->setText(0, "Scan"); feTreeItemCk->setFlags(feTreeItemCk->flags() | Qt::ItemIsUserCheckable | Qt::ItemIsSelectable); feTreeItemCk->setCheckState(1, Qt::Checked); feTreeItem->addChild(feTreeItemId); feTreeItem->addChild(feTreeItemTx); feTreeItem->addChild(feTreeItemRx); feTreeItem->addChild(feTreeItemCf); feTreeItem->addChild(feTreeItemCk); feTreeItem->setExpanded(true); return true; }