Там не принцип, а интерфейс. Интерфейс не является проблемой. Т.е. он собственно идет с девайсом. Проблема в том, что информация CAN-шины представляет из себя множество значений разных переменных. Грубо говоря, получая информацию с CAN-шины вы узнаете, что переменная L1 в данный момент имеет значение 32. Но вы понятия не имеете что это за переменная. Хорошо, допустим случилось чудо и вы узнали, что L1 это показание датчика температуры. Тогда остается интерпретировать значение 32, т.к. это совершенно не обязательно означает температуру в цельсиях. Значение мгновенного расхода топлива, например, вообще отсутствует как переменная, а вычисляется из нескольких переменных. А таких переменных в сети блуждает тысячи. Следовательно, чтобы программист мог что-то сделать, нужно дать ему расшифровку переменных, которые может предоставить только производитель. Или, как вариант трудного пути, нужно на машине провоцировать изменение интересующего параметра и смотреть, какая переменная при этом меняется. Я понятно излагаю?