EvoScan v2.6 And New EvoScan GPS/Logger/Reflashing Touchscreen Review
#1096
Evolved Member
iTrader: (3)
usb splitter
Logruss, Can you or anyone else confirm that the splitter is working, and you are logging WB? I have tried 3 already from Frys, and have a real old ticket in the support system that I keep responding to, but doesn't look like that's working.
(GN4ZYBU4DQ)
I want to make sure, if I can, which USB splitter is working for the LC1 from someone already successfully using it. So far 3 for 3 with different errors.
Thanks
M
(GN4ZYBU4DQ)
I want to make sure, if I can, which USB splitter is working for the LC1 from someone already successfully using it. So far 3 for 3 with different errors.
Thanks
M
#1097
Evolving Member
iTrader: (1)
Hamish, any how-to or guide or something that I'm missing on how to do Map Tracing for the Evo X? I'd really really appreciate some help, I'm supposed to get tuned this weekend on a dyno and map tracing would make it 10000000 times easier.
Thanks!
Last edited by bandit09; Sep 20, 2009 at 09:15 PM.
#1099
Evolved Member
iTrader: (11)
Join Date: Oct 2007
Location: Connecticut / Massachusetts U.S.A
Posts: 1,430
Likes: 0
Received 1 Like
on
1 Post
I restarted the computer and opened it up and it ran fine after that, not sure why it did that.
-Bink
#1100
Account Disabled
iTrader: (38)
Join Date: Aug 2005
Location: Virginia Beach, Virginia
Posts: 9,319
Likes: 0
Received 1 Like
on
1 Post
yeah I had mine sitting in the passenger seat at idle yesterday, nothing being changed and the laptop/cables not being moved...BSOD again. previously I suspected that I might be kicking a cable out or something disrupting the communication since it only happens when it's logging.
#1101
Hamish, I updated the source code listed earlier to make it more readable. I verified and it works on the PLX SM-AFR installed in my car. I'm able to get around 10 samples a second which is in line with the PLX docs..
PHP Code:
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.IO.Ports;
namespace PLXWidebandReader
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Defaulting to PLX on COM4, testmode enabled.");
IWidebandReader reader = new PLXWidebandReader("COM4");
// IWidebandReader reader = new PLXWidebandReader("COM4", 1, new PLXWidebandReader.fuelTypeFunction(new PLXWidebandReader.FuelType().Gasoline));
((PLXWidebandReader)reader).TestMode = true; // keep looping through test packet
reader.Start();
Console.WriteLine("Timestamp,AFR");
for (int i = 0; i < 1000; i++)
{
Console.WriteLine("{0:o},{1:F2}", DateTime.Now, reader.LatestReading);
Thread.Sleep(250);
}
reader.Stop();
}
}
interface IWidebandReader
{
double LatestReading
{
get;
}
void Start();
void Stop();
}
class PLXWidebandReader : IWidebandReader
{
private Object locker = new Object();
private fuelTypeFunction fuelCalcFunction;
private double latestReading;
public double LatestReading
{
get { return latestReading; }
}
private readonly int instanceNumber;
private SerialPort comPort;
private Thread worker;
bool continueRunning = false;
// test related bits
int sampleBytePacketIndex = 0; // this is only used for testing.
private bool testMode = false; // if true, test mode
public bool TestMode
{
get { return testMode; }
set { testMode = value; }
}
public PLXWidebandReader(String comPortName)
: this(comPortName, 1, new fuelTypeFunction(new FuelType().Gasoline))
{
}
public PLXWidebandReader(String comPortName, int instanceNumber)
: this(comPortName, instanceNumber, new fuelTypeFunction(new FuelType().Gasoline))
{
}
public PLXWidebandReader(String comPortName, int instanceNumber, fuelTypeFunction fuelType)
{
if (false == IsSerialPortNameValid(comPortName))
{
throw new ArgumentException(comPortName + ", is invalid.");
}
if (instanceNumber < 1 || instanceNumber > 32)
{
// Note: 1 should be passed if there's only one AFR module.
throw new ArgumentOutOfRangeException("instance number is required to be between 1 and 32.");
}
init(comPortName);
this.fuelCalcFunction = fuelType;
this.instanceNumber = instanceNumber;
}
private bool IsSerialPortNameValid(String comPortName)
{
bool serialPortNameValid = false;
foreach (String serialPortName in SerialPort.GetPortNames())
{
if (true == serialPortName.Equals(comPortName))
{
serialPortNameValid = true;
}
}
return serialPortNameValid;
}
private void init(String comPortName)
{
comPort = new SerialPort();
comPort.PortName = comPortName;
comPort.BaudRate = 19200; // per iMFD 19200 baud
comPort.DataBits = 8; // per iMFD 8
comPort.Parity = Parity.None; // per iMFD N
comPort.StopBits = StopBits.One; // per iMFD 1
comPort.Handshake = Handshake.None;
}
/*
* This method is only used for testing
*/
private byte GetByteFromSamplePacket()
{
byte[] packet = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x0F, 0x40 };
if (sampleBytePacketIndex >= packet.Length)
{
sampleBytePacketIndex = 0;
}
return packet[sampleBytePacketIndex++];
}
private double GetDataFromPacket(List<byte> packetContentBuffer)
{
double afrReading = 0;
for (int i = 1; (i + 5) < packetContentBuffer.Count ; i = i + 5)
{
// Address MSB == 0 && Address LSB == 0 is a wideband.
if (0 == packetContentBuffer[i + (int)PacketDataOffset.AddressMSB] && 0 == packetContentBuffer[i + (int)PacketDataOffset.AddressLSB])
{
// instance number is ordinal, 0-based. Need to add one before comparing.
if (instanceNumber == ((packetContentBuffer[i + (int)PacketDataOffset.Instance]) + 1))
{
// we found the correct instance number
int dataMSB = packetContentBuffer[i + (int)PacketDataOffset.DataMSB];
int dataLSB = packetContentBuffer[i + (int)PacketDataOffset.DataLSB];
afrReading = fuelCalcFunction((dataMSB << 6) | dataLSB);
break;
}
}
}
return afrReading;
}
private void InitiateReading()
{
List<byte> packetContentBuffer = new List<byte>();
bool packetStarted = false;
while (true == continueRunning)
{
try
{
byte aByte = 0;
if (testMode)
{
aByte = GetByteFromSamplePacket(); // test packet
}
else
{
aByte = (byte)comPort.ReadByte(); // to read from the serial port
}
switch (aByte)
{
case 0x80:
// start byte
packetContentBuffer.Clear();
packetContentBuffer.Add(aByte);
packetStarted = true;
break;
case 0x40:
// stop byte
if (packetStarted)
{
packetContentBuffer.Add(aByte);
latestReading = GetDataFromPacket(packetContentBuffer);
packetStarted = false;
}
Thread.Sleep(0);
break;
default:
if (packetStarted)
{
packetContentBuffer.Add(aByte);
}
break;
}
}
catch (ThreadInterruptedException)
{
packetStarted = false;
}
}
}
public void Start()
{
lock (locker)
{
if (null == worker || false == worker.IsAlive)
{
continueRunning = true;
comPort.Open();
worker = new Thread(new ThreadStart(InitiateReading));
worker.Start();
}
else
{
throw new InvalidOperationException("Already started.");
}
}
}
public void Stop()
{
lock (locker)
{
if (true == continueRunning)
{
continueRunning = false;
worker.Join(TimeSpan.FromSeconds(5));
if (true == worker.IsAlive)
{
// if worker is still alive, most likely still blocked on readByte, interrupt
worker.Interrupt();
}
comPort.Close();
}
else
{
throw new InvalidOperationException("Not started.");
}
}
}
public class FuelType
{
public double Lambda(double x)
{
return (x / 3.75 + 68) / 100d;
}
public double Gasoline(double x)
{
return (x / 2.55 + 100) / 10d;
}
public double Diesel(double x)
{
return (x / 2.58 + 100) / 10d;
}
public double Methanol(double x)
{
return (x / 5.856 + 43.5) / 10d;
}
public double Ethanol(double x)
{
return (x / 4.167 + 61.7) / 10d;
}
public double LPG(double x)
{
return (x / 2.417 + 105.6) / 10d;
}
public double CNG(double x)
{
return (x / 2.18 + 117) / 10d;
}
}
enum PacketDataOffset : int { AddressMSB = 0, AddressLSB = 1, Instance = 2, DataMSB = 3, DataLSB = 4 };
public delegate double fuelTypeFunction(double x);
}
}
Last edited by funks; Sep 25, 2009 at 01:11 AM.
#1102
Evolving Member
iTrader: (3)
Logruss, Can you or anyone else confirm that the splitter is working, and you are logging WB? I have tried 3 already from Frys, and have a real old ticket in the support system that I keep responding to, but doesn't look like that's working.
(GN4ZYBU4DQ)
I want to make sure, if I can, which USB splitter is working for the LC1 from someone already successfully using it. So far 3 for 3 with different errors.
Thanks
M
(GN4ZYBU4DQ)
I want to make sure, if I can, which USB splitter is working for the LC1 from someone already successfully using it. So far 3 for 3 with different errors.
Thanks
M
#1104
yeah I had mine sitting in the passenger seat at idle yesterday, nothing being changed and the laptop/cables not being moved...BSOD again. previously I suspected that I might be kicking a cable out or something disrupting the communication since it only happens when it's logging.
#1105
Update: EvoScan v2.7 Beta5
- New Feature: Added "Set DataLog Folder..." option under the Logging menu.
- New Feature: EvoX SST Gearbox Temp Reading added to 2008 JDM EvoX, someone can test it on the other EvoX's see if it is accurate.
You can download and extract the files in this zip file into your exisiting evoscan v2.6 installation folder. (c:\Program files\Evoscan\EvoScan v2.6\)
EvoScanv2.7beta5.zip
I have two data.xml files that have different values on my pc, can anyone confirm the correct formulas for these ones:
Mode23 2008 JDM EVOX:
InVVT Eval="(x-4096)*-0.01953" or Eval="(x-3552)/48.64+10"
Load (MIVEC) and (Timing if IATS GT 75F) RequestID="2380876c" or RequestID="23808774"
Load (Timing if IATS LE 75F) RequestID="23808F68" or RequestID="23808F70"
Mode23 USA EVOX:
InVVT Eval="(x-4096)*-0.01953" or Eval="(x-3552)/48.64+10"
NEW: SST Temp in DegC
<DataListItem DataLog="N" Color="" Display="SST Transmission Temp" LogReference="SST_TM_Temp" RequestID="CAN28-0" Eval="x-50" Unit="Deg F" MetricEval="x-50" MetricUnit="Deg C" ResponseBytes="1" GaugeMin="0" GaugeMax="1000" ChartMin="0" ChartMax="1000" ScalingFactor="1" Notes="" Priority="1" Visible="False" />
- New Feature: Added "Set DataLog Folder..." option under the Logging menu.
- New Feature: EvoX SST Gearbox Temp Reading added to 2008 JDM EvoX, someone can test it on the other EvoX's see if it is accurate.
You can download and extract the files in this zip file into your exisiting evoscan v2.6 installation folder. (c:\Program files\Evoscan\EvoScan v2.6\)
EvoScanv2.7beta5.zip
I have two data.xml files that have different values on my pc, can anyone confirm the correct formulas for these ones:
Mode23 2008 JDM EVOX:
InVVT Eval="(x-4096)*-0.01953" or Eval="(x-3552)/48.64+10"
Load (MIVEC) and (Timing if IATS GT 75F) RequestID="2380876c" or RequestID="23808774"
Load (Timing if IATS LE 75F) RequestID="23808F68" or RequestID="23808F70"
Mode23 USA EVOX:
InVVT Eval="(x-4096)*-0.01953" or Eval="(x-3552)/48.64+10"
NEW: SST Temp in DegC
<DataListItem DataLog="N" Color="" Display="SST Transmission Temp" LogReference="SST_TM_Temp" RequestID="CAN28-0" Eval="x-50" Unit="Deg F" MetricEval="x-50" MetricUnit="Deg C" ResponseBytes="1" GaugeMin="0" GaugeMax="1000" ChartMin="0" ChartMax="1000" ScalingFactor="1" Notes="" Priority="1" Visible="False" />
#1106
Account Disabled
iTrader: (10)
Update: EvoScan v2.7 Beta5
- New Feature: Added "Set DataLog Folder..." option under the Logging menu.
- New Feature: EvoX SST Gearbox Temp Reading added to 2008 JDM EvoX, someone can test it on the other EvoX's see if it is accurate.
You can download and extract the files in this zip file into your exisiting evoscan v2.6 installation folder. (c:\Program files\Evoscan\EvoScan v2.6\)
EvoScanv2.7beta5.zip
I have two data.xml files that have different values on my pc, can anyone confirm the correct formulas for these ones:
Mode23 2008 JDM EVOX:
InVVT Eval="(x-4096)*-0.01953" or Eval="(x-3552)/48.64+10"
Load (MIVEC) and (Timing if IATS GT 75F) RequestID="2380876c" or RequestID="23808774"
Load (Timing if IATS LE 75F) RequestID="23808F68" or RequestID="23808F70"
Mode23 USA EVOX:
InVVT Eval="(x-4096)*-0.01953" or Eval="(x-3552)/48.64+10"
NEW: SST Temp in DegC
<DataListItem DataLog="N" Color="" Display="SST Transmission Temp" LogReference="SST_TM_Temp" RequestID="CAN28-0" Eval="x-50" Unit="Deg F" MetricEval="x-50" MetricUnit="Deg C" ResponseBytes="1" GaugeMin="0" GaugeMax="1000" ChartMin="0" ChartMax="1000" ScalingFactor="1" Notes="" Priority="1" Visible="False" />
- New Feature: Added "Set DataLog Folder..." option under the Logging menu.
- New Feature: EvoX SST Gearbox Temp Reading added to 2008 JDM EvoX, someone can test it on the other EvoX's see if it is accurate.
You can download and extract the files in this zip file into your exisiting evoscan v2.6 installation folder. (c:\Program files\Evoscan\EvoScan v2.6\)
EvoScanv2.7beta5.zip
I have two data.xml files that have different values on my pc, can anyone confirm the correct formulas for these ones:
Mode23 2008 JDM EVOX:
InVVT Eval="(x-4096)*-0.01953" or Eval="(x-3552)/48.64+10"
Load (MIVEC) and (Timing if IATS GT 75F) RequestID="2380876c" or RequestID="23808774"
Load (Timing if IATS LE 75F) RequestID="23808F68" or RequestID="23808F70"
Mode23 USA EVOX:
InVVT Eval="(x-4096)*-0.01953" or Eval="(x-3552)/48.64+10"
NEW: SST Temp in DegC
<DataListItem DataLog="N" Color="" Display="SST Transmission Temp" LogReference="SST_TM_Temp" RequestID="CAN28-0" Eval="x-50" Unit="Deg F" MetricEval="x-50" MetricUnit="Deg C" ResponseBytes="1" GaugeMin="0" GaugeMax="1000" ChartMin="0" ChartMax="1000" ScalingFactor="1" Notes="" Priority="1" Visible="False" />
![Thumb Up](https://www.evolutionm.net/forums/images/smilies/icon14.gif)
#1108
Evolved Member
iTrader: (1)
Update: EvoScan v2.7 Beta5
- New Feature: Added "Set DataLog Folder..." option under the Logging menu.
- New Feature: EvoX SST Gearbox Temp Reading added to 2008 JDM EvoX, someone can test it on the other EvoX's see if it is accurate.
You can download and extract the files in this zip file into your exisiting evoscan v2.6 installation folder. (c:\Program files\Evoscan\EvoScan v2.6\)
EvoScanv2.7beta5.zip
I have two data.xml files that have different values on my pc, can anyone confirm the correct formulas for these ones:
Mode23 2008 JDM EVOX:
InVVT Eval="(x-4096)*-0.01953" or Eval="(x-3552)/48.64+10"
Load (MIVEC) and (Timing if IATS GT 75F) RequestID="2380876c" or RequestID="23808774"
Load (Timing if IATS LE 75F) RequestID="23808F68" or RequestID="23808F70"
Mode23 USA EVOX:
InVVT Eval="(x-4096)*-0.01953" or Eval="(x-3552)/48.64+10"
NEW: SST Temp in DegC
<DataListItem DataLog="N" Color="" Display="SST Transmission Temp" LogReference="SST_TM_Temp" RequestID="CAN28-0" Eval="x-50" Unit="Deg F" MetricEval="x-50" MetricUnit="Deg C" ResponseBytes="1" GaugeMin="0" GaugeMax="1000" ChartMin="0" ChartMax="1000" ScalingFactor="1" Notes="" Priority="1" Visible="False" />
- New Feature: Added "Set DataLog Folder..." option under the Logging menu.
- New Feature: EvoX SST Gearbox Temp Reading added to 2008 JDM EvoX, someone can test it on the other EvoX's see if it is accurate.
You can download and extract the files in this zip file into your exisiting evoscan v2.6 installation folder. (c:\Program files\Evoscan\EvoScan v2.6\)
EvoScanv2.7beta5.zip
I have two data.xml files that have different values on my pc, can anyone confirm the correct formulas for these ones:
Mode23 2008 JDM EVOX:
InVVT Eval="(x-4096)*-0.01953" or Eval="(x-3552)/48.64+10"
Load (MIVEC) and (Timing if IATS GT 75F) RequestID="2380876c" or RequestID="23808774"
Load (Timing if IATS LE 75F) RequestID="23808F68" or RequestID="23808F70"
Mode23 USA EVOX:
InVVT Eval="(x-4096)*-0.01953" or Eval="(x-3552)/48.64+10"
NEW: SST Temp in DegC
<DataListItem DataLog="N" Color="" Display="SST Transmission Temp" LogReference="SST_TM_Temp" RequestID="CAN28-0" Eval="x-50" Unit="Deg F" MetricEval="x-50" MetricUnit="Deg C" ResponseBytes="1" GaugeMin="0" GaugeMax="1000" ChartMin="0" ChartMax="1000" ScalingFactor="1" Notes="" Priority="1" Visible="False" />
#1109
yeah it appears I uploaded the wrong data.xml, and it also appears that it doesn't log, even after I tested it on the same EvoX early in the week, and I haven't made any changes, lol. I'll release a new beta version for th sst temp and for the ecu reset feature.