Instant Start 18 fet Infineon Boards are here...

Lord - a lot of development going on here. :)

My two cents worth if you are selling to the general public (who are using 5304, 5305s??). What voltage and amps can the 5304 continuously handle (say for 15-20 minutes) without any damage? You can sell "insane versions" in smaller numbers at a higher price.

As you know, I gripe over $ 140. I really don't want to smoke a 5304.

I like the 75 A housing/connectors, they hold together and don't pit/corrode like the 30A ones. The 30A ones I had to keep taping them, they would separate under vibration and potholes.

Features? Regen braking "yes" - I tried looking at bikes with disc brakes, they mostly come on more expensive aluminum bikes, and I did not want to use aluminum stays.

Selectable LVC "big yes" - if I had a problem with a bad battery pack, I could just flip a switch to 36V and use one pack. Main thing is a controller that accepts different voltages without any internal changes needed

Selectable power? No - if i don't have the restraint to keep the throttle down, I won't have the restraint to use the selectable switch.

Maybe a built in feature to control arcing when connecting/disconnecting batteries - keep it from damaging anything.

Maybe you could list features for a vote.
 
Methods, I have decoded the program and translated into English. It is actually compiled with MS Visual Basic version 6 which was released more than 10 years ago. The size of the executable file is small at 44k. All we need to do is to find someone who can work together with us to compile it back and correct a few left over un-translated sub items. The sub items cannot translated yet until I get a complied English version & compare with a Chinese version. To get the English version working, all we need is to place the compiled executable file onto the pre-installed Chinese version program directory and run the file from the path. Let me know if anyone have any questions. I appreciate if any programmers here can help us move forward. :idea:

Below is the decoded source code:

Begin VB.Form frmMain 'Offset: 0000154E
Caption = "Infineon chipset controller programmer translated by Edward Lyen - USA on June 13th, 2009"
ScaleMode = 1
AutoRedraw = False
FontTransparent = True
BorderStyle = 1 'Fixed Single
'Icon = n/a
LinkTopic = "frmMain"
MaxButton = 0 'False
MinButton = 0 'False
ClientLeft = 4725
ClientTop = 3795
ClientWidth = 11625
ClientHeight = 6810
StartUpPosition = 2 'CenterScreen
Begin ComboBox Combo1 'Offset: 000015AB
Style = 2
Index = 13
Left = 8760
Top = 3120
Width = 2415
Height = 300
TabIndex = 44
List = "frmMain.frx":0
ItemData = "frmMain.frx":2D
End
Begin Timer Timer1 'Offset: 0000160C
Enabled = 0 'False
Interval = 75
Left = 840
Top = 5760
End
Begin Frame Frame10 'Offset: 0000162E
Caption = "Start transfer"
Left = 3360
Top = 120
Width = 8415
Height = 6375
TabIndex = 7
BorderStyle = 0 'None
Begin ComboBox Combo1 'Offset: 0000165A
Style = 2
Index = 12
Left = 1800
Top = 5280
Width = 1935
Height = 300
TabIndex = 36
List = "frmMain.frx":3A
ItemData = "frmMain.frx":6E
End
Begin ComboBox Combo1 'Offset: 000016BF
Style = 2
Index = 11
Left = 1800
Top = 4800
Width = 975
Height = 300
TabIndex = 35
List = "frmMain.frx":78
ItemData = "frmMain.frx":B6
End
Begin Frame Fram4 'Offset: 00001749
Caption = "Time & Other settings"
Left = 240
Top = 3960
Width = 7695
Height = 2415
TabIndex = 30
Begin ComboBox Combo1 'Offset: 00001777
Style = 2
Index = 20
Left = 5160
Top = 1800
Width = 1815
Height = 300
TabIndex = 53
List = "frmMain.frx":DB
ItemData = "frmMain.frx":F3
End
Begin ComboBox Combo1 'Offset: 000017C0
Style = 2
Index = 19
Left = 5160
Top = 1320
Width = 1455
Height = 300
TabIndex = 51
List = "frmMain.frx":FD
ItemData = "frmMain.frx":111
End
Begin ComboBox Combo1 'Offset: 00001805
Style = 2
Index = 18
Left = 5160
Top = 840
Width = 1455
Height = 300
TabIndex = 50
List = "frmMain.frx":11B
ItemData = "frmMain.frx":12B
End
Begin ComboBox Combo1 'Offset: 00001846
Style = 2
Index = 17
Left = 5160
Top = 360
Width = 1455
Height = 300
TabIndex = 49
List = "frmMain.frx":135
ItemData = "frmMain.frx":14D
End
Begin ComboBox Combo1 'Offset: 0000188F
Style = 2
Index = 14
Left = 1560
Top = 1800
Width = 1815
Height = 300
TabIndex = 45
List = "frmMain.frx":157
ItemData = "frmMain.frx":171
End
Begin ComboBox Combo1 'Offset: 000018DD
Style = 2
Index = 10
Left = 1560
Top = 360
Width = 975
Height = 300
TabIndex = 31
List = "frmMain.frx":17E
ItemData = "frmMain.frx":1BA
End
Begin Label Label3 'Offset: 00001965
Caption = "P3 usage"
Index = 5
Left = 3960
Top = 1800
Width = 1215
Height = 255
TabIndex = 58
End
Begin Label Label3 'Offset: 00001993
Caption = "1+1 Assist power choice"
Index = 4
Left = 3960
Top = 1320
Width = 1215
Height = 255
TabIndex = 57
End
Begin Label Label3 'Offset: 000019C2
Caption = "In motion speed"
Index = 3
Left = 3960
Top = 840
Width = 1215
Height = 255
TabIndex = 56
End
Begin Label Label3 'Offset: 000019F2
Caption = "Security power level"
Index = 2
Left = 3960
Top = 360
Width = 1215
Height = 255
TabIndex = 55
End
Begin Label Label2 'Offset: 00001A22
Caption = "Electronic brake strength level"
Index = 6
Left = 120
Top = 1800
Width = 1095
Height = 255
TabIndex = 46
End
Begin Label Label5 'Offset: 00001A52
Caption = "Slip regenerative recharge mode"
Left = 120
Top = 1320
Width = 1335
Height = 255
TabIndex = 34
End
Begin Label Label4 'Offset: 00001A81
Caption = "Automatic Cruise time in second"
Left = 120
Top = 840
Width = 1695
Height = 255
TabIndex = 33
End
Begin Label Label3 'Offset: 00001AB3
Caption = "Block time in second"
Index = 0
Left = 120
Top = 360
Width = 1215
Height = 255
TabIndex = 32
End
End
Begin ComboBox Combo1 'Offset: 00001AE7
Style = 2
Index = 9
Left = 5400
Top = 2520
Width = 1095
Height = 300
TabIndex = 29
List = "frmMain.frx":1DF
ItemData = "frmMain.frx":30A
End
Begin ComboBox Combo1 'Offset: 00001D18
Style = 2
Index = 8
Left = 5400
Top = 2040
Width = 1095
Height = 300
TabIndex = 28
List = "frmMain.frx":3E9
ItemData = "frmMain.frx":514
End
Begin ComboBox Combo1 'Offset: 00001F49
Style = 2
Index = 7
Left = 5400
Top = 1560
Width = 1095
Height = 300
TabIndex = 27
List = "frmMain.frx":5F3
ItemData = "frmMain.frx":71E
End
Begin ComboBox Combo1 'Offset: 0000217A
Style = 2
Index = 6
Left = 5400
Top = 1080
Width = 2415
Height = 300
TabIndex = 26
List = "frmMain.frx":7FD
ItemData = "frmMain.frx":821
End
Begin Frame Frame3 'Offset: 000021CF
Caption = "Speed ratio settings"
Left = 3840
Top = 240
Width = 4095
Height = 3735
TabIndex = 19
Begin ComboBox Combo1 'Offset: 000021FC
Style = 2
Index = 15
Left = 1560
Top = 3240
Width = 1815
Height = 300
TabIndex = 48
List = "frmMain.frx":82B
ItemData = "frmMain.frx":83B
End
Begin ComboBox Combo1 'Offset: 00002240
Style = 2
Index = 5
Left = 1560
Top = 360
Width = 1095
Height = 300
TabIndex = 20
List = "frmMain.frx":848
ItemData = "frmMain.frx":964
End
Begin Label Label3 'Offset: 00002459
Caption = "Inverse speed %"
Index = 1
Left = 120
Top = 3240
Width = 1215
Height = 255
TabIndex = 47
End
Begin Label Label9 'Offset: 0000248A
Caption = "Speed point/prompt mode"
Left = 120
Top = 2760
Width = 1215
Height = 255
TabIndex = 43
End
Begin Label Label2 'Offset: 000024B9
Caption = "Speed ratio 3%"
Index = 4
Left = 120
Top = 2280
Width = 1095
Height = 255
TabIndex = 25
End
Begin Label Label2 'Offset: 000024EB
Caption = "Speed ratio 2%"
Index = 3
Left = 120
Top = 1800
Width = 1215
Height = 255
TabIndex = 24
End
Begin Label Label2 'Offset: 0000251D
Caption = "Speed ratio 1%"
Index = 2
Left = 120
Top = 1320
Width = 1095
Height = 255
TabIndex = 23
End
Begin Label Label2 'Offset: 0000254F
Caption = "3 Speed mode"
Index = 1
Left = 120
Top = 840
Width = 1095
Height = 255
TabIndex = 22
End
Begin Label Label2 'Offset: 00002581
Caption = "Limit speed ratio %"
Index = 0
Left = 120
Top = 360
Width = 1095
Height = 255
TabIndex = 21
End
End
Begin Frame Frame2 'Offset: 000025B3
Caption = "Chipset/Board type selection"
Left = 240
Top = 240
Width = 2655
Height = 615
TabIndex = 17
Begin ComboBox Combo1 'Offset: 000025DE
Style = 2
Index = 0
Left = 120
Top = 240
Width = 2295
Height = 300
TabIndex = 18
List = "frmMain.frx":A3A
ItemData = "frmMain.frx":A62
End
End
Begin ComboBox Combo1 'Offset: 0000263E
Style = 2
Index = 4
Left = 1800
Top = 2760
Width = 1095
Height = 300
TabIndex = 16
List = "frmMain.frx":A72
ItemData = "frmMain.frx":AA3
End
Begin ComboBox Combo1 'Offset: 000026B5
Style = 2
Index = 3
Left = 1800
Top = 2280
Width = 1095
Height = 300
TabIndex = 15
List = "frmMain.frx":AC2
ItemData = "frmMain.frx":B98
End
Begin ComboBox Combo1 'Offset: 0000281F
Style = 2
Index = 2
Left = 1800
Top = 1800
Width = 1095
Height = 300
TabIndex = 14
List = "frmMain.frx":C05
ItemData = "frmMain.frx":DFB
End
Begin Frame Frame1 'Offset: 00002B3C
Caption = "Current, voltage settings"
Left = 240
Top = 960
Width = 3015
Height = 3015
TabIndex = 8
Begin ComboBox Combo1 'Offset: 00002B6B
Style = 2
Index = 16
Left = 1560
Top = 2280
Width = 1095
Height = 300
TabIndex = 52
List = "frmMain.frx":EFB
ItemData = "frmMain.frx":F0B
End
Begin ComboBox Combo1 'Offset: 00002BAF
Style = 2
Index = 1
Left = 1560
Top = 360
Width = 1095
Height = 300
TabIndex = 9
List = "frmMain.frx":F18
ItemData = "frmMain.frx":1001
End
Begin Label Label1 'Offset: 00002D65
Caption = "Voltage limit for regenerative braking"
Index = 5
Left = 120
Top = 2280
Width = 810
Height = 180
TabIndex = 54
AutoSize = -1 'True
End
Begin Label Label1 'Offset: 00002D96
Caption = "Voltage tolerance"
Index = 4
Left = 120
Top = 1800
Width = 1170
Height = 180
TabIndex = 13
AutoSize = -1 'True
End
Begin Label Label1 'Offset: 00002DCB
Caption = "Low voltage limit"
Index = 2
Left = 120
Top = 1320
Width = 810
Height = 180
TabIndex = 12
AutoSize = -1 'True
End
Begin Label Label1 'Offset: 00002DFC
Caption = "Rated/Average current (amp)"
Index = 1
Left = 120
Top = 840
Width = 1170
Height = 180
TabIndex = 11
AutoSize = -1 'True
End
Begin Label Label1 'Offset: 00002E31
Caption = "Phase Current (amp)"
Index = 3
ForeColor = &HFF&
Left = 120
Top = 360
Width = 990
Height = 180
TabIndex = 10
AutoSize = -1 'True
End
End
End
Begin CommonDialog ctrCommonDialog 'Offset: 00002E6B
End
Begin MSComm ctrMSComm 'Offset: 00002EFC
End
Begin PictureBox Picture1 'Offset: 00002F72
Left = 120
Top = 120
Width = 3020
Height = 5535
TabIndex = 0
ScaleMode = 1
AutoRedraw = False
FontTransparent = True
Begin TextBox txtLoadDir 'Offset: 00002F96
Left = 840
Top = 600
Width = 2000
Height = 375
TabIndex = 38
End
Begin TextBox txtSaveDir 'Offset: 00002FB7
Left = 840
Top = 1320
Width = 2000
Height = 375
TabIndex = 37
End
Begin CommandButton cmdFileSend 'Offset: 00002FD8
Caption = "Start transfer"
Left = 240
Top = 2640
Width = 2055
Height = 495
TabIndex = 4
End
Begin ComboBox cboComPort 'Offset: 00003006
Left = 840
Top = 2040
Width = 1095
Height = 300
TabIndex = 3
List = "frmMain.frx":10A7
ItemData = "frmMain.frx":10C1
CausesValidation = 0 'False
End
Begin RichTextBox rtfReceive 'Offset: 00003058
Left = 120
Top = 4200
Width = 2775
Height = 1215
TabIndex = 2
End
Begin CommandButton cmdShow 'Offset: 00003174
Left = 1440
Top = 120
Width = 1455
Height = 300
TabIndex = 1
End
Begin ProgressBar prgFileTransfer 'Offset: 00003192
Left = 240
Top = 3600
Width = 2175
Height = 495
TabIndex = 5
End
Begin Label Label8 'Offset: 0000322B
Caption = "Port select"
Left = 120
Top = 2040
Width = 615
Height = 375
TabIndex = 41
End
Begin Label Label7 'Offset: 00003252
Caption = "Save path"
Left = 120
Top = 1440
Width = 855
Height = 375
TabIndex = 40
End
Begin Label Label6 'Offset: 0000327B
Caption = "Open path"
Left = 120
Top = 720
Width = 855
Height = 375
TabIndex = 39
End
Begin Label Label1 'Offset: 000032A4
Caption = "Transfer status"
Index = 0
Left = 240
Top = 3240
Width = 1575
Height = 375
TabIndex = 6
End
End
Begin Label Label2 'Offset: 000032D3
Caption = "Speed ratio 3%"
Index = 5
Left = 7320
Top = 3360
Width = 1095
Height = 255
TabIndex = 42
End
Begin Menu OpenFile 'Offset: 00003306
Caption = "Open document/file"
End
Begin Menu StoreFile 'Offset: 00003325
Caption = "Save document/file"
End
End

