参数可以读写
This commit is contained in:
@@ -172,7 +172,7 @@ void ParameterInspector::refreshView()//来一个参数更新一次
|
||||
QTreeWidgetItem* paraItem = new QTreeWidgetItem();
|
||||
paraItem->setData(0,Qt::DisplayRole,param_id(param.param_id));
|
||||
paraItem->setData(1,Qt::DisplayRole,param_value(param));
|
||||
paraItem->setData(2,Qt::DisplayRole,param.param_type);
|
||||
paraItem->setData(2,Qt::DisplayRole,param_type(param));
|
||||
widgetitems.insert(param.param_index,paraItem);
|
||||
}
|
||||
}
|
||||
@@ -306,6 +306,201 @@ QVariant ParameterInspector::param_value(mavlink_param_value_t param)
|
||||
return value;
|
||||
}
|
||||
|
||||
float ParameterInspector::param_getvalue(QVariant param,uint8_t type)
|
||||
{
|
||||
float value;
|
||||
union {
|
||||
uint8_t u8[8];
|
||||
int8_t i8[8];
|
||||
uint16_t u16[4];
|
||||
int16_t i16[4];
|
||||
uint32_t u32[2];
|
||||
int32_t i32[2];
|
||||
uint64_t u64;
|
||||
int64_t i64;
|
||||
float f[2];
|
||||
double d;
|
||||
}src;
|
||||
|
||||
//src.f[0] = param.toInt();
|
||||
|
||||
qDebug() << src.f[0];
|
||||
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case MAV_PARAM_TYPE_UINT8:
|
||||
{
|
||||
src.u8[0] = param.toUInt();
|
||||
((uint8_t *)&value)[0] = src.u8[0];
|
||||
|
||||
}break;
|
||||
case MAV_PARAM_TYPE_INT8:
|
||||
{
|
||||
src.i8[0] = param.toUInt();
|
||||
((int8_t *)&value)[0] = src.i8[0];
|
||||
}break;
|
||||
case MAV_PARAM_TYPE_UINT16:
|
||||
{
|
||||
src.u16[0] = param.toUInt();
|
||||
((uint16_t *)&value)[0] = src.u16[0];
|
||||
}break;
|
||||
case MAV_PARAM_TYPE_INT16:
|
||||
{
|
||||
src.i16[0] = param.toUInt();
|
||||
((int16_t *)&value)[0] = src.i16[0];
|
||||
}break;
|
||||
case MAV_PARAM_TYPE_UINT32:
|
||||
{
|
||||
src.u32[0] = param.toUInt();
|
||||
((uint32_t *)&value)[0] = (uint32_t)src.u32[0];
|
||||
}break;
|
||||
case MAV_PARAM_TYPE_INT32:
|
||||
{
|
||||
src.i32[0] = param.toUInt();
|
||||
((int32_t *)&value)[0] = (int32_t)src.i32[0];
|
||||
}break;
|
||||
case MAV_PARAM_TYPE_UINT64:
|
||||
{
|
||||
src.u64 = param.toUInt();
|
||||
((uint64_t *)&value)[0] = (uint64_t )src.u64;
|
||||
}break;
|
||||
case MAV_PARAM_TYPE_INT64:
|
||||
{
|
||||
src.i64 = param.toUInt();
|
||||
((int64_t *)&value)[0] = (int64_t)src.i64;
|
||||
}break;
|
||||
case MAV_PARAM_TYPE_REAL32:
|
||||
{
|
||||
src.f[0] = param.toFloat();
|
||||
((float *)&value)[0] = (float)src.f[0];
|
||||
}break;
|
||||
case MAV_PARAM_TYPE_REAL64:
|
||||
{
|
||||
src.d = param.toDouble();
|
||||
((double *)&value)[0]= (double)src.d;
|
||||
}break;
|
||||
default:
|
||||
{
|
||||
src.i32[0] = param.toUInt();
|
||||
((int32_t *)&value)[0] = (int32_t)src.i32[0];
|
||||
}break;
|
||||
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
QVariant ParameterInspector::param_type(mavlink_param_value_t param)
|
||||
{
|
||||
QVariant value;
|
||||
|
||||
switch (param.param_type)
|
||||
{
|
||||
case MAV_PARAM_TYPE_UINT8:
|
||||
{
|
||||
value = "uint8";
|
||||
}break;
|
||||
case MAV_PARAM_TYPE_INT8:
|
||||
{
|
||||
value = "int8";
|
||||
}break;
|
||||
case MAV_PARAM_TYPE_UINT16:
|
||||
{
|
||||
value = "uint16";
|
||||
}break;
|
||||
case MAV_PARAM_TYPE_INT16:
|
||||
{
|
||||
value = "int16";
|
||||
}break;
|
||||
case MAV_PARAM_TYPE_UINT32:
|
||||
{
|
||||
value = "uint32";
|
||||
}break;
|
||||
case MAV_PARAM_TYPE_INT32:
|
||||
{
|
||||
value = "int32";
|
||||
}break;
|
||||
case MAV_PARAM_TYPE_UINT64:
|
||||
{
|
||||
value = "uint64";
|
||||
}break;
|
||||
case MAV_PARAM_TYPE_INT64:
|
||||
{
|
||||
value = "int64";
|
||||
}break;
|
||||
case MAV_PARAM_TYPE_REAL32:
|
||||
{
|
||||
value = "float";
|
||||
}break;
|
||||
case MAV_PARAM_TYPE_REAL64:
|
||||
{
|
||||
value = "double";
|
||||
}break;
|
||||
default:
|
||||
{
|
||||
value = "unknow";
|
||||
}break;
|
||||
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
uint8_t ParameterInspector::param_gettype(QVariant type)
|
||||
{
|
||||
uint8_t value;
|
||||
|
||||
if(type.toString() == "uint8")
|
||||
{
|
||||
value = MAV_PARAM_TYPE_UINT8;
|
||||
}
|
||||
else if(type.toString() == "int8")
|
||||
{
|
||||
value = MAV_PARAM_TYPE_INT8;
|
||||
}
|
||||
else if(type.toString() == "uint16")
|
||||
{
|
||||
value = MAV_PARAM_TYPE_UINT16;
|
||||
}
|
||||
else if(type.toString() == "int16")
|
||||
{
|
||||
value = MAV_PARAM_TYPE_INT16;
|
||||
}
|
||||
else if(type.toString() == "uint32")
|
||||
{
|
||||
value = MAV_PARAM_TYPE_UINT32;
|
||||
}
|
||||
else if(type.toString() == "int32")
|
||||
{
|
||||
value = MAV_PARAM_TYPE_INT32;
|
||||
}
|
||||
else if(type.toString() == "uint64")
|
||||
{
|
||||
value = MAV_PARAM_TYPE_UINT64;
|
||||
}
|
||||
else if(type.toString() == "int64")
|
||||
{
|
||||
value = MAV_PARAM_TYPE_INT64;
|
||||
}
|
||||
else if(type.toString() == "float")
|
||||
{
|
||||
value = MAV_PARAM_TYPE_REAL32;
|
||||
}
|
||||
else if(type.toString() == "double")
|
||||
{
|
||||
value = MAV_PARAM_TYPE_REAL64;
|
||||
}
|
||||
else if(type.toString() == "unknow")
|
||||
{
|
||||
value = 0;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
|
||||
char* ParameterInspector::param_id(char *id)//设置id,如果id小于16,那么能够找到/0,如果等于或者大于,那么会找不到,因此乱码
|
||||
{
|
||||
@@ -348,7 +543,7 @@ void ParameterInspector::on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item,
|
||||
|
||||
parentItem = item->parent()->data(0,Qt::DisplayRole).toString();
|
||||
|
||||
currentSelectType = item->data(2,Qt::DisplayRole).toUInt();
|
||||
currentSelectType = param_gettype(item->data(2,Qt::DisplayRole));
|
||||
|
||||
}
|
||||
}
|
||||
@@ -364,11 +559,13 @@ void ParameterInspector::on_WriteButton_clicked()
|
||||
QString parentid = parentItem.mid(8);
|
||||
uint8_t sysid = parentid.toInt();
|
||||
|
||||
char *id = ui->SearchlineEdit->text().toLatin1().data();
|
||||
//char *id = ui->SearchlineEdit->text().toLatin1().data();
|
||||
|
||||
float value = ui->ValuelineEdit->text().toFloat();
|
||||
//qDebug() << id;
|
||||
|
||||
emit WriteCmd(sysid,1,id,currentSelectType,value);
|
||||
float value = param_getvalue(ui->ValuelineEdit->text().toFloat(),currentSelectType);
|
||||
|
||||
emit WriteCmd(sysid,1,ui->SearchlineEdit->text().toLatin1().data(),currentSelectType,value);
|
||||
|
||||
//读取是哪设备,是哪个参数,然后发送出去
|
||||
}
|
||||
|
||||
@@ -141,6 +141,13 @@ private slots:
|
||||
|
||||
|
||||
QVariant param_value(mavlink_param_value_t param);
|
||||
|
||||
float param_getvalue(QVariant param,uint8_t type);
|
||||
|
||||
QVariant param_type(mavlink_param_value_t param);
|
||||
|
||||
uint8_t param_gettype(QVariant type);
|
||||
|
||||
char* param_id(char *id);
|
||||
|
||||
|
||||
|
||||
@@ -132,8 +132,18 @@ void ParameterProcess::WriteCmd(uint8_t m_sysid, uint8_t m_compid ,const char *i
|
||||
|
||||
status.m_Mode = TransmitMode;//发送模式
|
||||
|
||||
/*
|
||||
if(sizeof(id) < 16)
|
||||
{
|
||||
memcpy(param_set.param_id,id,sizeof(id));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
*/
|
||||
memcpy(param_set.param_id,id,16);
|
||||
|
||||
param_set.param_type = type;
|
||||
param_set.param_value = value;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user