LabVIEW Real-Time Idea Exchange

Showing results for 
Search instead for 
Did you mean: 

CAN low level Toolkit ...

Status: New



It should be nice to create a low level CAN toolkit which could create or parse the 64 data bits of a CAN frame, without having to use the existing heavy tools. 


What i would like to see is a list of low level VI's like readBoolean, readInteger, readFloat, readSingle ... writeBoolean, writeInteger ... with direct handling of the data coding (Intel / motorola)


These VI's could read/write channels directly to the 64 data bits of the frame.


These VI's are not very difficult to build ... and everyone who has already use the frame API, without DBC or NCD has done this work before.


My need is to create an official, validated list of low level channel read/write ... without having to use the channel API or CAN engine which ar not very powerfull. 


For example :


ReadInteger ( in data,  in startBit, in integerLength, in  coding(Intel/motorola) ,  out integerValue )

ReadUInteger ( in data , in startBit, in integerLength, in  coding(Intel/motorola) ,  out UIntegerValue )


ReadFloatCodedInteger( ........ offset, gain )






When you speak with NI CAN users they all say ... NI CAN is too slow ... I think that this toolkit could help many CAN users to come back to NI CAN.


The top would be to create, using this low level API and a little bit scripting, a wizzard which could generate automaticaly the read and write VIs for selected frames of a DBC/NCD file. ( A frame = 1 read VI, One write VI and 1 cluster per frame containing the channels )

The generated result could be something like a polymorphic VI.

NI Employee (retired)



This is a LabVIEW library that can be used for this purpose:


Do you need the same functionality in C?



O. Proulx
National Instruments
Active Participant

Hello O_Proulx,


Thanks for your answer.


We are already using this toolkit ... but it is still too "high level" for a big program running on a CRio.


I would like to have access to the inner, of this toolkit ... without any frame, channel declarations, without tables, DBC and NCD.


For example I would like to be abble to read a 7 bit integer, located at position 33, in motorola mode, direct in the frame data.  

... without any previous declaration !


And for performance reasons, it would be nice if the read/write could also work on FPGA side ! (For a reduce number of channels of course)
Active Participant



the other problem of the NI toolkit ( is that it's interface is generic and not "typed". I think this is a problem for application maintenability.


I would prefer to have all the low level tools to build my frame ... (Typed VI interface)

And then above this low level tools, i would like to have a wizard which could, with help of Labview Scripting, generate automatically the complete VI's for creating or reading CAN frames. (Wizard which could use the Frame definitions loaded from DBC or NCD files).


I do use CAN since 6-7 years, with Vector interface (CanAlyser, CanOe ...), with NI tools ...


-> With Vector you can do anything(low level and high level) with very high performances, even under windows

-> With NI CAN tools, the board are not very powerfull, and the tools are too "closed"


But i like working with NI products ... for coherence purposes !


So my idea, is not to say i need this or that ... but ... Give access to all lower level tools to end users ... it will bring you customers back.

When you look at NI CAN tools ... it has been thinked too high level ... and then too few powerfull !


=> Thing in a toolkit manner ! Give the NI CAN users access to the lower level tools. (For windows, RT and FPGA)


All the NI FPGA Can users had once to build theyre low level tools ... the better solution is to give these validated tools to everyone !