Attribute VB_Name = "frmMain"


Private Sub cmdShow_Click() '4061D0
loc_004061F2: var_8 = &H4011A0
loc_00406216: not ax
loc_00406224: If %x1 = frmMain.Top = 65535 Then
loc_00406248: cmdShow.Caption = "<< Hide"
loc_00406299: frmMain.Width = "MZ"
loc_004062D9: frmMain.Height = "MZ"
loc_004062E3: If esi < ebx Then
loc_004062E9: GoTo loc_004063A9
loc_004062EE: End If
loc_0040630C: cmdShow.Caption = ">> Expand"
loc_0040635D: frmMain.Width = "MZ"
loc_0040639D: frmMain.Height = "MZ"
loc_004063A7: If CreateObject(004046C0h, 00409010h) < ebx Then
loc_004063A9: 'Referenced from 004062E9
loc_004063B5: CheckObj(CreateObject(004046C0h, 00409010h), 00409010h, 00403D88h, 0000008Ch)
loc_004063B7: End If
loc_004063B7: End If
loc_004063C0: GoTo loc_004063CC
loc_004063CB: Exit Sub
loc_004063CC: 'Referenced from 004063C0
loc_004063CC: Exit Sub
loc_004063E9: Exit Sub
End Sub

Private Sub Form_Load() '4063F0
loc_00406412: var_8 = &H4011B0
loc_00406456: cmdShow.Caption = "<< Hide"
loc_004064A4: frmMain.Height = "MZ"
loc_0040651A: call MSVBVM60.DLL.__vbaLateIdSt("", "", 409010h, 409010h, 00000007h, "", arg_8, arg_8, var_28)
loc_0040652E: var_24 = FFFFFFFFh
loc_0040657D: call MSVBVM60.DLL.__vbaLateIdSt("", "", 409010h, 409010h, 00000012h)
loc_004065BD: call MSVBVM60.DLL.__vbaLateIdSt(arg_8, "", arg_8, arg_8, 00000001h)
loc_004065FA: call MSVBVM60.DLL.__vbaLateIdSt(arg_8, "", arg_8, arg_8, 00000002h)
loc_00406637: call MSVBVM60.DLL.__vbaLateIdSt(arg_8, "", arg_8, arg_8, 00000005h)
loc_0040667C: Call MSVBVM60.DLL.__vbaLateIdSt(arg_8, "", arg_8, arg_8, FFFFFDFBh)
loc_004066CB: call MSVBVM60.DLL.__vbaStrI2(00000001h, "", 409010h, 409010h)
loc_004066DE: cboComPort.Text = MSVBVM60.DLL.__vbaStrI2(00000001h, "", 409010h, 409010h)
loc_0040670A: var_4 = 0
loc_00406717: GoTo loc_0040672C
loc_0040672B: Exit Sub
loc_0040672C: 'Referenced from 00406717
loc_0040672C: Exit Sub
loc_00406749: Exit Sub
End Sub

