It would be very handy to have the CAN Monitor be able to record to a file, with time stamps for each entry. Right now, I have to hook up a separate CAN analyzer tool, run its own separate software, to record a file, so that I can look for items in the data. If RealDash can already show the data live, it would seem to be a small leap to give an option record the data as it comes in. Use system time to build a time stamp on each line or entry. Is this a possibility?
Recording to a csv text file could be done (without playback option). Give an example of what the content of the file should look like.
Maybe something like this?
time, id, b1, b2,, b3, b4, b5, b6, b7, b8
6.1.2021, 12:31:26.365, 0x1234, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
6.1.2021, 12:31:26.465, 0x1235, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
6.1.2021, 12:31:26.565, 0x1236, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
...
id b1 b2 b3 b4 b5 b6 b7 b8 count time
Without “,”, since they interfere with the perception of information, only spaces and a timer with a date at the end of the line and not at the beginning!
Edit:
If id = 11 Bit, the zeros outside the transition “x” can be reduced …
0х453
It would not be easily readable in for example excel, as it is not a csv (comma separated values).
Yes, exactly! A CSV is my preferred output, as it imports into other software easily. Here is an example output from CANalyst II software, including a header it outputs:
Index System Time Time Stamp Channel Direction Frame ID Type Format DLC Data
0 20:51:46.779 0x575960 ch2 Receive 0x0410 Data Standard 0x04 x| 00 0D FF FF
1 20:51:46.779 0x57597E ch2 Receive 0x0312 Data Standard 0x08 x| 07 04 09 CA 09 CA 09 24
2 20:51:46.779 0x575980 ch2 Receive 0x0308 Data Standard 0x08 x| 00 00 00 02 00 51 BB 3F
3 20:51:46.779 0x575983 ch2 Receive 0x0210 Data Standard 0x08 x| 02 00 00 00 40 00 82 00
4 20:51:46.779 0x575985 ch2 Receive 0x0212 Data Standard 0x08 x| 03 F3 49 24 69 24 A9 24
5 20:51:46.779 0x57598E ch2 Receive 0x0230 Data Standard 0x01 x| 08
6 20:51:46.808 0x5759BF ch2 Receive 0x0338 Data Standard 0x08 x| FF FF 1F FF FF FF FF FF
7 20:51:46.808 0x5759C1 ch2 Receive 0x0218 Data Standard 0x08 x| 80 00 DD 48 23 80 3E 72
8 20:51:46.808 0x5759C4 ch2 Receive 0x0418 Data Standard 0x08 x| 50 53 63 04 DD 00 C0 00
9 20:51:46.808 0x5759E2 ch2 Receive 0x0312 Data Standard 0x08 x| 07 04 09 CA 09 CA 09 24
10 20:51:46.808 0x5759E5 ch2 Receive 0x0308 Data Standard 0x08 x| 00 00 00 02 00 51 BB 3F
11 20:51:46.808 0x5759EE ch2 Receive 0x0200 Data Standard 0x08 x| 00 74 00 00 00 00 00 00
12 20:51:46.808 0x5759F1 ch2 Receive 0x0208 Data Standard 0x08 x| 00 20 00 00 00 00 00 00
13 20:51:46.808 0x5759F4 ch2 Receive 0x0300 Data Standard 0x08 x| 02 10 00 00 00 00 80 05
14 20:51:46.808 0x5759F6 ch2 Receive 0x0328 Data Standard 0x08 x| FF FF 7D 03 00 FF 00 00
15 20:51:46.808 0x5759F7 ch2 Receive 0x0230 Data Standard 0x01 x| 08
16 20:51:46.808 0x5759FA ch2 Receive 0x0238 Data Standard 0x08 x| 00 00 78 0F 00 00 00 00
17 20:51:46.808 0x575A29 ch2 Receive 0x0410 Data Standard 0x04 x| 00 0D FF FF
18 20:51:46.808 0x575A46 ch2 Receive 0x0312 Data Standard 0x08 x| 07 04 09 CA 09 CA 09 24
19 20:51:46.808 0x575A48 ch2 Receive 0x0308 Data Standard 0x08 x| 00 00 00 02 00 51 BB 3F
20 20:51:46.808 0x575A4B ch2 Receive 0x0210 Data Standard 0x08 x| 02 00 00 00 40 00 82 00
21 20:51:46.808 0x575A4D ch2 Receive 0x0212 Data Standard 0x08 x| 03 F3 49 24 69 24 A9 24
22 20:51:46.808 0x575A5D ch2 Receive 0x0230 Data Standard 0x01 x| 08
23 20:51:46.808 0x575A87 ch2 Receive 0x0338 Data Standard 0x08 x| FF FF 1F FF FF FF FF FF
24 20:51:46.808 0x575A89 ch2 Receive 0x0218 Data Standard 0x08 x| 00 00 DD 48 23 00 D4 73
25 20:51:46.808 0x575A8C ch2 Receive 0x0418 Data Standard 0x08 x| 50 53 63 04 DD 00 00 00
26 20:51:46.808 0x575AAB ch2 Receive 0x0312 Data Standard 0x08 x| 07 04 09 CA 09 CA 09 24
27 20:51:46.808 0x575AAD ch2 Receive 0x0308 Data Standard 0x08 x| 00 00 00 02 00 51 BB 3F
28 20:51:46.808 0x575AC4 ch2 Receive 0x0230 Data Standard 0x01 x| 08
29 20:51:46.808 0x575AD7 ch2 Receive 0x0200 Data Standard 0x08 x| 00 78 00 00 00 00 00 00
30 20:51:46.839 0x575AD9 ch2 Receive 0x0208 Data Standard 0x08 x| 00 20 00 00 00 00 00 00
31 20:51:46.839 0x575ADC ch2 Receive 0x0300 Data Standard 0x08 x| 02 10 00 00 00 00 80 05
32 20:51:46.839 0x575ADE ch2 Receive 0x0328 Data Standard 0x08 x| FF FF 7D 03 00 FF 00 00
33 20:51:46.839 0x575AE0 ch2 Receive 0x0238 Data Standard 0x08 x| 00 00 78 0F 00 00 00 00
34 20:51:46.839 0x575AF1 ch2 Receive 0x0410 Data Standard 0x04 x| 00 0D FF FF
35 20:51:46.839 0x575B0E ch2 Receive 0x0312 Data Standard 0x08 x| 07 04 09 CA 09 CA 09 24
36 20:51:46.839 0x575B10 ch2 Receive 0x0608 Data Standard 0x08 x| 59 53 A5 08 FA 00 00 FF
37 20:51:46.839 0x575B12 ch2 Receive 0x0308 Data Standard 0x08 x| 00 00 00 02 00 51 BB 3F
38 20:51:46.839 0x575B15 ch2 Receive 0x0210 Data Standard 0x08 x| 02 00 00 00 40 00 82 00
39 20:51:46.839 0x575B17 ch2 Receive 0x0212 Data Standard 0x08 x| 03 F3 49 24 69 24 A9 24
40 20:51:46.839 0x575B18 ch2 Receive 0x0230 Data Standard 0x01 x| 08
41 20:51:46.839 0x575B1B ch2 Receive 0x0580 Data Standard 0x08 x| 64 64 64 FF 96 00 00 00
42 20:51:46.839 0x575B52 ch2 Receive 0x0338 Data Standard 0x08 x| FF FF 1F FF FF FF FF FF
43 20:51:46.839 0x575B54 ch2 Receive 0x0218 Data Standard 0x08 x| 00 00 DD 48 23 00 00 60
44 20:51:46.839 0x575B57 ch2 Receive 0x0418 Data Standard 0x08 x| 50 53 63 04 DD 00 00 00
45 20:51:46.839 0x575B73 ch2 Receive 0x0312 Data Standard 0x08 x| 07 04 09 CA 09 CA 09 24
46 20:51:46.839 0x575B75 ch2 Receive 0x0308 Data Standard 0x08 x| 00 00 00 02 00 51 BB 3F
47 20:51:46.839 0x575B79 ch2 Receive 0x0230 Data Standard 0x01 x| 08
48 20:51:46.839 0x575BBA ch2 Receive 0x0410 Data Standard 0x04 x| 00 0D FF FF
49 20:51:46.839 0x575BBF ch2 Receive 0x0200 Data Standard 0x08 x| 00 3C 00 00 00 00 00 00
50 20:51:46.839 0x575BC1 ch2 Receive 0x0208 Data Standard 0x08 x| 00 20 00 00 00 00 00 00
51 20:51:46.839 0x575BC4 ch2 Receive 0x0300 Data Standard 0x08 x| 82 90 80 00 80 00 80 08
52 20:51:46.839 0x575BC6 ch2 Receive 0x0328 Data Standard 0x08 x| FF FF 7D 03 00 FF 00 00
53 20:51:46.839 0x575BC9 ch2 Receive 0x0238 Data Standard 0x08 x| 00 00 78 0F 00 00 00 00
54 20:51:46.839 0x575BD6 ch2 Receive 0x0312 Data Standard 0x08 x| 07 04 09 CA 09 CA 09 24
55 20:51:46.839 0x575BD8 ch2 Receive 0x0308 Data Standard 0x08 x| 00 00 00 02 00 51 BB 3F
56 20:51:46.839 0x575BDA ch2 Receive 0x0210 Data Standard 0x08 x| 02 00 00 00 40 00 82 00
57 20:51:46.839 0x575BDD ch2 Receive 0x0212 Data Standard 0x08 x| 03 F3 49 24 69 24 A9 24
58 20:51:46.839 0x575BE2 ch2 Receive 0x0230 Data Standard 0x01 x| 08
59 20:51:46.839 0x575BE5 ch2 Receive 0x0631 Data Standard 0x08 x| FE 00 A4 03 00 00 00 00
60 20:51:46.869 0x575C19 ch2 Receive 0x0338 Data Standard 0x08 x| FF FF 1F FF FF FF FF FF
61 20:51:46.869 0x575C1C ch2 Receive 0x0218 Data Standard 0x08 x| 80 00 DD 48 23 80 00 21
62 20:51:46.869 0x575C1E ch2 Receive 0x0418 Data Standard 0x08 x| 50 53 63 04 DD 00 C0 00
63 20:51:46.869 0x575C3A ch2 Receive 0x0312 Data Standard 0x08 x| 07 04 09 CA 09 CA 09 24
64 20:51:46.869 0x575C3D ch2 Receive 0x0308 Data Standard 0x08 x| 00 00 00 02 00 51 BB 3F
65 20:51:46.869 0x575C49 ch2 Receive 0x0230 Data Standard 0x01 x| 08
66 20:51:46.869 0x575C83 ch2 Receive 0x0410 Data Standard 0x04 x| 00 0D FF FF
67 20:51:46.869 0x575C9D ch2 Receive 0x0312 Data Standard 0x08 x| 07 04 09 CA 09 CA 09 24
68 20:51:46.869 0x575CA0 ch2 Receive 0x0308 Data Standard 0x08 x| 00 00 00 02 00 51 BB 3F
69 20:51:46.869 0x575CA2 ch2 Receive 0x0210 Data Standard 0x08 x| 02 00 00 00 40 00 82 00
70 20:51:46.869 0x575CA5 ch2 Receive 0x0212 Data Standard 0x08 x| 03 F3 49 24 69 24 A9 24
71 20:51:46.869 0x575CA7 ch2 Receive 0x0200 Data Standard 0x08 x| 00 00 00 00 00 00 00 00
72 20:51:46.869 0x575CAA ch2 Receive 0x0208 Data Standard 0x08 x| 00 20 00 00 00 00 00 00
73 20:51:46.869 0x575CAC ch2 Receive 0x0300 Data Standard 0x08 x| 82 90 80 00 80 00 80 05
74 20:51:46.869 0x575CAF ch2 Receive 0x0328 Data Standard 0x08 x| FF FF 7D 03 00 FF 00 00
75 20:51:46.869 0x575CB1 ch2 Receive 0x0238 Data Standard 0x08 x| 00 00 78 0F 00 00 00 00
76 20:51:46.869 0x575CB3 ch2 Receive 0x0408 Data Standard 0x08 x| FF 3A 87 00 2D 78 9A FF
77 20:51:46.869 0x575CB5 ch2 Receive 0x0230 Data Standard 0x01 x| 08
78 20:51:46.869 0x575CDE ch2 Receive 0x0338 Data Standard 0x08 x| FF FF 1F FF FF FF FF FF
79 20:51:46.869 0x575CE1 ch2 Receive 0x0218 Data Standard 0x08 x| 80 00 DD 48 23 80 00 22
80 20:51:46.869 0x575CE3 ch2 Receive 0x0418 Data Standard 0x08 x| 50 53 63 04 DD 00 C0 00
81 20:51:46.869 0x575D02 ch2 Receive 0x0312 Data Standard 0x08 x| 07 04 09 CA 09 CA 09 24
82 20:51:46.869 0x575D05 ch2 Receive 0x0308 Data Standard 0x08 x| 00 00 00 02 00 51 BB 3F
83 20:51:46.869 0x575D16 ch2 Receive 0x0230 Data Standard 0x01 x| 08
84 20:51:46.899 0x575D4C ch2 Receive 0x0410 Data Standard 0x04 x| 00 0D FF FF
85 20:51:46.899 0x575D65 ch2 Receive 0x0312 Data Standard 0x08 x| 07 04 09 CA 09 CA 09 24
86 20:51:46.899 0x575D68 ch2 Receive 0x0308 Data Standard 0x08 x| 00 00 00 02 00 51 BB 3F
87 20:51:46.899 0x575D6A ch2 Receive 0x0210 Data Standard 0x08 x| 02 00 00 00 40 00 82 00
88 20:51:46.899 0x575D6C ch2 Receive 0x0212 Data Standard 0x08 x| 03 F3 49 24 69 24 A9 24
89 20:51:46.899 0x575D7D ch2 Receive 0x0230 Data Standard 0x01 x| 08
90 20:51:46.899 0x575D8F ch2 Receive 0x0200 Data Standard 0x08 x| 00 44 00 00 00 00 00 00
91 20:51:46.899 0x575D91 ch2 Receive 0x0208 Data Standard 0x08 x| 00 20 00 00 00 00 00 00
92 20:51:46.899 0x575D94 ch2 Receive 0x0300 Data Standard 0x08 x| 02 10 00 00 00 00 80 02
93 20:51:46.899 0x575D96 ch2 Receive 0x0328 Data Standard 0x08 x| FF FF 7D 03 00 FF 00 00
94 20:51:46.899 0x575D99 ch2 Receive 0x0238 Data Standard 0x08 x| 00 00 78 0F 00 00 00 00
95 20:51:46.899 0x575DA9 ch2 Receive 0x0338 Data Standard 0x08 x| FF FF 1F FF FF FF FF FF
96 20:51:46.899 0x575DAC ch2 Receive 0x0218 Data Standard 0x08 x| 00 00 DD 48 23 00 00 63
97 20:51:46.899 0x575DAE ch2 Receive 0x0418 Data Standard 0x08 x| 50 53 63 04 DD 00 00 00
98 20:51:46.899 0x575DCA ch2 Receive 0x0312 Data Standard 0x08 x| 07 04 09 CA 09 CA 09 24
99 20:51:46.899 0x575DCD ch2 Receive 0x0308 Data Standard 0x08 x| 00 00 00 02 00 51 BB 3F
100 20:51:46.899 0x575DD1 ch2 Receive 0x0230 Data Standard 0x01 x| 08
101 20:51:46.899 0x575E15 ch2 Receive 0x0410 Data Standard 0x04 x| 00 0D FF FF
102 20:51:46.899 0x575E2D ch2 Receive 0x0312 Data Standard 0x08 x| 07 04 09 CA 09 CA 09 24
103 20:51:46.899 0x575E30 ch2 Receive 0x0308 Data Standard 0x08 x| 00 00 00 02 00 51 BB 3F
104 20:51:46.899 0x575E32 ch2 Receive 0x0210 Data Standard 0x08 x| 02 00 00 00 40 00 82 00
105 20:51:46.899 0x575E34 ch2 Receive 0x0212 Data Standard 0x08 x| 03 F3 49 24 69 24 A9 24
106 20:51:46.899 0x575E36 ch2 Receive 0x0230 Data Standard 0x01 x| 08
107 20:51:46.928 0x575E6E ch2 Receive 0x0338 Data Standard 0x08 x| FF FF 1F FF FF FF FF FF
108 20:51:46.928 0x575E71 ch2 Receive 0x0218 Data Standard 0x08 x| 00 00 DD 48 23 00 00 24
109 20:51:46.928 0x575E73 ch2 Receive 0x0418 Data Standard 0x08 x| 50 53 63 04 DD 00 00 00
110 20:51:46.928 0x575E77 ch2 Receive 0x0200 Data Standard 0x08 x| 00 48 00 00 00 00 00 00
111 20:51:46.928 0x575E79 ch2 Receive 0x0208 Data Standard 0x08 x| 00 20 00 00 00 00 00 00
112 20:51:46.928 0x575E7C ch2 Receive 0x0300 Data Standard 0x08 x| 02 10 00 00 00 00 7F FF
113 20:51:46.928 0x575E7E ch2 Receive 0x0328 Data Standard 0x08 x| FF FF 7D 03 00 FF 00 00
114 20:51:46.928 0x575E81 ch2 Receive 0x0238 Data Standard 0x08 x| 00 00 78 0F 00 00 00 00
115 20:51:46.928 0x575E92 ch2 Receive 0x0312 Data Standard 0x08 x| 07 04 09 CA 09 CA 09 24
116 20:51:46.928 0x575E94 ch2 Receive 0x0308 Data Standard 0x08 x| 00 00 00 02 00 51 BB 3F
As you can see, it stamps down to milliseconds, and I think we would need the same here, to keep the packets straight. These packets came in at 500k. The device is a two channel device, so it has a column indicating which channel, and it can also transmit, so it is showing that the packet is something received. So, obviously that begs a follow on request to make the CAN monitor capable of sending a message, as it would round out the whole thing into a very robust tool, at that point.
BTW, CANalyst outputs CSV files.
Could you upload here a short example of CANalyst csv file?
Attached.
Short 500k Dump.csv (53.6 KB)
Thanks. I will follow this same format and develop a prototype. It will take some time, as for performance reasons, the file rows must be stored in ram and streamed to a file on separate thread.
Sounds good, thank you!
I do have a working prototype now. Only downside is that files will grow quite large on fast connections (~500kb per minute).
Do you think that all columns are required in CSV file? For example the Time Stamp, as I’m not sure what it is used for as you have system time to a millisecond right before it. There also others, like Type, as RealDash CAN monitor will only receive the data frames anyways.
If there is a specific tool that you want to use that requires all those rows, I will keep them in. Otherwise I think its better to leave them out as each row will just duplicate the same data in log file.
I agree with you. Eliminate the columns that are not in use. The one column on channels is the only one I am not sure of for RD. Does RD support multiple CAN input channels? If so, then identifying which channel the data came in from would be obviously useful.
For reference, I use the multiple channels when trying to identify messages sent from one device to the other. For instance, if I wanted to see how a scan tool communicated with the ECU, I would put the CANalyst in series with the tool and the ECU, allowing the CANalyst to operate in a “bridge” mode, passing messages seamlessly across it. The Scan Tool will be hooked up to the physical connections for Channel 1, and the ECU will be hooked up to Channel 2. As it records data, it will tag the packets from the scan tool as being on Channel 1, and the responses from the ECU on Channel 2. In this way, you can analyze the data and plainly see what messages are coming from where. Very useful!
However, I understand if that is beyond the context of RD. If it is, then eliminating the Channel column also makes sense, further condensing the file size.
I will remove the unsupported columns and upload a beta later today.
Awesome! Thank you for being so responsive to this request!
This is now in 1.8.7-BETA1:
http://realdash.net/forum/viewtopic.php?f=2&t=1122&sid=035582737a8ee22674290f076bab1502