Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2015, 22:48   #1
bedouin
Пользователь
 
Регистрация: 05.01.2012
Сообщений: 27
По умолчанию График из СОМ портаданных

Добрый вечер всем!

Столкнулся с проблемой при отображении двоичных данных, поступающих из СОМ порта.
За основу взял пример из исходников qcustomplot, который строил график в реальном времени. Заменил тригонометрические функции на данные из СОМ порта следующим образом:
Код:
void MainWindow::realtimeDataSlot()
{
  // calculate two new data points:
 
  double key = QDateTime::currentDateTime().toMSecsSinceEpoch()/1000.0;
 
  static double lastPointKey = 0;
  if (key-lastPointKey > 0.01) // at most add point every 10 ms
  {
      double value0 = graphValue;
 
    // add data to lines:
    ui->customPlot->graph(0)->addData(key, value0);
 
    ui->customPlot->graph(2)->clearData();
    ui->customPlot->graph(2)->addData(key, value0);
 
    // remove data of lines that's outside visible range:
    ui->customPlot->graph(0)->removeDataBefore(key-8);
 
    ui->customPlot->graph(0)->rescaleValueAxis();
 
    lastPointKey = key;
  }
  // make key axis range scroll with the data (at a constant range size of 8):
  ui->customPlot->xAxis->setRange(key+0.25, 8, Qt::AlignRight);
  ui->customPlot->replot();
 
  // calculate frames per second:
  static double lastFpsKey;
  static int frameCount;
  ++frameCount;
  if (key-lastFpsKey > 2) // average fps over 2 seconds
  {
    ui->statusBar->showMessage(
          QString("%1 FPS, Total Data points: %2")
          .arg(frameCount/(key-lastFpsKey), 0, 'f', 0)
          .arg(ui->customPlot->graph(0)->data()->count()+ui->customPlot->graph(1)->data()->count())
          , 0);
    lastFpsKey = key;
    frameCount = 0;
  }
}
Сами данные из порта считываю как:
Код:
void MainWindow::slotReceivedData( const QByteArray &data )
{
    graphData = data;
    graphValue = graphData.toInt(&ok,16);
    ui->textEdit->append( graphData  );
  }
Чтобы себя перепроверить, рядом с графиком расположил textEdit, чтобы видеть поступающие данные.
Так вот, в textEdit данные отображаются, а график как рисовал ноль, так его и рисует.
В чем проблема? Неправильно перегоняю из двоичной формы в десятичную?
bedouin вне форума Ответить с цитированием
Старый 20.07.2015, 16:19   #2
DemonSinusa
Пользователь
 
Регистрация: 20.06.2015
Сообщений: 10
По умолчанию

Доброго времени суток уважаемый.
Ну,может я и не спал 4 дня, но разве:

Код:
  static double lastPointKey = 0;
  if (key-lastPointKey > 0.01) // at most add point every 10 ms
!=


Код:
  static double lastPointKey = 0;
  if (key > 0.01) // at most add point every 10 ms
Ну это как вариант... С портами не работал, графики строил не на таких интерфейсах.
DemonSinusa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Затабулировать функцию. график указанной функции и график касательной к ней в точке с абсциссой AntonKalinin01 Помощь студентам 0 26.05.2013 07:18
сом порт , БД olegd Помощь студентам 7 05.07.2010 10:34
СОМ-сервер и СОМ-клиент Ninetta Общие вопросы .NET 0 27.03.2010 23:57
СОМ EdNovice Общие вопросы Delphi 3 10.11.2009 08:58
СОМ порт JUDAS Win Api 0 10.01.2009 21:27