Private Sub StoreFile_Click() '4074A0
loc_004074C5: var_10 = &H401208
loc_00407518: If var_20 <= 20 Then
loc_00407521: call edx+000002FCh(arg_8, arg_8, esi, ebx)
loc_0040756D: var_34 = frmMain.Fontname
loc_00407587: movsx esi, word ptr ""
loc_0040758E: If "" >= 32 Then
loc_00407590: call MSVBVM60.DLL.__vbaGenerateBoundsError("", "", edx+000002FCh(arg_8, arg_8, esi, ebx))
loc_00407596: End If
loc_0040759F: Call MSVBVM60.DLL.__vbaStrCopy()
loc_004075C4: call eax+000002FCh(arg_8)
loc_0040762D: neg(esi)
loc_0040762F: sbb(esi, esi)
loc_00407631: esi = (frmMain.Fontname = 0040428Ch) + 1
loc_00407632: neg(esi)
loc_00407653: If (frmMain.Fontname = 0040428Ch) + 1 = 0 Then
loc_0040765A: 00000001h = 00000001h + ""
loc_0040765E: If Err.Number <> 0 Then GoTo loc_0040798D
loc_00407664: var_20 = 1
loc_00407669: GoTo loc_0040750F
loc_0040766E: End If
loc_00407673: var_74 = 80020004h
loc_0040767E: var_64 = 80020004h
loc_00407684: var_54 = 80020004h
loc_0040768A: var_84 = "ÂSpe'#13'Ný€'#9'gzz"
loc_00407694: var_8C = 8
loc_004076BF: MsgBox(10, 00000000h, 10, 10, 10)
loc_004076D7: var_4C = "": var_6C = "": var_3C = "": eax+000002FCh(arg_8) = ""
loc_004076E0: GoTo loc_00407922
loc_004076E5: End If
loc_004076E7: call On Error ...(00000001h, "", eax+000002FCh(arg_8))
loc_004076ED: var_84 = "*.asv| *.asv"
loc_004076F7: var_8C = 8
loc_0040775D: call MSVBVM60.DLL.__vbaLateIdSt(409010h, "", 409010h, 409010h, 00000003h)
loc_004077A1: call MSVBVM60.DLL.__vbaLateIdCall(409010h, "", 409010h, 409010h, 0000001Fh, 00000000h)
loc_004077ED: call MSVBVM60.DLL.__vbaLateIdCallLd(var_4C, 409010h, "", 409010h, 409010h, 00000001h, 00000000h)
loc_004077F7: call MSVBVM60.DLL.__vbaStrVarMove(MSVBVM60.DLL.__vbaLateIdCallLd(var_4C, 409010h, "", 409010h, 409010h, 00000001h, 00000000h))
loc_00407802: var_34 = MSVBVM60.DLL.__vbaStrVarMove(MSVBVM60.DLL.__vbaLateIdCallLd(var_4C, 409010h, "", 409010h, 409010h, 00000001h, 00000000h))
loc_0040780C: Call MSVBVM60.DLL.__vbaStrCopy()
loc_00407845: txtSaveDir.Text = esi
loc_0040786C: var_44 = 80020004h
loc_00407884: var_94 = FreeFile(10, "", 10, arg_8)
loc_0040788B: var_9C = 2
loc_0040789E: Call MSVBVM60.DLL.__vbaVarMove()
loc_004078BF: call Open #(00000002h, FFFFFFFFh, @CInt(esi))
loc_004078CF: If esi <= 20 Then
loc_004078D1: movsx(ebx, si)
loc_004078D7: If "" >= 32 Then
loc_004078D9: Call MSVBVM60.DLL.__vbaGenerateBoundsError()
loc_004078DF: End If
loc_004078F6: call Print #(00404358h, @CInt(edx+ebx*4))
loc_00407904: 00000001h = 00000001h + si
loc_00407907: If Err.Number <> 0 Then GoTo loc_0040798D
loc_0040790F: GoTo loc_004078C7
loc_00407911: End If
loc_0040791C: Close @CInt(%x2)
loc_00407922: 'Referenced from 004076E0
loc_00407922: call Exit Sub
loc_0040792D: GoTo loc_00407964
loc_00407963: Exit Sub
loc_00407964: 'Referenced from 0040792D
loc_0040796D: Exit Sub
loc_0040798A: Exit Sub
loc_0040798D: 'Referenced from 040765E
loc_0040798D: Call MSVBVM60.DLL.__vbaErrorOverflow()
End Sub

Private Sub OpenFile_Click() '407130
loc_00407152: var_10 = &H4011E0
loc_0040718C: call On Error ...(00000001h, arg_8, esi, ebx)
loc_004071E9: call MSVBVM60.DLL.__vbaLateIdSt("", "", 409010h, 409010h, 00000003h)
loc_0040722D: call MSVBVM60.DLL.__vbaLateIdCall(409010h, "", 409010h, 409010h, 0000001Eh, 00000000h)
loc_00407275: call MSVBVM60.DLL.__vbaLateIdCallLd("", 409010h, "", 409010h, 409010h, 00000001h, 00000000h)
loc_0040727F: call MSVBVM60.DLL.__vbaStrVarMove(MSVBVM60.DLL.__vbaLateIdCallLd("", 409010h, "", 409010h, 409010h, 00000001h, 00000000h))
loc_0040728A: var_34 = MSVBVM60.DLL.__vbaStrVarMove(MSVBVM60.DLL.__vbaLateIdCallLd("", 409010h, "", 409010h, 409010h, 00000001h, 00000000h))
loc_00407294: Call MSVBVM60.DLL.__vbaStrCopy()
loc_004072CD: txtLoadDir.Text = ebx
loc_004072F4: var_44 = 80020004h
loc_0040730C: var_64 = FreeFile(10, "", 10, arg_8)
loc_00407310: var_6C = 2
loc_0040731D: Call MSVBVM60.DLL.__vbaVarMove()
loc_00407340: call Open #(00000001h, FFFFFFFFh, @CInt(ebx))
loc_00407346: var_20 = 0
loc_0040735D: If EOF(@CInt(%x2)) = 0 Then
loc_00407363: movsx ebx, word ptr var_20
loc_0040736A: If ctrCommonDialog.Filter = %x1 >= 32 Then
loc_0040736C: Call MSVBVM60.DLL.__vbaGenerateBoundsError()
loc_00407372: End If
loc_00407385: call Input #(00404350h, @CInt(eax+ebx*4))
loc_00407391: call eax+000002FCh(arg_8)
loc_004073CD: If ctrCommonDialog.Filter = %x1 >= 32 Then
loc_004073CF: call MSVBVM60.DLL.__vbaGenerateBoundsError(var_20, "", "", eax+000002FCh(arg_8))
loc_004073D5: End If
loc_004073DF: frmMain.Fontname = eax + ebx * 4
loc_00407414: var_20 = var_20 + 0001h
loc_00407418: If Err.Number <> 0 Then GoTo loc_407491
loc_0040741A: var_20 = var_20
loc_00407423: GoTo loc_0040734D
loc_00407428: End If
loc_0040742F: Close @CInt(%x2)
loc_00407435: call Exit Sub
loc_00407440: GoTo loc_00407468
loc_00407467: Exit Sub
loc_00407468: 'Referenced from 00407440
loc_00407471: Exit Sub
loc_0040748E: Exit Sub
loc_00407491: 'Referenced from 0407418
loc_00407491: Call MSVBVM60.DLL.__vbaErrorOverflow()
End Sub

