<html><body><div style="color:#000; background-color:#fff; font-family:arial, helvetica, sans-serif;font-size:12pt"><div><span>Great work Mark,</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal;"><span>I wish you all the best on this project.</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal;"><span>I have wasted lots of time in the past on lots of different, but equally crappy CAN bus SW. </span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal;"><span>I've also used one of the very expensive systems and it suffers poor UX from spaghetti code/features tacked on over time.</span></div><div style="color: rgb(0, 0, 0); font-size: 16px;
 font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal;"><span>All the above have bad return on invested time and money.</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal;"><span>Your samples below have better features than even the expensive SW.</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal;">This is a great oppty for an open src project to provide some quality SW.</div><div>All the best,</div><div>Richard</div>  <div style="font-family: arial, helvetica, sans-serif; font-size: 12pt;"> <div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt;"> <div dir="ltr"> <hr size="1">  <font size="2" face="Arial"> <b><span style="font-weight:bold;">From:</span></b> Mark Webb-Johnson
 <mark@webb-johnson.net><br> <b><span style="font-weight: bold;">To:</span></b> OVMS Developers <OvmsDev@lists.teslaclub.hk> <br> <b><span style="font-weight: bold;">Sent:</span></b> Friday, July 12, 2013 12:05 AM<br> <b><span style="font-weight: bold;">Subject:</span></b> [Ovmsdev] CAN-RE-TOOL<br> </font> </div> <div class="y_msg_container"><br><div id="yiv772464636"><div><div><br></div><div>I've launched a new project on github:</div><div><br></div><div><blockquote style="margin:0 0 0 40px;border:none;padding:0px;"><a rel="nofollow" target="_blank" href="https://github.com/markwj/CAN-RE-Tool">https://github.com/markwj/CAN-RE-Tool</a></blockquote></div><div><br></div><div>Background is that I'm pissed how costly CAN-USB adaptors are. For what they are, the cost is too high and the software is terrible. If you want the good software, the hardware cost is beyond ludicrous (thousand of dollars).</div><div><br></div><div>Bill of materials for
 these things is around US$20-US$30. Street price is US$150 upwards (excluding shipping).</div><div><br></div><div>I've got a hardware design (based on PIC32 and MCP2551 chips, plus a little power regulator), and I''m working with  China factory to see if we can get these down to US$50-60 (including shipping).</div><div><br></div><div>On the software side, I've released the CAN-RE-TOOL source code. This is perl code (but with a few libraries necessary), and pretty neat. Still very much a work-in-progress, but very usable. Some notes:</div><div><br></div><div><ul class="yiv772464636MailOutline"><li>It should be cross platform - just textual curses based. But, only tested on OSX so far. Linux should be easy, but not sure about Windows.<br><br></li><li>It works with an Input-Transfrom-Output model, with optional displays. You can define the input as either a disk-based log file (CRTD format) or a CAN-USB adaptor to input from. The output can be
 discard, disk-based log, or CAN-USB adaptor to output to. The transforms take the input and perform optional transformations. At the start, the main transform is 'Uniques' - which find unique messages and keeps a history of updates to them. The input can be real-time or sped-up/slowed-down.<br><br></li><li>Various real-time displays can be called up, including Cyclic and Scrolling real-time message lists, Unique message display, and coverage (which shows just the parts of the unique messages not currently understood).<br><br></li><li>The uniques system identifies messages by a combination of CAN arbitration IDs plus optional data bytes within the message (an example being Tesla Roadster using byte #1 of ID 0x100 as a unique message).<br><br></li><li>Decoders can be defined, to produce sensors from the messages. These decoders document the protocol and message coverage.<br><br></li><li>Everything is implemented as plugins, so it is very very expandable.
 I've working on a bunch of experimental plugins to do statistical and heuristic style analysis looking for patterns in the messages captured.<br><br></li><li>Control is via mouse, keyboard commands, or scripts on disk.</li></ul></div><div><br></div><div>Here are some screens, to give you an idea of what is possible:</div><div><br></div><div>Selecting a CRTD log file as the input source:</div><div><img id="yiv77246463642e35095-b4ed-4187-820d-b39de77117e4" height="456" width="750" src="cid:1.4031809161@web181602.mail.ne1.yahoo.com"></div><div><br></div><div>Scrolling CAN message display (input is a CRTD log file being played back in real time):</div><div><img id="yiv772464636dc4bbc77-16fe-4667-9941-e099ba213629" height="456" width="750" src="cid:2.4031809161@web181602.mail.ne1.yahoo.com"></div><div><br></div><div>Uniques message display (note the decodes on the right, and message count + interval towards the left):</div><div><img
 id="yiv7724646367a5f8634-cdf2-4ce8-b2a8-60adf5e028ed" height="456" width="750" src="cid:3.4031809161@web181602.mail.ne1.yahoo.com"></div><div><br></div><div>Coverage message display (everything not '*' is unknown):</div><div><img id="yiv7724646366b309da6-ef15-41c4-9398-80d9baabe26d" height="456" width="750" src="cid:4.4031809161@web181602.mail.ne1.yahoo.com"></div><div><br></div><div>The whole point of this is to provide a system to capture messages from the can bus, work out which messages are unique for that particular car, provide a facility to decode the messages to user-readable sensors (speed, SOC, CAC, odometer, etc), and finally to allow the vehicle message documentation to be produced. It does all this today. Perl is used to make this all scriptable and extremely quick/simple to extend.</div><div><br></div><div>In future, I'm also interested in providing a facility to simulate a vehicle (we can only do that now by replaying a log file back
 out). OBDII style support work also be useful (include a PID scanner).</div><div><br></div><div>This is mostly for me, but I'm putting it out there and sharing it in case anyone else needs this.</div><div><br></div><div>Regards, Mark.</div><div><br></div></div></div><br>_______________________________________________<br>OvmsDev mailing list<br><a ymailto="mailto:OvmsDev@lists.teslaclub.hk" href="mailto:OvmsDev@lists.teslaclub.hk">OvmsDev@lists.teslaclub.hk</a><br><a href="http://lists.teslaclub.hk/mailman/listinfo/ovmsdev" target="_blank">http://lists.teslaclub.hk/mailman/listinfo/ovmsdev</a><br><br><br></div> </div> </div>  </div></body></html>