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 Mike Jan 15 '19 at 18:11
  • @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. – Luza Jan 15 '19 at 18:47
  • 1
    I 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 Mike Jan 15 '19 at 18:52
  • Yeah, you're more likely to find help from the EE / programming geeks than the motorheads – mike65535 Jan 15 '19 at 19:03

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.