Private Sub cmdFileSend_Click() '4058A0
loc_004058C2: var_8 = &H401168
loc_004058F1: Call frmMain.CommPortOpen_Close()
loc_0040591A: If frmMain.SaveProp = ebx Then
loc_0040592F: Call MSVBVM60.DLL.__vbaStrCopy(arg_8, ebx)
loc_00405940: Call frmMain.ReceiveDisplay(arg_8, "")
loc_0040599F: cmdFileSend.Caption = 0040420Ch
loc_004059D7: call eax+00000094h("", FFFFFFFFh, "", "", arg_8, "", 409010h, 409010h, 3)
loc_00405A15: cboComPort.Enabled = FFFFFFFFh
loc_00405A53: Timer1.Enabled = 00000000h
loc_00405A81: call ecx+0000032Ch(arg_8, "", arg_8, "", "", "", "", "", "")
loc_00405AB7: frmMain.Enabled = FFFFFFFFh
loc_00405AE4: GoTo loc_00405C44
loc_00405AE9: End If
loc_00405AEC: frmMain.Unknown_4079A0("", 00000000h, "")
loc_00405B01: call MSVBVM60.DLL.__vbaStrCopy("", ecx+0000032Ch(arg_8, "", arg_8, "", "", "", "", "", ""))
loc_00405B12: Call frmMain.ReceiveDisplay("", "")
loc_00405B71: cmdFileSend.Caption = "È~bk O“"
loc_00405BA9: call eax+00000094h("", 00000000h, "", "", "", "", 409010h, 409010h, 3)
loc_00405BE7: cboComPort.Enabled = 00000000h
loc_00405C27: Timer1.Enabled = FFFFFFFFh
loc_00405C44: 'Referenced from 00405AE4
loc_00405C44: var_4 = 0
loc_00405C50: GoTo loc_00405C6F
loc_00405C6E: Exit Sub
loc_00405C6F: 'Referenced from 00405C50
loc_00405C6F: Exit Sub
loc_00405C8C: Exit Sub
End Sub

Private Sub Timer1_Timer() '4082D0
loc_004082F2: var_8 = &H401278
loc_00408330: call edx+0000032Ch(arg_8, edi, arg_8, ebx)
loc_0040834B: var_74 = ""
loc_0040836F: var_7C = ""
loc_00408372: call eax+0000032Ch(arg_8, edi, "", "", edx+0000032Ch(arg_8, edi, arg_8, ebx))
loc_004083D2: not ecx
loc_004083D8: frmMain.Enabled = frmMain.Enabled
loc_00408414: eax = frmMain.SaveProp - 1
loc_00408418: If frmMain.SaveProp - 1 <= 3 Then
loc_0040841E: GoTo loc_[eax*4+004088D4h]
loc_00408429: If frmMain.Reset > 3 Then
loc_0040842D: call MSVBVM60.DLL.__vbaUI1I2(eax+0000032Ch(arg_8, edi, "", "", edx+0000032Ch(arg_8, edi, arg_8, ebx)))
loc_0040844F: call MSVBVM60.DLL.__vbaLateIdCallLd("", arg_8, "", arg_8, arg_8, 00000014h, 00000000h)
loc_00408459: call MSVBVM60.DLL.__vbaBoolVar(MSVBVM60.DLL.__vbaLateIdCallLd("", arg_8, "", arg_8, arg_8, 00000014h, 00000000h))
loc_0040846B: setz(cl)
loc_0040846E: neg(ecx)
loc_00408487: If word ptr var_64 <> 0 Then
loc_0040848F: GoTo loc_004084E4
loc_00408491: End If
loc_004084AA: call MSVBVM60.DLL.__vbaLateIdCallLd("", arg_8, "", arg_8, arg_8, 00000014h, 00000000h)
loc_004084B4: call MSVBVM60.DLL.__vbaBoolVar(MSVBVM60.DLL.__vbaLateIdCallLd("", arg_8, "", arg_8, arg_8, 00000014h, 00000000h))
loc_004084C3: neg(ax)
loc_004084C6: sbb(eax, eax)
loc_004084C8: eax = MSVBVM60.DLL.__vbaBoolVar(MSVBVM60.DLL.__vbaLateIdCallLd("", arg_8, "", arg_8, arg_8, 00000014h, 00000000h)) + 1
loc_004084C9: neg(eax)
loc_004084DF: If word ptr MSVBVM60.DLL.__vbaBoolVar(MSVBVM60.DLL.__vbaLateIdCallLd("", arg_8, "", arg_8, arg_8, 00000014h, 00000000h)) + 1 <> 0 Then
loc_004084E1: eax = "" Or FFFFFFFFh
loc_004084E4: 'Referenced from 0040848F
loc_00408512: call MSVBVM60.DLL.__vbaLateIdSt(var_3C, "", var_3C, arg_8, 00000014h)
loc_0040851D: End If
loc_0040851D: End If
loc_00408536: call MSVBVM60.DLL.__vbaLateIdCallLd("", arg_8, "", arg_8, arg_8, 00000014h, 00000000h)
loc_00408540: call MSVBVM60.DLL.__vbaBoolVar(MSVBVM60.DLL.__vbaLateIdCallLd("", arg_8, "", arg_8, arg_8, 00000014h, 00000000h))
loc_0040854C: setz(cl)
loc_0040854F: neg(ecx)
loc_00408568: If word ptr MSVBVM60.DLL.__vbaBoolVar(MSVBVM60.DLL.__vbaLateIdCallLd("", arg_8, "", arg_8, arg_8, 00000014h, 00000000h)) + 1 <> 0 Then
loc_004085BB: call MSVBVM60.DLL.__vbaLateIdSt("", "", 409010h, 409010h, 00000019h)
loc_004085C6: End If
loc_004085F6: call MSVBVM60.DLL.__vbaLateIdSt(var_3C, "", var_3C, arg_8, 00000005h)
loc_00408601: GoTo loc_00408791
loc_00408655: call MSVBVM60.DLL.__vbaLateIdSt("", "", 409010h, 409010h, 00000019h)
loc_00408699: call MSVBVM60.DLL.__vbaLateIdSt(var_3C, "", var_3C, arg_8, 00000005h)
loc_004086AB: GoTo loc_00408791
loc_004086E3: call MSVBVM60.DLL.__vbaLateIdSt(var_3C, "", var_3C, arg_8, 00000005h)
loc_004086F4: GoTo loc_00408791
loc_00408733: call MSVBVM60.DLL.__vbaLateIdSt(var_3C, "", var_3C, arg_8, 00000005h)
loc_0040874C: var_60 = 3
loc_00408753: Call MSVBVM60.DLL.__vbaStrCopy()
loc_00408764: Call frmMain.ReceiveDisplay(arg_8, "")
loc_00408789: GoTo loc_00408791
loc_0040878B: End If
loc_00408791: 'Referenced from 00408601
loc_00408791: movzx ecx, byte ptr [esi+3Ch]
loc_00408796: cx = cx + 0001h
loc_0040879A: If Err.Number <> 0 Then GoTo loc_004088E4
loc_004087A0: Call MSVBVM60.DLL.__vbaUI1I2()
loc_004087AB: If MSVBVM60.DLL.__vbaUI1I2 > 10 Then
loc_004087C9: Timer1.Enabled = 00000000h
loc_004087EB: Call MSVBVM60.DLL.__vbaUI1I2("", arg_8, arg_8)
loc_00408803: var_60 = 3
loc_0040880A: Call MSVBVM60.DLL.__vbaStrCopy()
loc_0040881B: Call frmMain.ReceiveDisplay(arg_8, "")
loc_00408857: Timer1.Enabled = FFFFFFFFh
loc_00408874: End If
loc_00408881: GoTo loc_004088B1
loc_004088B0: Exit Sub
loc_004088B1: 'Referenced from 00408881
loc_004088B1: Exit Sub
loc_004088CE: Exit Sub
loc_004088D4: eax = 0 And 06004084h
loc_004088D9: xchg(al, [eax])
loc_004088DE: eax = 86h + 1
loc_004088DF: ecx = ecx + ""
loc_004088E1: xchg(al, [eax])
loc_004088E4: 'Referenced from 040879A
loc_004088E4: Call MSVBVM60.DLL.__vbaErrorOverflow()
End Sub

