1 Star 0 Fork 0

zhf/forceSensor

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
forcesensorchart.h 2.61 KB
一键复制 编辑 原始数据 按行查看 历史
zhf 提交于 2023-07-21 13:35 +08:00 . 实时同步QCustomPlot绘图
#ifndef FORCESENSORCHART_H
#define FORCESENSORCHART_H
#include <QMainWindow>
#include <QtCharts>
#include <QSplineSeries>
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
//#define DATATEST
//QT_CHARTS_USE_NAMESPACE
QT_BEGIN_NAMESPACE
namespace Ui { class forceSensorChart; }
QT_END_NAMESPACE
class QCustomPlot;
//时间轴的显示模式
enum {
FOLLOW,//跟随最新曲线,保持画框范围
SQUEEZE //压缩时间轴,全局显示曲线
};
const float timeRange = 5.0f;
const int forceRangeMin = -11;
const int forceRangeMax = 11;
const double torqueRangeMin = -0.5;
const double torqueRangeMax = 0.5;
const float timeInterval = 0.2f;
const float forceCoeff = 0.0048828125f;
const float torqueCoeff = 0.0001953125f;
struct ForceSensor
{
QVector<qreal> forceX;
QVector<qreal> forceY;
QVector<qreal> forceZ;
QVector<qreal> torqueX;
QVector<qreal> torqueY;
QVector<qreal> torqueZ;
};
class forceSensorChart : public QMainWindow
{
Q_OBJECT
public:
forceSensorChart(QWidget *parent = nullptr);
~forceSensorChart();
//初始化操作
void chartInit();//图表初始化
void graphInit();// QCustomPlot 初始化
void serialInit();//串口初始化
void connectInit();//连接初始化
void forceSensorDataProcess(unsigned char* buf);//力传感器数据处理
void decode(QByteArray buf); //力传感器数据解码
void updateCanvas(float currentTime);//更新画布
void updateData();//更新数据
void drawForce(); //绘制力曲线
private slots:
void on_btnOpenPort_toggled(bool checked);//打开或关闭端口
void on_btnRefreshPort_clicked();//更新可用串口
void on_serial_received();//接收数据
void on_serial_received2();//接收数据传给 QCustomPlot
void on_btnClear_clicked();
void on_btnSend_clicked();
void realtimeDataPlot(); // QCustomPlot 实时绘图
private:
Ui::forceSensorChart *ui;
//图表
QChart* chart;
QSplineSeries* seriesForce[6];
QValueAxis* axisX;
QValueAxis* axisYForce;
QValueAxis* axisYTorque;
//力数据
float m_forceData[6]{0};
QSharedPointer<ForceSensor> forceSensorPtr;
//串口
QSerialPort* serial;
//状态量
bool isPortOpen;//通道是否开启
bool isDataNull;//通道是否传送数据
bool isPauseData;//是否暂停接收数据
int drawMode; //绘图模式
QTimer* m_clock;// 定时器
QElapsedTimer* m_timer;//计时器
// QCustomPlot 图形
QCustomPlot* customPlotForce;//力曲线图
QCustomPlot* customPlotTorque;//力矩曲线图
};
#endif // FORCESENSORCHART_H
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/hf_zhao/forceSensor.git
git@gitee.com:hf_zhao/forceSensor.git
hf_zhao
forceSensor
forceSensor
master

搜索帮助