jaberwacky Posted July 31, 2011 Posted July 31, 2011 (edited) I hacked up a script to decode the VIN of your 1, 2, & 3 generation Protege or BK/BL Mazda 3. Information taken from here. This will most likely go into my OBDII scanner which is in the early stages of development.expandcollapse popup#include <Array.au3> Global $vin1 = decode_vin("JM1BC1417VO184726", "Protege", 2) If Not @error Then _ArrayDisplay($vin1) Else ConsoleWrite("@error: " & @error & @LF) EndIf Func protege(Const ByRef $vin, Const $gen, ByRef $info) If $gen < 1 And $gen > 3 Then Return SetError(3) Select Case $vin[6] = 1 And $vin[7] = 4 $info[4] = "Protege Four Door" Case $vin[6] = 2 And $vin[7] = 2 $info[4] = "Four Door" Case $vin[6] = 2 And $vin[7] = 3 $info[4] = "Three Door Hatchback" Case $vin[6] = 2 And $vin[7] = 4 $info[4] = "Five Door Hatchback" EndSelect Switch $gen Case 1 Switch $vin[8] Case 1 $info[7] = "Canadian 1.6 liter SOHC 2WD" Case 2 $info[7] = "1.6 liter SOHC 2WD" Case 3 $info[7] = "Canadian 1.8 liter SOHC NA 2WD" Case 4 $info[7] = "1.8 liter SOHC NA 2WD" Case 5 $info[7] = "Canadian 1.8 liter DOHC NA 2WD" Case 6 $info[7] = "1.8 liter DOHC NA 2WD" Case 7 $info[7] = "Canadian 1.8 liter SOHC NA 4WD" Case 8 $info[7] = "1.8 liter SOHC NA 4WD" EndSwitch Case 2 Switch $vin[8] Case 1 $info[7] = "1.5 liter" Case 2 $info[7] = "1.8 liter" Case 3 $info[7] = "1.5 liter without airbag" Case 4 $info[7] = "1.8 liter without airbag" EndSwitch Case 3 Switch $vin[8] Case 1 $info[7] = "1.8 liter" Case 2 $info[7] = "1.6 liter" Case 3 $info[7] = "1.8 liter with side airbag" Case 4 $info[7] = "1.6 liter with side airbag" Case 5 $info[7] = "2.0 liter" Case 6 $info[7] = "2.0 liter with side airbag" Case 7 $info[7] = "MP3/MazdaSpeed" Case 8 $info[7] = "MazdaSpeed with side airbag" EndSwitch EndSwitch Return $info EndFunc ;==>protege Func mazda3(Const ByRef $vin, ByRef $info) Switch $vin[5] Case 'K' Switch $vin[6] Case 1 $info[4] = "Without side and curtain airbags." Case 2 $info[4] = "With curtain airbags." Case 3 $info[4] = "With side & curtain airbags." EndSwitch Switch $vin[7] Case 2 $info[5] = "Four Door" Case 4 $info[5] = "Five Door" EndSwitch Case 'L' If $vin[6] = 1 Then $info[5] = "With side and curtain airbags." Switch $vin[7] Case 'S' $info[5] = "Four Door" Case 'H' $info[5] = "Five Door" EndSwitch EndSwitch Switch $vin[5] Case 'K' Switch $vin[8] Case 'F' $info[7] = "2.0 liter" Case 'G' $info[7] = "2.0 liter (PZEV)" Case 'L' $info[7] = "MazdaSpeed" Case 'M' $info[7] = "MazdaSpeed (LEV II)" Case 3 $info[7] = "2.3 liter" Case 4 $info[7] = "2.3 liter (PZEV)" EndSwitch Case 'L' Switch $vin[8] Case 'F' $info[7] = "2.0 liter" Case 'G' $info[7] = "2.0 liter (PZEV)" Case 3 $info[7] = "MazdaSpeed" Case 4 $info[7] = "MazdaSpeed (LEV II)" Case 5 $info[7] = "2.5 liter" Case 6 $info[7] = "2.5 liter (PZEV)" EndSwitch EndSwitch Return $info EndFunc ;==>mazda3 Func decode_vin(Const $vin, Const $model, Const $gen = '') If StringLen($vin) <> 17 Then Return SetError(1) If Not $model = "Protege" Or Not $model = "Mazda3" Then Return SetError(2) Local Const $a_vin = StringSplit($vin, '') Local $b_vin[10] $b_vin[0] = "Japan" $b_vin[1] = "Mazda" Switch $a_vin[3] Case 1 $b_vin[2] = "Car" Case 2 $b_vin[2] = "Truck/Van" Case 3 $b_vin[2] = "Van" Case 4 $b_vin[2] = "Truck" EndSwitch Switch $a_vin[5] Case 'G' $b_vin[3] = "90-94" Case 'A' $b_vin[3] = "95" Case 'B' $b_vin[3] = "96" Case 'C' $b_vin[3] = "97-98" Case 'J' $b_vin[3] = "99-03" Case 'K' $b_vin[3] = "04-09" Case 'L' $b_vin[3] = "10" EndSwitch Switch $a_vin[10] Case 'L' $b_vin[8] = "90" Case 'M' $b_vin[8] = "91" Case 'N' $b_vin[8] = "92" Case 'P' $b_vin[8] = "93" Case 'R' $b_vin[8] = "94" Case 'S' $b_vin[8] = "95" Case 'T' $b_vin[8] = "96" Case 'V' $b_vin[8] = "97" Case 'W' $b_vin[8] = "98" Case 'X' $b_vin[8] = "99" Case 'Y' $b_vin[8] = "00" Case 1 $b_vin[8] = "01" Case 2 $b_vin[8] = "02" Case 3 $b_vin[8] = "03" Case 4 $b_vin[8] = "04" Case 5 $b_vin[8] = "05" Case 6 $b_vin[8] = "06" Case 7 $b_vin[8] = "07" Case 8 $b_vin[8] = "08" Case 9 $b_vin[8] = "09" Case 'A' $b_vin[8] = "80/10" Case 'B' $b_vin[8] = "81/11" EndSwitch Switch $a_vin[11] Case 0 $b_vin[9] = "Hiroshima" Case 1 $b_vin[9] = "Hofu" EndSwitch Switch $model Case "Protege" protege($a_vin, $gen, $b_vin) Case "Mazda3" mazda3($a_vin, $b_vin) EndSwitch Return $b_vin EndFunc ;==>decode_vin Edited July 31, 2011 by LaCastiglione Helpful Posts and Websites: AutoIt3 Variables and Function Parameters MHz | AutoIt Wiki | Using the GUIToolTip UDF BrewManNH | Can't find what you're looking for on the Forum?
shaqan Posted August 9, 2011 Posted August 9, 2011 Thank you. With more cars involved probably SQL would be more convenient..
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now