Private Sub ctrMSComm_QueryUnload(ByVal Cancel As Integer, ByVal UnloadMode As Integer) '406750
loc_00406772: var_8 = &H4011C0
loc_004067DF: call MSVBVM60.DLL.__vbaLateIdCallLd("", 409010h, "", 409010h, 409010h, 0000001Bh, esi, %x1 = IsSet(%x2) 'Ignore this, esi)
loc_004067E5: MSVBVM60.DLL.__vbaLateIdCallLd("", 409010h, "", 409010h, 409010h, 0000001Bh, esi, %x1 = IsSet(%x2) = @CInt(%x2)
loc_004067FF: movsx(eax, si)
loc_00406802: var_2C = var_2C - 00000002h
loc_00406805: If var_2C = 0 Then
loc_00406842: call MSVBVM60.DLL.__vbaLateIdCallLd(var_2C, 409010h, "", 409010h, 409010h, 0000001Ah, 00000000h)
loc_0040684C: call MSVBVM60.DLL.__vbaVar2Vec("", MSVBVM60.DLL.__vbaLateIdCallLd(var_2C, 409010h, "", 409010h, 409010h, 0000001Ah, 00000000h))
loc_0040685A: Call MSVBVM60.DLL.__vbaAryMove("", "")
loc_00406877: If "" <> 0 Then
loc_0040687D: If var_18 = 1 Then
loc_00406885: neg(esi)
loc_00406889: If Then
loc_0040688B: Call MSVBVM60.DLL.__vbaGenerateBoundsError()
loc_00406894: End If
loc_00406896: GoTo loc_004068A1
loc_00406898: End If
loc_00406898: End If
loc_00406898: Call MSVBVM60.DLL.__vbaGenerateBoundsError()
loc_004068A1: 'Referenced from 00406896
loc_004068A8: If ecx + eax = 85 Then
loc_004068B0: eax = ctrMSComm.CommPort = %x1 - 1
loc_004068B1: If ctrMSComm.CommPort = %x1 - 1 <> 0 Then
loc_004068B3: ctrMSComm.CommPort = %x1 - 1 = ctrMSComm.CommPort = %x1 - 1 - 00000002h
loc_004068B6: If ctrMSComm.CommPort = %x1 - 1 = 0 Then
loc_004068BF: GoTo loc_004068C8
loc_004068C1: End If
loc_004068C8: End If
loc_004068C8: End If
loc_004068C8: End If
loc_004068C8: var_4 = 0
loc_004068D4: GoTo loc_004068F5
loc_004068EE: call MSVBVM60.DLL.__vbaAryDestruct(00000000h, "", 00406902h)
loc_004068F4: Exit Sub
loc_004068F5: 'Referenced from 004068D4
loc_004068FB: call MSVBVM60.DLL.__vbaAryDestruct(00000000h, "")
loc_00406901: Exit Sub
End Sub

Public Sub CommPortOpen_Close() '405C90
loc_00405CB5: var_10 = &H401178
loc_00405CEE: If frmMain.SaveProp <> edi Then
loc_00405D15: call MSVBVM60.DLL.__vbaLateIdCallLd("", arg_8, "", arg_8, arg_8, 00000014h, edi, arg_8, %x1 = IsSet(%x2) 'Ignore this)
loc_00405D1F: call MSVBVM60.DLL.__vbaBoolVar(MSVBVM60.DLL.__vbaLateIdCallLd("", arg_8, "", arg_8, arg_8, 00000014h, edi, arg_8, %x1 = IsSet(%x2))
loc_00405D2B: setz(cl)
loc_00405D2E: neg(ecx)
loc_00405D53: If word ptr var_B4 <> 0 Then
loc_00405D63: var_7C = 11
loc_00405D8F: call MSVBVM60.DLL.__vbaLateIdSt(var_70, "", var_70, arg_8, 00000014h)
loc_00405D9A: GoTo loc_00406167
loc_00405D9F: End If
loc_00405DA1: call On Error ...(00000001h)
loc_00405DB1: If ebx <= 20 Then
loc_00405DBA: call eax+000002FCh(arg_8)
loc_00405DD5: call edx+40h(eax+000002FCh(arg_8), ebx, "", "", eax+000002FCh(arg_8))
loc_00405DF9: var_24 = ctrMSComm.OutBufferSize
loc_00405E17: movsx(edi, bx)
loc_00405E1D: If "" >= 32 Then
loc_00405E1F: Call MSVBVM60.DLL.__vbaGenerateBoundsError()
loc_00405E25: End If
loc_00405E2E: Call MSVBVM60.DLL.__vbaStrCopy()
loc_00405E53: call eax+000002FCh(arg_8)
loc_00405EC1: neg(edi)
loc_00405EC3: sbb(edi, edi)
loc_00405EC5: edi = (frmMain.Fontname = 0040428Ch) + 1
loc_00405EC6: neg(edi)
loc_00405EE7: If (frmMain.Fontname = 0040428Ch) + 1 = 0 Then
loc_00405EEE: 00000001h = 00000001h + bx
loc_00405EF1: If Err.Number <> 0 Then GoTo loc_004061CA
loc_00405EFB: GoTo loc_00405DA9
loc_00405F00: End If
loc_00405F05: var_64 = 80020004h
loc_00405F0D: var_6C = 10
loc_00405F10: var_54 = 80020004h
loc_00405F13: var_5C = 10
loc_00405F16: var_44 = 80020004h
loc_00405F19: var_4C = 10
loc_00405F1C: var_74 = "ÂSpe'#13'Ný€'#9'gzz"
loc_00405F23: GoTo loc_00406121
loc_00405F28: End If
loc_00405F65: var_24 = cboComPort.Text
loc_00405F8D: call MSVBVM60.DLL.__vbaFpI2("", 409010h, 409010h, "", eax+000002FCh(arg_8), eax+000002FCh(arg_8), eax+000002FCh(arg_8), eax+000002FCh(arg_8), eax+000002FCh(arg_8))
loc_00405F93: var_74 = MSVBVM60.DLL.__vbaFpI2("", 409010h, 409010h, "", eax+000002FCh(arg_8), eax+000002FCh(arg_8), eax+000002FCh(arg_8), eax+000002FCh(arg_8), eax+000002FCh(arg_8))
loc_00405F9C: var_7C = 2
loc_00405FD1: call MSVBVM60.DLL.__vbaLateIdSt(arg_8, "", arg_8, arg_8, 00000004h)
loc_00405FEC: eax = "" Or FFFFFFFFh
loc_00405FEF: var_74 = "" Or FFFFFFFFh
loc_00405FF7: var_7C = 11
loc_00406021: call MSVBVM60.DLL.__vbaLateIdSt(var_70, "", var_70, arg_8, 00000014h, 0000000Bh)
loc_00406033: Call Err()
loc_00406050: ctrMSComm.CDHolding = ""
loc_00406079: var_B0 = var_B0 - 00001F42h
loc_0040607E: GoTo loc_00405FFE
loc_00406080: var_B0 = var_B0 - 00000003h
loc_00406083: If var_B0 = 0 Then
loc_0040608E: var_64 = 80020004h
loc_00406099: var_54 = 80020004h
loc_0040609F: var_44 = 80020004h
loc_004060A5: var_74 = "å‹2NãSò]Ï~«Ë†`S(u,"
loc_004060AC: var_7C = 8
loc_004060D1: MsgBox("å‹2NãSò]Ï~«Ë†`S(u,", 00000000h, 10, 10, 10)
loc_004060FC: GoTo loc_00406167
loc_00406103: var_64 = 80020004h
loc_0040610E: var_54 = 80020004h
loc_00406114: var_44 = 80020004h
loc_0040611A: var_74 = "å‹ïzãSàeHe,"
loc_00406121: 'Referenced from 00405F23
loc_00406121: var_7C = 8
loc_00406146: MsgBox(10, 00000000h, 10, 10, 10)
loc_00406167: End If
loc_00406167: End If
loc_00406167: call Exit Sub(Err)
loc_00406173: GoTo loc_004061AA
loc_004061A9: Exit Sub
loc_004061AA: 'Referenced from 00406173
loc_004061AA: Exit Sub
loc_004061C7: Exit Sub
loc_004061CA: 'Referenced from 0405EF1
loc_004061CA: Call MSVBVM60.DLL.__vbaErrorOverflow()
End Sub

Public Sub ReceiveDisplay(ByVal strAdd, ByVal intColor) '406930
loc_00406955: var_8 = &H4011D0
loc_00406971: %x1 = frmMain.Width = %x1 = frmMain.Width + 00000002h
loc_00406977: If Err.Number <> 0 Then GoTo loc_00407124
loc_004069CF: call ReDim Preserve(00000080h, 00000004h, frmMain.Top = %x1, 00000003h, 00000001h, %x1 = frmMain.Width, arg_8, frmMain.Top = %x1)
loc_004069DC: If ebx <> edi Then
loc_004069E2: If ebx = 1 Then
loc_004069ED: %x1 = frmMain.Width = %x1 = frmMain.Width - 00000001h
loc_004069F0: If Err.Number <> 0 Then GoTo loc_00407124
loc_004069F6: %x1 = frmMain.Width = %x1 = frmMain.Width - edx
loc_004069FD: var_B8 = %x1 = frmMain.Width
loc_00406A03: If %x1 = frmMain.Width >= frmMain.GetTypeInfo Then
loc_00406A05: Call MSVBVM60.DLL.__vbaGenerateBoundsError()
loc_00406A11: End If
loc_00406A1E: GoTo loc_00406A2C
loc_00406A20: End If
loc_00406A20: End If
loc_00406A20: Call MSVBVM60.DLL.__vbaGenerateBoundsError()
loc_00406A2C: 'Referenced from 00406A1E
loc_00406A4D: call MSVBVM60.DLL.__vbaLateIdCallLd(""4, "", "", MSVBVM60.DLL.__vbaGenerateBoundsError, arg_8, FFFFFDFBh, %x1 = IsSet(%x2) 'Ignore this)
loc_00406A57: call MSVBVM60.DLL.__vbaStrVarMove(MSVBVM60.DLL.__vbaLateIdCallLd(""4, "", "", MSVBVM60.DLL.__vbaGenerateBoundsError, arg_8, FFFFFDFBh, %x1 = IsSet(%x2))
loc_00406A62: var_2C = MSVBVM60.DLL.__vbaStrVarMove(MSVBVM60.DLL.__vbaLateIdCallLd(""4, "", "", MSVBVM60.DLL.__vbaGenerateBoundsError, arg_8, FFFFFDFBh, %x1 = IsSet(%x2))
loc_00406A9C: If ebx <> 0 Then
loc_00406AA2: If ebx = 1 Then
loc_00406AAD: rtfReceive.MaxLength = %x1 = rtfReceive.MaxLength = %x1 - ""
loc_00406ABA: If rtfReceive.MaxLength = %x1 >= frmMain.GetTypeInfo Then
loc_00406ABC: Call MSVBVM60.DLL.__vbaGenerateBoundsError()
loc_00406AC8: End If
loc_00406ACF: GoTo loc_00406AD7
loc_00406AD1: End If
loc_00406AD1: End If
loc_00406AD1: Call MSVBVM60.DLL.__vbaGenerateBoundsError()
loc_00406AD7: 'Referenced from 00406ACF
loc_00406B00: call MSVBVM60.DLL.__vbaLateIdCallLd(""4, "", "", MSVBVM60.DLL.__vbaGenerateBoundsError, FFFFFDFBh, 00000000h)
loc_00406B0A: call MSVBVM60.DLL.__vbaStrVarMove(MSVBVM60.DLL.__vbaLateIdCallLd(""4, "", "", MSVBVM60.DLL.__vbaGenerateBoundsError, FFFFFDFBh, 00000000h))
loc_00406B2E: var_5C = MSVBVM60.DLL.__vbaStrVarMove(MSVBVM60.DLL.__vbaLateIdCallLd(""4, "", "", MSVBVM60.DLL.__vbaGenerateBoundsError, FFFFFDFBh, 00000000h)) & edx
loc_00406B4A: var_74 = 8 & @Chr(0000000Dh)
loc_00406B51: Call MSVBVM60.DLL.__vbaStrVarMove(var_74)
loc_00406B61: var_84 = 8
loc_00406B67: var_7C = MSVBVM60.DLL.__vbaStrVarMove(var_74)
loc_00406B91: Call MSVBVM60.DLL.__vbaLateIdSt(var_78, "", var_78, arg_8, FFFFFDFBh)
loc_00406BDD: rtfReceive.MaxLength = %x1 = rtfReceive.MaxLength = %x1 - 00000001h
loc_00406BE0: var_8C = 2
loc_00406BEC: If Err.Number <> 0 Then GoTo loc_00407124
loc_00406C2F: var_AC = 1
loc_00406C39: For var_24 = 1 To 3 Step ""
loc_00406C41: If ""C <> 0 Then
loc_00406C4E: call MSVBVM60.DLL.__vbaAryLock("", frmMain.Top = %x1, ""C, "", 2, 3, 2)
loc_00406C59: If "" <> 0 Then
loc_00406C5F: If var_28 = 1 Then
loc_00406C65: var_24 = @CLng(%x2)
loc_00406C71: var_24 = var_24 - ebx
loc_00406C78: var_B8 = var_24
loc_00406C7E: If var_24 >= frmMain.GetTypeInfo Then
loc_00406C80: Call MSVBVM60.DLL.__vbaGenerateBoundsError()
loc_00406C8C: End If
loc_00406C8C: shl eax, 02h
loc_00406C8F: GoTo loc_00406C97
loc_00406C91: End If
loc_00406C91: End If
loc_00406C91: Call MSVBVM60.DLL.__vbaGenerateBoundsError()
loc_00406C97: 'Referenced from 00406C8F
loc_00406CA2: frmMain.GetTypeInfoCount = frmMain.GetTypeInfoCount + MSVBVM60.DLL.__vbaGenerateBoundsError
loc_00406CA9: var_94 = &H4003
loc_00406CDF: call MSVBVM60.DLL.__vbaLateIdSt("", "", var_90, arg_8, 00000008h)
loc_00406CE9: Call MSVBVM60.DLL.__vbaAryUnlock("")
loc_00406D01: rtfReceive.MaxLength = %x1 = rtfReceive.MaxLength = %x1 - 00000001h
loc_00406D0C: If Err.Number <> 0 Then GoTo loc_00407124
loc_00406D22: Call MSVBVM60.DLL.__vbaVarTstLt(&H8003, var_24)
loc_00406D2D: If ebx <> 0 Then
loc_00406D35: If ebx <> 0 Then
loc_00406D3B: If ebx = 1 Then
loc_00406D44: var_8C = 2
loc_00406D53: var_F4 = frmMain.Top = %x1
loc_00406D65: var_44 = var_24 & 2
loc_00406D6C: var_44 = @CLng(%x2)
loc_00406D7B: var_44 = ""4 - ""4
loc_00406D82: var_B8 = ""4
loc_00406D88: If ""4 >= frmMain.GetTypeInfo Then
loc_00406D8A: Call MSVBVM60.DLL.__vbaGenerateBoundsError()
loc_00406D96: End If
loc_00406D96: shl eax, 02h
loc_00406D99: GoTo loc_00406DA1
loc_00406D9B: End If
loc_00406D9B: End If
loc_00406D9B: Call MSVBVM60.DLL.__vbaGenerateBoundsError()
loc_00406DA1: 'Referenced from 00406D99
loc_00406DAB: If ebx <> 0 Then
loc_00406DB1: If ebx = 1 Then
loc_00406DB9: var_F4 = frmMain.Top = %x1
loc_00406DBF: var_24 = @CLng(%x2)
loc_00406DCE: var_24 = var_24 - var_24
loc_00406DD5: var_BC = var_24
loc_00406DDB: If var_24 >= frmMain.GetTypeInfo Then
loc_00406DDD: Call MSVBVM60.DLL.__vbaGenerateBoundsError()
loc_00406DE9: End If
loc_00406DE9: shl eax, 02h
loc_00406DEC: GoTo loc_00406DF4
loc_00406DEE: End If
loc_00406DEE: End If
loc_00406DEE: Call MSVBVM60.DLL.__vbaGenerateBoundsError()
loc_00406DF4: 'Referenced from 00406DEC
loc_00406E02: edx(+ecx = edx + ecx - edx + eax)
loc_00406E0A: var_A4 = 3
loc_00406E10: If Err.Number <> 0 Then GoTo loc_00407124
loc_00406E4B: call MSVBVM60.DLL.__vbaLateIdSt("", "", var_A0, arg_8, 00000005h)
loc_00406E5A: GoTo loc_00406F64
loc_00406E5F: End If
loc_00406E61: If "" <> 0 Then
loc_00406E67: If var_30 = 1 Then
loc_00406E6F: var_F4 = frmMain.Top = %x1
loc_00406E75: var_24 = @CLng(%x2)
loc_00406E84: var_24 = var_24 - ecx+14h
loc_00406E8B: var_B8 = var_24
loc_00406E91: If Then
loc_00406E93: Call MSVBVM60.DLL.__vbaGenerateBoundsError()
loc_00406E9F: End If
loc_00406E9F: shl eax, 02h
loc_00406EA2: GoTo loc_00406EAA
loc_00406EA4: End If
loc_00406EA4: End If
loc_00406EA4: Call MSVBVM60.DLL.__vbaGenerateBoundsError()
loc_00406EAA: 'Referenced from 00406EA2
loc_00406ECC: call MSVBVM60.DLL.__vbaLateIdCallLd(""4, MSVBVM60.DLL.__vbaGenerateBoundsError, "", MSVBVM60.DLL.__vbaGenerateBoundsError, arg_8, FFFFFDFBh, 00000000h)
loc_00406ED6: call MSVBVM60.DLL.__vbaStrVarMove(MSVBVM60.DLL.__vbaLateIdCallLd(""4, MSVBVM60.DLL.__vbaGenerateBoundsError, "", MSVBVM60.DLL.__vbaGenerateBoundsError, arg_8, FFFFFDFBh, 00000000h))
loc_00406EE1: var_2C = MSVBVM60.DLL.__vbaStrVarMove(MSVBVM60.DLL.__vbaLateIdCallLd(""4, MSVBVM60.DLL.__vbaGenerateBoundsError, "", MSVBVM60.DLL.__vbaGenerateBoundsError, arg_8, FFFFFDFBh, 00000000h))
loc_00406EF9: Len(var_2C) = Len(var_2C) - edx + ecx
loc_00406F01: var_94 = 3
loc_00406F07: If Err.Number <> 0 Then GoTo loc_00407124
loc_00406F10: var_8C = Len(var_2C)
loc_00406F42: call MSVBVM60.DLL.__vbaLateIdSt(var_88, "", var_88, arg_8, 00000005h)
loc_00406F64: 'Referenced from 00406E5A
loc_00406F71: If ebx <> 0 Then
loc_00406F77: If ebx = 1 Then
loc_00406F7E: var_F4 = frmMain.Top = %x1
loc_00406F90: var_8C = 1
loc_00406FA4: var_44 = var_24 & 2
loc_00406FAB: var_44 = @CLng(%x2)
loc_00406FC1: var_B8 = ""4
loc_00406FC7: If Then
loc_00406FC9: Call MSVBVM60.DLL.__vbaGenerateBoundsError()
loc_00406FD5: End If
loc_00406FD5: shl eax, 02h
loc_00406FD8: GoTo loc_00406FE0
loc_00406FDA: End If
loc_00406FDA: End If
loc_00406FDA: Call MSVBVM60.DLL.__vbaGenerateBoundsError()
loc_00406FE0: 'Referenced from 00406FD8
loc_00406FFD: eax = "" - 1
loc_00406FFE: If "" - 1 <> 0 Then
loc_00407000: eax = "" - 1 - 1
loc_00407001: If "" - 1 - 1 <> 0 Then
loc_00407003: eax = "" - 1 - 1 - 1
loc_00407004: If "" - 1 - 1 - 1 = 0 Then
loc_0040700D: GoTo loc_00407021
loc_0040700F: End If
loc_00407018: GoTo loc_00407023
loc_0040701A: End If
loc_00407021: 'Referenced from 0040700D
loc_00407033: var_94 = 3
loc_00407039: var_8C = RGB(00000000h, 000000FFh, 00000000h)
loc_00407069: call MSVBVM60.DLL.__vbaLateIdSt(var_88, "", var_88, arg_8, 0000000Dh, 000000FFh, 00000000h, 00000000h, 00000000h)
loc_00407078: End If
loc_0040708A: Next var_24
loc_00407090: GoTo loc_00406C3F
loc_00407095: End If
loc_0040709A: GoTo loc_004070E2
loc_004070A0: call MSVBVM60.DLL.__vbaAryUnlock("", 00407105h, "")
loc_004070E1: Exit Sub
loc_004070E2: 'Referenced from 0040709A
loc_00407104: Exit Sub
loc_00407121: Exit Sub
loc_00407124: 'Referenced from 0406977
loc_00407124: Call MSVBVM60.DLL.__vbaErrorOverflow()
End Sub
 
Gangster.....

There are a ton of VB guys around.
I have VB at work but I never touched it. I think my office mate may still have it on his computer, I will try to remember on Monday.

-methods
 
That's interesting!.. we will finally be able to program that controler !

Just a question Methods... do you know where to connect the usb data transfer cable you provided wit hthe kit?.. I see just 5V.. and gnd on the board.. have you any pics?

I would love to be able to program it before my run on 17 june !

Doc
 
You can program it right now. Just follow the instructions for software installation and do the translation by hand.
All the work is already done.

You use the same programming holes as the normal infineons.
The USB cable I sent you has a header on it.
Plug this header into the row of pins right below the chip - cant miss it.
There will be one extra hole. With the wires exiting toward the edge of the board, you want to go to the far left. There will be an empty hole to the right of the plug.
You can confirm this by seeing that the red and orange wires (which are tied together in the USB cable) will go to the +5V line and the black will go to ground.
Once you solder it in then just bend the header from 90 degrees to point straight up (so the wires can clear the case).

Dude... If you can assemble two 24ch BMS boards in one night you can have your controller programmed in about 7 minutes...
Install the header and install the software.
Remember that the Absolute value for the current must be scaled to the new shunt.

Was this description clear enough or do you need a picture?

-methods
 
methods said:
You can program it right now. Just follow the instructions for software installation and do the translation by hand.
All the work is already done.

You use the same programming holes as the normal infineons.
The USB cable I sent you has a header on it.
Plug this header into the row of pins right below the chip - cant miss it.
There will be one extra hole. With the wires exiting toward the edge of the board, you want to go to the far left. There will be an empty hole to the right of the plug.
You can confirm this by seeing that the red and orange wires (which are tied together in the USB cable) will go to the +5V line and the black will go to ground.
Once you solder it in then just bend the header from 90 degrees to point straight up (so the wires can clear the case).

Dude... If you can assemble two 24ch BMS boards in one night you can have your controller programmed in about 7 minutes...
Install the header and install the software.
Remember that the Absolute value for the current must be scaled to the new shunt.

Was this description clear enough or do you need a picture?

-methods

Thanks Methods, i'll do that. i was just hesitating about the extra hole... and that i just see the +5 and gnd.. and no tx rx pins...

i'll not program it right now cause i want to see how it work without changing anything.. I just hop ethat the new Uc from the Crystalyte have the same features than the infineon!.. dont forget.. this is a UC coming from Crystalyte controller! :|
So i dont know if it also have the code that allow it to have parameters changed...like the infineon...

What i know i sthat the crystalyte 18 fets is rated 48A and the infineon 65A.. :| .. si i guess that the new Uc i've installed is preseted to 48A (factory programation). but the shunt have now 0.793mohm.. ( if i remember correctly the stock shunt habe 1.3mohm right?.. the conversion factor would set it to 1.64x... so the new current value would we 72.7A...

BUT.. I also installed a 10K pot + a 4.7K in serie to replace the R44 10K resistor that set the current sensing amplification that the Uc read...

So i now have a 72A controller adjustable manually with external pot.. I guess that i can adjust the new value from 25 to 175A... but i'll kep safe value from now.


Something strange is that i've adjusted the ZERO current on the cycle analyst by supplying the controller power negative connected AFTER the shunt.. to have an accurate Zero amp reading and having no offset or false gain....

And i've discovered that at 40V supply it draw like 120mA and that at 65V it draw 70mA.. but this is normally a "linear regulator" and not switching so current should be linear? :?

anyway... that controller seems working well now.

Doc
 
Modified Infineon tested !!!

MAX current 148A.. minimum volt 93V total power: 13764Watt in a 5302!

Speed test measurement coming!!!

BUT I removed the external pot and resistor cause the that induced alot of noise and alarmous current spikes at low RPM

I left the R44 normal and just kept the 6 shunts

it seems that for 150A, 6 shunt IS THE KEY !!

Doc
 
Doctorbass said:
Modified Infineon tested !!!

MAX current 148A.. minimum volt 93V total power: 13764Watt in a 5302!

Speed test measurement coming!!!

BUT I removed the external pot and resistor cause the that induced alot of noise and alarmous current spikes at low RPM

I left the R44 normal and just kept the 6 shunts

it seems that for 150A, 6 shunt IS THE KEY !!

Doc
good to hear doc.
are those shunts still the M shaped ones from the infineons or are you using diffrent shunts?

Geoff
 
geoff57 said:
Doctorbass said:
Modified Infineon tested !!!

MAX current 148A.. minimum volt 93V total power: 13764Watt in a 5302!

Speed test measurement coming!!!

BUT I removed the external pot and resistor cause the that induced alot of noise and alarmous current spikes at low RPM

I left the R44 normal and just kept the 6 shunts

it seems that for 150A, 6 shunt IS THE KEY !!

Doc
good to hear doc.
are those shunts still the M shaped ones from the infineons or are you using diffrent shunts?

Geoff

They are the M shape.. I just took two from the old soft start controller and paralleled them to the 4 actual shunt.

The swing arm of the bike SWING alot when i push the throttle!! :shock: .. The inertia of the wheel even though it's a 20".. seems enormous.. but it take under a second to reach 78MPH no load

Doc
 
doc
can you give me an opinon as to the speed I might get with one of my latest bikes,a chopper design with a 5303 in the front 26" wheel strong steel forks with stainless steel torque arms both sides, 72v 13ah NiMh battery pack in the front triangle low and close to the front as possible i will use a 18 fet controller for it.
It is the first time with this size of motor what might I expect out of it, your speeds are scaring me for long tearm use cant wait to see a vid of it going.

Geoff
 
geoff57 said:
doc
can you give me an opinon as to the speed I might get with one of my latest bikes,a chopper design with a 5303 in the front 26" wheel strong steel forks with stainless steel torque arms both sides, 72v 13ah NiMh battery pack in the front triangle low and close to the front as possible i will use a 18 fet controller for it.
It is the first time with this size of motor what might I expect out of it, your speeds are scaring me for long tearm use cant wait to see a vid of it going.

Geoff


at 48V 40A a 5303 on 26" wheel get around 63kph

so at 72V taking acount of the wind factor i would say 80kph +/- 5kph

Doc
 
:shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock:


NEW DATA COMING DROM LAST TEST :twisted: :

172.3A at 88V drop ( crazy A123 :mrgreen: ) 15162Watts

The max speed recorded: WITH STILL INCREDIBLE TORQUE AVAILLABLE: 84.7kph I did not goes faster cause it was on a normal blvrd with PUT HOLES!!



That beast will certainly beat the actual world record guys!!! :twisted: :twisted: :mrgreen:

Motor temp after 30sec run: 72celsius.. .and the controller came hot at 55 degree C

INFINEON 18 FETS REALLY ROCK !!!!

Doc
 
Glad you are finally having some fun doc.
I would like to see if you can get the current up around 300A peak.
Let me know. Highest I was ever able to pull with my Kelley was a little over 200A

I have been selling a few kits so I ordered some new parts.
This week I will have the 5 conductor wire in stock for extending the hall sensors.
I will also have the following:

* 2W 3K resistors for fixing the 12V regulator "base" resistors
* 2W 1.8K, 1.5K, 680 for adjusting the regulator current
* Diodes for the ebrake circuit and CA speed control

I ordered wire in spools of 100' this time so I may be able to pass on a little savings (few bucks).
I replenished my stock of all the pigtailed connectors, Anderson connectors, etc. so if people need mating connectors that wont be a problem.

I am running low on 4110's so if anyone wants a large quantity let me know now so I can order ahead.

I have put together everything for 14 complete kits. As soon as the 5 conductor wire comes in I will cut it and pack the kits up.
These kits are still for select "experienced" members.

I am still working on the 10 fully built units (they need wires). I will probably end up building those for extreme power then testing them rigorously. After I know each one works perfectly I will sell them to people who "dont want to get their hands dirty" for a non-DIY price.

-methods
 
OH BOY OH BOY OH BOY OH BOY!!!!
My new toys hare started arriving!

Behold - the most amazing tool of all time...... The Anderson Crimper :!: :!:

View attachment 7

It makes the most beautiful crimps on the 45A anderson connectors when using 10AWG wire.
Completely effortless and perfect.
I could not be more pleased.
I still hit them with a little solder (up at the tip) for insurance but I dont wick it back up the wire so I get the best of both worlds.

Fets_On_008.jpg
Fets_On_009.jpg

If you have ever tried to make 45A anderson connections to 10AWG wire without the special tool you will know what hell it can be...
Sure it is easy enough to crimp them, but getting them to fit into the housing is nearly impossible.
Some people just shove them in there with force, but that fubar's the connection. The tabs must move freely in the housing. :wink:



Here is the new shielded hall wire.
Note that there are 5 insulated conductors, a strain relief, a non-insulated additional ground wire, foil, and the outer sleeve.
This is good copper wire that will hold up to some abuse.

Fets_On_001.jpg
Fets_On_002.jpg


This is the conformal coating I am going to try on the first batch of 10 fully built boards. It is a Silicone base. We will see how it works. I tried coating a few of the fets with it where the insulation gap was tight and it went on very thin and clean. Below is my favorite flux remover. This stuff has got to be illegal it works so good :D

Fets_On_003.jpg
View attachment 1


I am getting my routine down for putting the kits together. I picked up additional sizes of ziploc bags so now I can get all the parts of the kit ready and just throw them in the box. I timed myself tonight - 12 seconds to put a kit together :mrgreen: (nevermind the endless hours I spend counting screws, cutting wire, repackaging fets, inspecting boards.... :roll: )

Fets_On_010.jpg

It is not shown here but I have a production line where i just grab 1 item out of each box so I am sure not to miss anything.
Any time I have a spare moment (like when the wife says she is ready to leave and then goes back into the bathroom :evil: :roll: :? ) I sit down and start bagging - Anderson connector packs or screw packs or resistor packs... Just getting it all together.

Very relaxing :wink:

-methods
 
hi
stop press
Keywin has come through with a traslation of the software for the new boards I have a copy for anyone who wants it.
below is a screenshot of his program
software screenshot.jpg
i have included a copy of the file in compressed format .ACE and .ZIP

Geoff
 

Attachments

  • Parameter Designer For 116.ace
    12.8 KB · Views: 190
  • Parameter Designer For 116.zip
    13.8 KB · Views: 2,166
:roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll:

Finally

Stop the press is right. :mrgreen: Thats great news.
Thanks for bringing this to us Geoff. You are a superstar.

That Keywin.... He sure likes to keep us in suspense :?
Better late then never though I guess.

So - Time for Doc to check and see if the Crystalyte boards are still programmable.
This could spell trouble for retailers everywhere - The day of the warranty just ended with that post.
Now anybody who buys a kit from Crystalyte can bump their current without leaving a trace of evidence.

This will be interesting to watch unfold... :)

I need to get this wedding behind me so I can get back in the action. You guys are making all the progress while I have done nothing for months.

-methods
 
geoff57 said:
hi
stop press
Keywin has come through with a traslation of the software for the new boards I have a copy for anyone who wants it.
Geoff
So, there are two version of this software at the XC website, one for the Xie-Chang EB8xxXC Infineon-based controllers, and one for the EB2xxXC proprietary-MCU-based (XCKJ8B116A) controllers. This release supports the latter, because the proprietary MCU is in this 18FET version.

Will Keywin get the newer software release for the Infineon controllers translated as well?
 
Those use the old firmware - as far as I know that software has been released in the Technical section for a long time.

It would be great if I am mistaken.

-methods
 
Ok, ok... You guys beat me down :mrgreen:

All boards now get the "3K base mod"
This is how I did mine.




On another note, I am on the hunt for LOW ESR 160V 1000uF caps.
I know that Doc posted a link but I am not convinced that those are LOW ESR.
The documentation does not call out any specifications and that is generally a bad sign :?

I would rather run a few 500uF caps with ultra low ESR so...
If anybody is a Capacitor geek, please help us out.

Lets keep them radial and as small as possible.

-methods
 
geoff57 said:
hi
stop press
Keywin has come through with a traslation of the software for the new boards I have a copy for anyone who wants it.

Excellent! Now I just might need a translation of the translation :|
 
fechter said:
Excellent! Now I just might need a translation of the translation :|


Lol... yea, not the best, but once you work with the parameters a little it starts to make sense in a Keywin sort of way :mrgreen:
This set of software has some cool new features that were not present in the last set.
I am excited to start trying them out.
I just got a controller going for myself and I am going to take my first ebike ride in a month :eek:

btw: Is anyone else having luck with the (SM) pin?
I have always just tapped directly into the hall sensors for my CA but this time I tried to get clever and use the SM.
No dice. (That will teach me to try to be clever :roll: )

My guess is that Keywin forgot to populate something - similar to the D32 for the ebrake.

I suppose for now we can just tap the halls directly.
That is what I have always done and I have yet to be sorry
(but there is always time for that ...)

-methods
 
Ok.... :?

Q1 is not populated.
I an pretty sure it is used to drive (SM) (Amplified hall signal).

If anyone talks to Keywin before I do, please ask him what BJT to use for Q1
(and while you are at it, ask him why the hell he did not bother to populate mine :eek: )

I guess it would not be rocket science to figure it out from the pads
All there is is (GND) (INPUT SIG) (OUTPUT SIG).
Output goes through 100 ohms then hits the SM pin.
Input comes through what looks like 10K

So I am guessing GND is the emitter, INPUT is the base, and output is the collector.
It is active low so I guess it is expecting to be pulled up externally?

It has been a long time... but... I suppose that would need to be an NPN right?
(writing nothing but software has washed most all the basic electronics information right out of my head :mrgreen: )

-methods
 
Methods, I am about 90% done assembling the controller. I try to avoid as much mistakes as possible. I appreciate if you can answer the following questions:

1. How do you configure the resistors network in 48V, 72V, 100V? I have read Knucles threads and he mentioned the LM317 voltage regular should be between 12V & 40V. Also, The battery voltage drop about 6.5V for every 100 ohms. Is that true? If so, the value to use would be 300 ohms for 48V, 600 ohms for 72V, 1K for 100V? Since I received 3 x 1.5K, 3 x 1.8K, and 1 X 680 ohm resistors, should I parallel a set of 3 to get the actual value? Ex. 3 x 1.5K parallel = 500 ohm?

2. What is the 6th lead wire use for on the throttle connector?

3. On the CA connector, do you wire the Ebrake to the EB+ or EB- ?

4. On the CA connector, where to wire the Hall to the amplified hall circuitry on the board?

5. Is the ON/OFF switch use for enable the controller circuitry? If so, should I connect the VB2+ & Vcc-L?

Lastly, can you take a picture of your fully assembled unit top & buttom especially the wiring details?

Thank you! :)
 
It shouldn't be hard to translate the translation using a hex editor, as I can actually recognize and type in the characters.

I think I may cross-reference a past post, and translate it for you guys. Or, I'll try anyways. :mrgreen:
 
Back
Top