FlashScan's RS232 interface is designed for use with:
- dedicated Dyno Control computers (usually desktop based PCs with real UART ports)
- wide band controllers
- other embedded systems
Most of those devices that are intended for use with the RS232 data stream only have RS232 available, they do not have access to USB.
We may support a high speed CAN based PID interface in future.
If your programming skills extend to handling memory mapped files and semaphores, you could hook directly into EFILive's Scan/Tune interface. Then you can grab the PID data directly from the Scan Tool's memory image as often as you like.
Let me know if you're interested in implementing something like that and I'll send you the specifications.
Just for your info, here's the shared memory layout (Delphi code) for getting PID data from the Scan Tool
Code:
PARM_LEN = 32;
UNITS_LEN = 32;
MAX_SHMEM_FRAMES = 100; // Maximum number of frames in shared memory
TShmemParm = record
Name: array[0..PARM_LEN-1] of char;
value: double;
units: array[0..UNITS_LEN-1] of char;
end;
TShmemFrame = record
pidCount: integer;
age: integer;
notes: Cardinal;
parm: array[0..MAX_PIDS-1] of TShmemParm;
end;
TShmemArray = record
vinScan: array[0..17] of char;
vinDirty: boolean;
pidListDirty: boolean;
cnxTune: boolean;
cnxScan: boolean;
newData: boolean;
newRealtime: boolean;
dirty: boolean;
firstFrame: integer;
frameCount: integer;
frame: array[0..MAX_SHMEM_FRAMES-1] of TShmemFrame;
end;
If in the Scan Tool, you're scanning real-time data then only frame[0] contains valid data and frameCount will be 1.
If you're viewing previously recorded data, then frames[0..99] contain the first 100 frames of selected data and frameCount will be the MIN(100,number of frames selected by user).
Note:
Cardinal is a 'C' unsigned long
boolean is a 'C' unsigned char
integer is a 'C' int
double is a 'C' double
char is a 'C' char
record is a 'C' struct
array[0..x-1] is a 'C' array[x]
Regards
Paul