QString AxisHandler::description() { QString addressesW(""), addressesR(""), addressesS(""), addressesG(""); for(int i=0; i<assignedWriteRegisters_.size(); ++i) { addressesW += QString::number(getRegister(i, regType::write)); if(i < assignedWriteRegisters_.size()-1) addressesW += ","; } for(int i=0; i<assignedReadRegisters_.size(); ++i) { addressesR += QString::number(getRegister(i, regType::read)); if(i < assignedReadRegisters_.size()-1) addressesR += ","; } for(int i=0; i<assignedSpeedRegisters_.size(); ++i) { addressesS += QString::number(getRegister(i, regType::speed)); if(i < assignedSpeedRegisters_.size()-1) addressesS += ","; } for(int i=0; i<assignedGearRegisters_.size(); ++i) { addressesG += QString::number(getRegister(i, regType::gear)); if(i < assignedGearRegisters_.size()-1) addressesG += ","; } return QString(handlerType())+"/"+QString::number(axesCount_)+"/"+addressesW+"/"+addressesR+"/"+addressesS+"/"+addressesG; }
Foam::fileOperations::autoParallelFileOperation:: autoParallelFileOperation ( const bool verbose ) : uncollatedFileOperation(false) { // Determine the underlying file handler word handlerType(getEnv("FOAM_FILEHANDLER")); if (handlerType == type()) { handlerType = word::null; } if (handlerType.empty()) { handlerType = fileOperation::defaultFileHandler; } if (verbose) { Info<< "I/O : " << typeName << nl << " (reconstructs on-the-fly in parallel operation)" << nl << " Underlying I/O through " << handlerType << endl; } if (regIOobject::fileModificationChecking == regIOobject::timeStampMaster) { if (verbose) { WarningInFunction << "Resetting fileModificationChecking to timeStamp" << endl; } regIOobject::fileModificationChecking = regIOobject::timeStamp; } else if ( regIOobject::fileModificationChecking == regIOobject::inotifyMaster ) { if (verbose) { WarningInFunction << "Resetting fileModificationChecking to inotify" << endl; } regIOobject::fileModificationChecking = regIOobject::inotify; } // Construct basic file handler basicFileHandler_ = fileOperation::New(handlerType, true); }
void AxisHandler::set(QStringList frame) { ModbusCommand* cmd; QStringList context = QStringList() << QString(handlerType()); bool ok = false; if(frame.at(0) == QString("*")) // (S,A,*,...) { if(frame.length() == axesCount_+1) // (S,A,*,pierwsza,druga,...) { context << QString("*"); ok = true; QVector<int> values; for(int i=1; i<=axesCount_; ++i) values.push_back(frame.at(i).toInt()); //rejestr kroków cmd = new ModbusCommandMultiwrite(context, getRegister(0, regType::write), axesCount_, values); } else { emit error("A/1/Arguments count not valid. Required " + QString::number(axesCount_+1) + \ ", given " + QString::number(frame.length())); return; } } else if(frame.at(0) == QString("s")) // (S,A,s,...) { context << QString("s"); if(frame.at(1) == QString("*")) // (S,A,s,*,...) { if(frame.length() == axesCount_+2) // (S,A,s,*,piersza,druga,...) { context << QString("*"); ok = true; QVector<int> values; for(int i=2; i<axesCount_+2; ++i) values.push_back(frame.at(i).toInt()); //rejestr prędkości cmd = new ModbusCommandMultiwrite(context, getRegister(0, regType::speed), axesCount_, values); } else { emit error("A/1/Arguments count not valid. Required 3 or " + QString::number(axesCount_+2) + \ ", given " + QString::number(frame.length())); return; } } else if(frame.length() == 3) // (S,A,s,nr,wartość) { ok = true; //rejestr prędkości cmd = new ModbusCommandWrite(context, getRegister(frame.at(1).toInt(), regType::speed), frame.at(2).toInt()); } else { emit error("A/1/Not enough arguments to set all axes' speed at once"); return; } } else if(frame.at(0) == QString("g")) // (S,A,g,...) { context << QString("g"); if(frame.at(1) == QString("*")) // (S,A,g,*,...) { if(frame.length() == axesCount_+2) // (S,A,g,*,piersza,druga,...) { context << QString("*"); ok = true; QVector<int> values; for(int i=2; i<axesCount_+2; ++i) values.push_back(frame.at(i).toInt()); //rejestr prędkości cmd = new ModbusCommandMultiwrite(context, getRegister(0, regType::gear), axesCount_, values); } else { emit error("A/1/Arguments count not valid. Required 3 or " + QString::number(axesCount_+2) + \ ", given " + QString::number(frame.length())); return; } } else if(frame.length() == 3) // (S,A,g,nr,wartość) { ok = true; //rejestr prędkości cmd = new ModbusCommandWrite(context, getRegister(frame.at(1).toInt(), regType::gear), frame.at(2).toInt()); } else { emit error("A/1/Not enough arguments to set all axes' gear at once"); return; } } else if(frame.length() == 2) // (S,A,nr,wartość) { ok = true; //rejestr kroków cmd = new ModbusCommandWrite(context, getRegister(frame.at(0).toInt(), regType::write), frame.at(1).toInt()); } else emit error("A/1/Arguments count not valid. Required 2 or " + QString::number(axesCount_+1) + \ " (+1 for speed), given " + QString::number(frame.length())); if(ok) { connect(cmd, SIGNAL(done(QStringList,QStringList)), this, SLOT(finish(QStringList,QStringList))); connect(cmd, SIGNAL(error(QString)), this, SLOT(failure(QString))); modbus_->addCommand(cmd); } }
void AxisHandler::get(QStringList frame) { QStringList context = QStringList() << QString(handlerType()) << frame.at(0); ModbusCommand* cmd; bool ok = false; if(frame.length() == 1) { if(frame.at(0) == QString("*")) { cmd = new ModbusCommandMultiread(context, getRegister(0, regType::read), axesCount_); } else { cmd = new ModbusCommandRead(context, getRegister(frame.at(0).toInt(), regType::read)); } ok = true; } else if(frame.length() == 2) { context << frame.at(1); if(frame.at(0) == QString("s")) { if(frame.at(1) == QString("*")) { cmd = new ModbusCommandMultiread(context, getRegister(0, regType::speed), axesCount_); ok = true; } else { cmd = new ModbusCommandRead(context, getRegister(frame.at(1).toInt(), regType::speed)); ok = true; } } else if(frame.at(0) == QString("g")) { if(frame.at(1) == QString("*")) { cmd = new ModbusCommandMultiread(context, getRegister(0, regType::gear), axesCount_); ok = true; } else { cmd = new ModbusCommandRead(context, getRegister(frame.at(1).toInt(), regType::gear)); ok = true; } } else emit error("A/2/Two arguments given, but first is not 's' nor 'g'"); } else emit error("A/1/Arguments count not valid. Required 1 or 2, given "+QString::number(frame.length())); if(ok) { connect(cmd, SIGNAL(done(QStringList,QStringList)), this, SLOT(finish(QStringList,QStringList))); connect(cmd, SIGNAL(error(QString)), this, SLOT(failure(QString))); modbus_->addCommand(cmd); } }