Comments (3)
Hello,
this looks like a bug that should be fixed. I suggest the implementation below, as it also scales values if the value has no label. Would be great if you can submit a PR with the fix.
Looks like DBC has the same bug, so that will be fixes as well.
Thanks.
def _encode_field(field, data, scaling):
value = data[field.name]
if isinstance(value, str):
return field.choice_string_to_number(value)
elif scaling:
if field.is_float:
return (value - field.offset) / field.scale
else:
value = (Decimal(value) - Decimal(field.offset)) / Decimal(field.scale)
return value.to_integral()
else:
return value
def _decode_field(field, value, decode_choices, scaling):
if decode_choices:
try:
return field.choices[value]
except (KeyError, TypeError):
pass
if scaling:
return (field.scale * value + field.offset)
else:
return value
from cantools.
I appreciate the suggested implementation provided for the code, I was a bit too sleepy to fully think through the fix at the time. I'm glad to see all the tests are passing now.
In regards to a PR, I assume you want me to clean up my test to match the style of your code? I will be sure to submit later today.
Thanks.
from cantools.
Yes, move the KCD definitions to a file in the tests/files folder.
from cantools.
Related Issues (20)
- Floating point rounding operations result in unexpected message encoding HOT 1
- Message._assert_signal_values_valid() uses incorrect minimum raw values for signals with negative scale
- Why does the capitalization of signal names change HOT 2
- textparser.ParseError From SYM file Mux line. HOT 2
- A 2 byte Motorola signal that is signed is decoded wrong HOT 3
- Generated SYM Enum Lines Exceed Max Length HOT 3
- Generate C code without changing message/signal name case HOT 1
- Cantools has no way to load frame of only one bus HOT 2
- In canfd, when data length > 8, dlc != len(data) in Message._check will cause an error.
- sym file parsing cannot handle small number scientific notation. HOT 1
- SPN signal attribute don't use the default value
- Monitor doesn't work on Windows 11 HOT 2
- data export HOT 1
- Frame IDs collisions between extended format frames can and standard format frames HOT 1
- Exporting a dbc file with Chinese comments will result in garbled text for the Chinese parts. HOT 1
- Cannot clear TX Buffer of CAN HOT 1
- EncodeError: signal required for encoding when passing a partial dictionnary to Message.encode() HOT 3
- Extract Request and Response CAN IDs from CDD File HOT 2
- For Autosar classic platform release R4.2.0 and R4.2.1, I am not getting the schema version of it. Can anyone help? HOT 1
- CAN signal start bit cannot match the CAN OE
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cantools.