コード例 #1
0
CanMessage* CanAccess::txtMessage(const char* string) {
	boolean msg = false;
	boolean ext = false;
	long  eid = 0;
	short sid = 0;
	if (*string == 'X' || *string == 'R') {
		msg = (string[0] == 'X');
		ext = true;

		string += 2;
		eid  = ((long)parseHexDigit(*string++)) << 28;
		eid |= ((long)parseHexDigit(*string++)) << 24;
		++string;
		eid |= ((long)parseHexDigit(*string++)) << 20;
		eid |= ((long)parseHexDigit(*string++)) << 16;
		eid |= ((long)parseHexDigit(*string++)) << 12;
		++string;
		eid |= ((long)parseHexDigit(*string++)) << 8;
		eid |= ((long)parseHexDigit(*string++)) << 4;
		eid |= ((long)parseHexDigit(*string++));
	} else if (*string == 'S' || *string == 'r') {
		msg = (string[0] == 'S');
		ext = false;
		string += 2;
		sid |= ((short)parseHexDigit(*string++)) << 8;
		sid |= ((short)parseHexDigit(*string++)) << 4;
		sid |= ((short)parseHexDigit(*string++));
	} else {
		return NULL;
	}
	
	string += 3;
	byte length = parseHexDigit(*string++);
	if (length < 0 || 8 < length)
		return NULL;

	byte data[8];
	string += 3;
	for (int p = 0; p < length; ++p) {
		data[p]  = (parseHexDigit(*string++) << 4);
		data[p] |=  parseHexDigit(*string++);
		++string;
	}

	if (msg && ext) 
		return &extMessage(eid, length, data);
	else if (msg)
		return &stdMessage(sid, length, data);
	else if (ext)
		return &extRequest(eid, length, data);
	else		
		return &stdRequest(sid, length, data);
}
コード例 #2
0
void ApplyMeasureNowDialog::displayResults()
{
  analysis::RubyMeasure rubyMeasure = m_currentMeasureItem->measure();

  try{
    m_reloadPath = m_job->allFiles().getLastByFilename("out.osm").fullPath;
  }catch(...){
  }

  m_mainPaneStackedWidget->setCurrentIndex(m_outputPageIdx);
  m_timer->stop();

  this->okButton()->setText(ACCEPT_CHANGES);
  this->okButton()->show();
  if (m_reloadPath){
    this->okButton()->setEnabled(true);
  }else{
    this->okButton()->setEnabled(false);
  }
  this->backButton()->show();
  this->backButton()->setEnabled(true);
  this->cancelButton()->setEnabled(true);

  runmanager::JobErrors jobErrors = m_job->errors();
  OS_ASSERT(m_jobItemView);
  m_jobItemView->update(rubyMeasure, *m_bclMeasure, jobErrors, *m_job);
  m_jobItemView->setExpanded(true);

  if(!jobErrors.errors().empty()){
    this->okButton()->setDisabled(true);
  }

  m_advancedOutput.clear();
  // DLM: always show these files if they exist?
  //if(!jobErrors.succeeded()){
    try{
      runmanager::Files files(m_job->outputFiles());
      openstudio::path stdErrPath = files.getLastByFilename("stderr").fullPath;
      std::ifstream ifs(toString(stdErrPath).c_str());
      std::string stdMessage((std::istreambuf_iterator<char>(ifs)), std::istreambuf_iterator<char>());
      ifs.close();
      m_advancedOutput = toQString(stdMessage);
      m_advancedOutput += QString("\n");
    }catch(std::exception&){
    }
  //}

  // DLM: always show these files if they exist?
  //if(!jobErrors.succeeded()){
    try{
      runmanager::Files files(m_job->outputFiles());
      openstudio::path stdOutPath = files.getLastByFilename("stdout").fullPath;
      std::ifstream ifs(toString(stdOutPath).c_str());
      std::string stdMessage((std::istreambuf_iterator<char>(ifs)), std::istreambuf_iterator<char>());
      ifs.close();
      m_advancedOutput += toQString(stdMessage);
    }catch(std::exception&){
    }
  //}
 
}