我正试图通过像Usb2Can这样的产品直接挂上汽车的CAN总线 . 这基本上假定直接连接到CanHigh和CanLow引脚(OBD2端口的引脚#6和#14),并处理CAN总线消息,例如具有11位ID和8字节数据 . 我打算为此使用SocketCan和can-utils .
我无法弄清楚的是 - 我怎么能在CAN总线上“说”OBD2协议 . 即我想嗅/听/发送“原始”CAN消息但我也希望保留能力,例如读取诊断代码(Pxxxx),清除检查灯等,就像Elm327适配器一样 . 那些售价低于20美元的适配器提供串行通信,但我认为它们只是抽象掉低级CAN消息 .
维基百科文章提到OBD2通信协议中有10种操作模式 . 但我无法找到有关如何使用CAN总线和SocketCan实现所有这些的更多细节 . 也许有些图书馆已存在?
请指出方向,但不是那些含有神秘语言且需要数周才能理解的“官方标准文档” .
简单地说:我如何能够连接到CAN总线(一般是OBD2端口)并同时具有BOTH功能:发送/接收原始CAN消息,以及“说”更高级别的OBD2通信协议,类似于Elm327 usb-to -obd2电缆提供 .