Try to Fix read errors.
This commit is contained in:
@@ -185,17 +185,74 @@ void BCDriverTinyCan::resetDriver()
|
|||||||
TransmitResult BCDriverTinyCan::readRawByte( uint32_t deviceID, uint8_t registerID ) const
|
TransmitResult BCDriverTinyCan::readRawByte( uint32_t deviceID, uint8_t registerID ) const
|
||||||
{
|
{
|
||||||
|
|
||||||
|
qDebug() << " --- CAN Read Byte: Device: "<< deviceID << " register: " << registerID << " TRY! ";
|
||||||
|
|
||||||
|
struct TCanMsg msg;
|
||||||
|
int err, retry = 20;
|
||||||
|
int timeout = 80;
|
||||||
|
|
||||||
|
unsigned char receipient = (unsigned char) deviceID;
|
||||||
|
unsigned char reg = (unsigned char) registerID;
|
||||||
|
|
||||||
|
msg.MsgFlags = 0L;
|
||||||
|
msg.Id = receipient;
|
||||||
|
msg.MsgLen = 2;
|
||||||
|
msg.MsgData[0] = 0x00;
|
||||||
|
msg.MsgData[1] = reg;
|
||||||
|
|
||||||
|
CanTransmit(0, &msg, 1);
|
||||||
|
|
||||||
|
while(timeout-- && CanTransmitGetCount(0))
|
||||||
|
bc::delay_millis( cTIMEOUT_MS );
|
||||||
|
|
||||||
|
if (timeout == -1)
|
||||||
|
qDebug() << "error: could not send value to node ";
|
||||||
|
|
||||||
|
retry:
|
||||||
|
|
||||||
|
timeout = 80;
|
||||||
|
while(timeout-- && !CanReceiveGetCount(0))
|
||||||
|
bc::delay_millis( cTIMEOUT_MS );
|
||||||
|
|
||||||
|
if (timeout == -1)
|
||||||
|
{
|
||||||
|
qDebug() << "error: no response from node";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((err = CanReceive(0, &msg, 1)) > 0)
|
||||||
|
{
|
||||||
|
if (--retry && (msg.Id != BIB || msg.MsgLen != 4 || msg.MsgData[1] != reg))
|
||||||
|
goto retry;
|
||||||
|
|
||||||
|
if (!retry)
|
||||||
|
{
|
||||||
|
qDebug() << "XXX error: no response from node";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
qDebug() << " --- CAN Read Byte: Device: "<< deviceID << " register: " << registerID << " BYTE: " << (uint32_t) msg.MsgData[3];
|
||||||
|
return (unsigned int) msg.MsgData[3];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
qDebug() << "Error:" <<err;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/*
|
||||||
//TransmitResult
|
//TransmitResult
|
||||||
qDebug() << " --- BCDriverTinyCan::readRawByte DriverState: " << getDriverState();
|
qDebug() << " --- BCDriverTinyCan::readRawByte DriverState: " << getDriverState();
|
||||||
|
|
||||||
if( _driverState <DriverState::Opened )
|
if( _driverState <DriverState::Opened )
|
||||||
return std::unexpected(QString("readRawValue error: driver not loaded." ) );
|
return std::unexpected(QString("readRawValue error: driver not loaded." ) );
|
||||||
|
|
||||||
|
unsigned char receipient = (unsigned char ) deviceID;
|
||||||
::TCanMsg msg;
|
::TCanMsg msg;
|
||||||
|
|
||||||
// msg verpacken
|
// msg verpacken
|
||||||
msg.MsgFlags = 0L;
|
msg.MsgFlags = 0L;
|
||||||
msg.Id = deviceID;
|
msg.Id = receipient;//deviceID;
|
||||||
msg.MsgLen = 2;
|
msg.MsgLen = 2;
|
||||||
msg.MsgData[0] = 0x00;
|
msg.MsgData[0] = 0x00;
|
||||||
msg.MsgData[1] = registerID;
|
msg.MsgData[1] = registerID;
|
||||||
@@ -244,8 +301,9 @@ retry:
|
|||||||
if( !timeOuts )
|
if( !timeOuts )
|
||||||
return std::unexpected(QString("CAN response errror: timeout" ));
|
return std::unexpected(QString("CAN response errror: timeout" ));
|
||||||
|
|
||||||
|
qDebug() << " --- CAN Read Byte: " << (uint32_t) msg.MsgData[3] << " Device:: "<< deviceID << " register: " << registerID;
|
||||||
return (uint32_t) msg.MsgData[3];
|
return (uint32_t) msg.MsgData[3];
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -261,6 +319,7 @@ TransmitResult BCDriverTinyCan::writeRawByte( uint32_t deviceID, uint8_t registe
|
|||||||
::TCanMsg msg;
|
::TCanMsg msg;
|
||||||
int timeout_count = cTIMEOUT_COUNT;
|
int timeout_count = cTIMEOUT_COUNT;
|
||||||
|
|
||||||
|
|
||||||
msg.MsgFlags = 0L;
|
msg.MsgFlags = 0L;
|
||||||
msg.Id = deviceID;
|
msg.Id = deviceID;
|
||||||
msg.MsgLen = 4;
|
msg.MsgLen = 4;
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ void BCTransmitter::processValue()
|
|||||||
|
|
||||||
TransmitResult BCTransmitter::readByteValue( uint32_t deviceID, uint8_t registerID )
|
TransmitResult BCTransmitter::readByteValue( uint32_t deviceID, uint8_t registerID )
|
||||||
{
|
{
|
||||||
qDebug() << " --- YES: Read ByteValue: " << registerID;
|
//qDebug() << " --- YES: Read ByteValue: " << registerID;
|
||||||
// Wir lesen nur ein Byte und gut.
|
// Wir lesen nur ein Byte und gut.
|
||||||
return _canDriver->readRawByte( deviceID, registerID );
|
return _canDriver->readRawByte( deviceID, registerID );
|
||||||
}
|
}
|
||||||
@@ -212,7 +212,7 @@ TransmitResult BCTransmitter::readByteValue( uint32_t deviceID, uint8_t register
|
|||||||
|
|
||||||
TransmitResult BCTransmitter::readWordValue( uint32_t deviceID, uint8_t registerID )
|
TransmitResult BCTransmitter::readWordValue( uint32_t deviceID, uint8_t registerID )
|
||||||
{
|
{
|
||||||
qDebug() << " --- YES: Read WordValue: " << registerID;
|
//qDebug() << " --- YES: Read WordValue: " << registerID;
|
||||||
|
|
||||||
uint32_t result{};
|
uint32_t result{};
|
||||||
// hi byte Leseversuch.
|
// hi byte Leseversuch.
|
||||||
|
|||||||
@@ -88,9 +88,9 @@ void BCValueModel::onValueUpdated( int row, BCValue::State state, const QString&
|
|||||||
BCValue& value = *(_valueList[row].get());
|
BCValue& value = *(_valueList[row].get());
|
||||||
QModelIndex idx = index(row,1);
|
QModelIndex idx = index(row,1);
|
||||||
|
|
||||||
qDebug();
|
//qDebug();
|
||||||
qDebug() << " --- OLD:";
|
//qDebug() << " --- OLD:"<< newVisisbleValue;
|
||||||
value.dumpValue();
|
//value.dumpValue();
|
||||||
|
|
||||||
value.state = state;
|
value.state = state;
|
||||||
|
|
||||||
@@ -99,8 +99,8 @@ void BCValueModel::onValueUpdated( int row, BCValue::State state, const QString&
|
|||||||
value.visibleValue = newVisisbleValue;
|
value.visibleValue = newVisisbleValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
qDebug() << " NEW: " << newVisisbleValue << "";
|
//qDebug() << " --- NEW: " << newVisisbleValue;
|
||||||
value.dumpValue();
|
//value.dumpValue();
|
||||||
|
|
||||||
// wir schicken auf jeden fall einen update request
|
// wir schicken auf jeden fall einen update request
|
||||||
emit dataChanged(idx, idx, {Qt::DisplayRole, Qt::EditRole});
|
emit dataChanged(idx, idx, {Qt::DisplayRole, Qt::EditRole});
|
||||||
|
|||||||
@@ -1,24 +1,18 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
|
||||||
<!--
|
|
||||||
QString ID;
|
|
||||||
QString Label;
|
|
||||||
QString UnitLabel;
|
|
||||||
QString Factor;
|
|
||||||
QString Min;
|
|
||||||
QString Max;
|
|
||||||
QString IsWord;
|
|
||||||
QString ValueType;
|
|
||||||
-->
|
|
||||||
<Bike name='franken-wheeler'>
|
<Bike name='franken-wheeler'>
|
||||||
|
|
||||||
<Device Type="Console">
|
<Device Type="Console">
|
||||||
<Value ID='Cons_Rev_Hw' Label='Hardware Version' />
|
<Value ID='Cons_Rev_Hw' Label='Hardware Version' />
|
||||||
<Value ID='Cons_Rev_Sw' Label='Software Version' />
|
<Value ID='Cons_Rev_Sw' Label='Software Version' />
|
||||||
|
</Device>
|
||||||
|
<!--
|
||||||
<Value ID='Cons_Sn_Product_Hi' Label='Product Number' IsWord='1'/>
|
<Value ID='Cons_Sn_Product_Hi' Label='Product Number' IsWord='1'/>
|
||||||
<Value ID='Cons_Sn_Oem_Hi' Label='OEM Number' IsWord='1' />
|
<Value ID='Cons_Sn_Oem_Hi' Label='OEM Number' IsWord='1' />
|
||||||
|
|
||||||
<Value ID='Cons_Assist_Initlevel' Label='Assistance Init Level' Min='0' Max='4'/>
|
<Value ID='Cons_Assist_Initlevel' Label='Assistance Init Level' Min='0' Max='4'/>
|
||||||
|
|
||||||
|
|
||||||
<Value ID='Cons_Assist_Level_1' Label='Assistance Level 1' Factor='1.5625' UnitLabel='%' Min='0' Max='400' />
|
<Value ID='Cons_Assist_Level_1' Label='Assistance Level 1' Factor='1.5625' UnitLabel='%' Min='0' Max='400' />
|
||||||
<Value ID='Cons_Assist_Level_2' Label='Assistance Level 2' Factor='1.5625' UnitLabel='%' Min='0' Max='400' />
|
<Value ID='Cons_Assist_Level_2' Label='Assistance Level 2' Factor='1.5625' UnitLabel='%' Min='0' Max='400' />
|
||||||
<Value ID='Cons_Assist_Level_3' Label='Assistance Level 3' Factor='1.5625' UnitLabel='%' Min='0' Max='400' />
|
<Value ID='Cons_Assist_Level_3' Label='Assistance Level 3' Factor='1.5625' UnitLabel='%' Min='0' Max='400' />
|
||||||
@@ -52,7 +46,7 @@ QString ValueType;
|
|||||||
<Value ID='Battery_Rev_Hw' Label='Hardware Version' />
|
<Value ID='Battery_Rev_Hw' Label='Hardware Version' />
|
||||||
<Value ID='Battery_Rev_Sw' Label='Software Version' />
|
<Value ID='Battery_Rev_Sw' Label='Software Version' />
|
||||||
</Device>
|
</Device>
|
||||||
|
-->
|
||||||
</Bike>
|
</Bike>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
|||||||
Reference in New Issue
Block a user