I am looking to write an application in C# and use both ARM based computers and x86 based computers. My question here is when using a J1939 to DB9 cable, do I need a specialized interface for the CAN bus protocol or would a serial port connection suffice?
-
Lots of posts about CAN bus on here? have you looked at any? Seems so similar to an earlier question...– Solar MikeJan 15, 2019 at 18:11
-
see mechanics.stackexchange.com/q/17634/10976– Solar MikeJan 15, 2019 at 18:17
-
@SolarMike does not answer my question in terms of actually interfacing with the CAN bus. Yeah there are a lot of posts mentioning CAN bus but do not answer my specific question.– LuzaJan 15, 2019 at 18:47
-
1I just wonder how many mechanics will also be C# programmers who have spent the time doing what you want to do... Many mechs will be using the readers etc to tune cars etc, but perhaps you are on the wrong stack... Perhaps you should think about other stacks involving programming or ARM processors etc...– Solar MikeJan 15, 2019 at 18:52
-
Yeah, you're more likely to find help from the EE / programming geeks than the motorheads– mike65535Jan 15, 2019 at 19:03
2 Answers
There is a standard for SubD9 connectors being used for CAN by almost any CAN device outside the automotive world. The pinout is:
1: N/C
2: CAN Low
3: Ground
4: N/C
5: Shield
6: Ground (Optional)
7: CAN High
8: N/C
9: Optional voltage to supply small devices
As you see, this isn't RS232, and for sure, your cable is nothing more than an adaptor between both connector types.
You DO need a CAN interface. Most commonly are USB CAN interfaces, but there are also serial CAN interfaces, or even driver ICs, which might be suitable for ARM based systems.
I suggest you google MCP2515 CAN Module.
You will find an interface module which "translates" CAN bus signals to Serial.
And you will find programming examples. I founds several for Arduino.