weirddave Posted September 2, 2014 Posted September 2, 2014 I have created a Gui with a number of GUICtrlCreateButton() When I click on them with the mouse, the response by my script is very slow (1-2 secs), but if I navigate the buttons using the arrow keys and activate them with the Enter key, the response is fairly instant. Has anyone else seen this, and perhaps solved it? Dave
Moderators Melba23 Posted September 2, 2014 Moderators Posted September 2, 2014 weirddave,Perhaps posting your script so we can test it might be good idea. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
weirddave Posted September 2, 2014 Author Posted September 2, 2014 I can, but it's not going to be easy for anyone to run it as it is pulling in data over USB. it also relies on some ini files. expandcollapse popupGlobal $GUIHandle = 0 Global $GUI2Handle = 0 Global $bb = 1 Global $repeats = 0 Global $Do HotKeySet("{ESC}", "_ExitLoop") Global $hDll_ntdll = DllOpen("ntdll.dll") Dim $bitarray[8]=[1,2,4,8,16,32,64,128] #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <EditConstants.au3> #include <StaticConstants.au3> #include <ColorConstants.au3> #include <ButtonConstants.au3> #include <Math.au3> #include <Timers.au3> #include <FTD2XX.dll_UDF.au3> $IniFile = @ScriptDir&"\FPGA_Comms.ini" $Combined = Number(IniRead ($IniFile,"Settings","Combined",1)) $IniArray = IniReadSection($IniFile, "Ini_List") $NoInis = $IniArray[0][0] $buttonHeight = 20 $width = 150 $height = $NoInis * $buttonHeight $GUIHandle = GUICreate ( "FPGA Comms (Esc to quit)" , $width , $height ,-1,-1,BitOR($WS_MINIMIZEBOX , $WS_CAPTION)) Dim $IniButtonArray[$NoInis +1] For $b = 1 to $NoInis $IniButtonArray[$b] = GUICtrlCreateButton($IniArray[$b][0],0,($b-1)*$buttonHeight,$width,$buttonHeight) Next GUISetState(@SW_SHOW, $GUIHandle) $IniFile = "" while $IniFile = "" $msg = GUIGetMsg() if $msg = $GUI_EVENT_CLOSE then _Terminate() For $b = 1 to $NoInis if $msg = $IniButtonArray[$b] then $IniFile = @ScriptDir&"\"&$IniArray[$b][1] endif next if $bb = $repeats then _Terminate() sleep(1) wend GUIDelete($GUIHandle) Dim $ButtonArray = IniReadSection($IniFile, "Buttons") if Not @error then $NoButs = $ButtonArray[0][0] else $NoButs = 0 endif $Ini_Name = @ScriptDir&"\"&IniRead ($IniFile,"Settings","DataIniFile","") $repeats = Number(IniRead ($IniFile,"Settings","repeats",0)) $outstring = IniRead ($IniFile,"Settings","outstring","T") $interval = Number(IniRead ($IniFile,"Settings","interval",1000))*1000 $datalength = Number(IniRead ($IniFile,"Settings","datalength",1)) $PartName = IniRead ($IniFile,"Settings","Part","") $LabelsPerCol = Number(IniRead ($IniFile,"Settings","LabelsPerCol",40)) $stepping = 1 if $repeats = 0 then $repeats = 1 $stepping = 0 endif $IniSectionArray = IniReadSectionNames($Ini_Name) $LabelHeight = 16 $ListWidth = 32 $ListHeight = $LabelHeight if Mod($IniSectionArray[0],$LabelsPerCol)>0 then $t=1 Else $t=0 endif $Columns = int($IniSectionArray[0]/$LabelsPerCol)+$t $GUIHandle = GUICreate ( "" , 10 , 10) Dim $LabelWidths[$Columns] Dim $ColumnWidths[$Columns+1] $ColumnWidths[0]=0 $width = 160 if $Combined <> 1 Then $width = 0 EndIf if $NoButs = 0 then $width = 0 EndIf For $b = 0 to $Columns-1 $LabelWidths[$b]=0 For $a=$LabelsPerCol*$b +1 to _Min($LabelsPerCol*($b+1),$IniSectionArray[0]) $tt = GUICtrlCreateLabel ( $IniSectionArray[$a], 0, 0) $t = ControlGetPos ( $GUIHandle, "", $tt) GUICtrlDelete ($tt) If $t[2] > $LabelWidths[$b] Then $LabelWidths[$b] = $t[2] EndIF Next $ColumnWidths[$b+1] = $ListWidth + $LabelWidths[$b] $width = $width + $ColumnWidths[$b+1] Next $GUIHandle = GUIDelete($GUIHandle) $height = _Min($IniSectionArray[0],$LabelsPerCol) * $LabelHeight if $Combined = 1 Then $height = _Max($NoButs*40,_Min($IniSectionArray[0],$LabelsPerCol) * $LabelHeight) endif $GUIHandle = GUICreate ( "FPGA Data (Esc to quit)" , $width , $height ,-1,-1,BitOR($WS_MINIMIZEBOX , $WS_CAPTION)) Dim $Data_Array[$IniSectionArray[0]] Dim $Label_Array[$IniSectionArray[0]] For $a = 1 to $IniSectionArray[0] $Column = int(($a-1)/$LabelsPerCol) $X = 0 for $b = 0 to $Column $X = $X + $ColumnWidths[$b] next $Row = $a - ($LabelsPerCol*$Column)-1 $Label_Array[$a-1] = GUICtrlCreateLabel ( $IniSectionArray[$a], $X, $Row*$LabelHeight, $LabelWidths[$Column] , $LabelHeight ,BitOR($SS_SUNKEN,$SS_CENTER)) $Data_Array[$a-1] = GUICtrlCreateLabel ( "", $X + $LabelWidths[$Column], $Row*$LabelHeight , $ListWidth, $ListHeight, BitOR($SS_SUNKEN,$SS_CENTER)) GUICtrlSetColor($Data_Array[$a-1], $COLOR_RED) GUICtrlSetBkColor($Data_Array[$a-1], $COLOR_WHITE) $t=ControlGetPos ( $GUIHandle, "", $Label_Array[$a-1]) Next GUISetState(@SW_SHOW, $GUIHandle) if $NoButs > 0 then if $Combined <> 1 Then $GUI2Handle = GUICreate ( "Control" , 150 , $NoButs*40 ,-1,-1,$WS_MINIMIZEBOX + $WS_CAPTION + $WS_POPUP) EndIf $buttonX = $width-150 If $Combined <> 1 Then $buttonX = 0 EndIf Dim $GUIButtonArray[$NoButs +1] For $b = 1 to $NoButs $GUIButtonArray[$b] = GUICtrlCreateButton($ButtonArray[$b][0],$buttonX+0,($b-1)*40,150,40) next if $Combined <> 1 Then GUISetState(@SW_SHOW, $GUI2Handle) EndIf endif $Do = _FT_CreateDeviceInfoList($lpdwNumDevs) If $Do <> 0 then msgbox(0,"","Something wrong!") _Terminate() endif $Do = _FT_GetDeviceInfoList($pDest, $lpdwNumDevs) $NumDevices = DllStructGetData($lpdwNumDevs, 1) If $NumDevices < 1 then msgbox(0,"","No part attached") _Terminate() Else $iDevice = -1 for $pvArg1 = 0 to $NumDevices - 1 $pvArg2 = DllStructCreate('char[100]') $Do = _FT_ListDevices($pvArg1, $pvArg2, BitOR($FT_LIST_BY_INDEX, $FT_OPEN_BY_SERIAL_NUMBER)) $Part = DllStructGetData($pvArg2,1) if $Part = $PartName Then if $iDevice = -1 Then $iDevice = $pvArg1 ;msgbox(0,$iDevice,$Part) Else msgbox(0,"","More than 1 Device found!") _Terminate() EndIf EndIf Next If $iDevice = -1 Then msgbox(0,"","Part "&$PartName&" Not Found") _Terminate() EndIf EndIf $Do = _FT_Open($iDevice, $fthandle) If $Do <>0 then msgbox(0,"","Failed to Open Port," & _USBFT_ErrorDescription($Do)) _Terminate() endif $Do = _FT_SetBaudRate($FT_HANDLE, 250000) $uWordLength = $FT_BITS_8 $uStopBits = $FT_STOP_BITS_1 $uParity = $FT_PARITY_NONE $Do = _FT_SetDataCharacteristics($FT_HANDLE, $uWordLength, $uStopBits, $uParity) $usFlowControl = $FT_FLOW_NONE $uXon = 'A' $uXoff = 'C' $Do = _FT_SetFlowControl($FT_HANDLE, $usFlowControl, $uXon, $uXoff) $framcounter = 0 _FT_Purge($FT_HANDLE, BitOR($FT_PURGE_RX, $FT_PURGE_TX)) $starttime = _Timer_Init() for $bb = $stepping to $repeats step $stepping $t="" $msg = GUIGetMsg() if $msg = $GUI_EVENT_CLOSE then _ExitLoop() if $NoButs > 0 then For $b = 1 to $NoButs if $msg = $GUIButtonArray[$b] then $t = $ButtonArray[$b][1] endif next endif $t=$t&$outstring ;msgbox(0,"","["&$t&"]") _FT_Purge($FT_HANDLE, BitOR($FT_PURGE_RX, $FT_PURGE_TX)) DllStructSetData($lpBuffer, 1, $t) $dwBytesToWrite = StringLen($t) $Do = _FT_Write($FT_HANDLE, $lpBuffer, $dwBytesToWrite, $lpdwBytesWritten) $framcounter = $framcounter + 1 $starttime2 = _Timer_Init() $Do = _FT_GetStatus($FT_HANDLE, $lpdwAmountInRxQueue, $lpdwAmountInTxQueue, $lpdwEventStatus) ;msgbox(0,"", DllStructGetData($lpdwAmountInTxQueue, 1)) $dwBytesToRead = 0 while $dwBytesToRead <$datalength $Do = _FT_GetStatus($FT_HANDLE, $lpdwAmountInRxQueue, $lpdwAmountInTxQueue, $lpdwEventStatus) $dwBytesToRead = DllStructGetData($lpdwAmountInRxQueue, 1) ;msgbox(0,"",$dwBytesToRead) if _Timer_Diff($starttime)>5000 then msgbox(0,"Rx issue","Rx Timeout") _ExitLoop() exitloop endif sleep(1) wend if DllStructGetData($lpdwAmountInRxQueue, 1) > $datalength then msgbox(0,"Rx Issue",DllStructGetData($lpdwAmountInRxQueue, 1)&" Bytes, expected: "&$datalength) endif if $bb < $repeats then $dwBytesToRead = DllStructGetData($lpdwAmountInRxQueue, 1) DllStructSetData($lpBuffer, 1, '') $Do = _FT_Read($FT_HANDLE, $lpBuffer, $dwBytesToRead, $lpdwBytesReturned) if $Do <> 0 then msgbox(0,"","oh") ;msgbox(0,"",$dwBytesToRead) ;msgbox(0,"",DllStructGetData($lpdwBytesReturned,1)) $data=DllStructGetData($lpBuffer, 1) ;msgbox(0,"",$data) for $a = 0 to $IniSectionArray[0]-1 $Sect = $IniSectionArray[$a+1] $Bytes = IniRead ( $Ini_Name, $Sect, "Bytes",0) $SectData="" If $Bytes = 0 Then $ByteNum = IniRead ( $Ini_Name,$Sect,"Byte",-1) $Bits = IniRead ( $Ini_Name,$Sect,"Bits",-1) If $Bits = -1 Then If BitAND ($bitarray[IniRead ( $Ini_Name,$Sect,"Bit",-1)] , Dec(StringMid($data,($ByteNum*2)+3,2))) >0 Then $SectData = 1 Else $SectData = 0 EndIf Else For $b = $Bits to 1 step -1 If BitAND ($bitarray[IniRead ( $Ini_Name,$Sect,"Bit"&$b,-1)] , Dec(StringMid($data,($ByteNum*2)+3,2))) >0 Then $SectData = $SectData + 2^($b-1) EndIf Next EndIf Else For $b = $Bytes to 1 step -1 $ByteNum = IniRead ( $Ini_Name,$Sect,"Byte"&$b,-1) $SectData = $SectData & StringMid($data,($ByteNum*2)+3,2) Next EndIf GUICtrlSetData ($Data_Array[$a], $SectData) Next $t = int(_Timer_Diff($starttime)*1000) If $t < $interval Then _HighPrecisionSleep(($interval-$t)) EndIf $starttime = _Timer_Init() Else ExitLoop endif next _Terminate() Func _ExitLoop() $bb = $repeats EndFunc Func _Terminate() ;if $Do <> 0 then _FT_Close($FT_HANDLE) If $GUIHandle > 1 Then GUIDelete($GUIHandle) EndIf If $GUI2Handle > 1 Then GUIDelete($GUI2Handle) EndIf DllClose($hDll_ntdll) Exit EndFunc Func _HighPrecisionSleep($iSleep) DllCall($hDll_ntdll, "dword", "NtDelayExecution", "int", 0, "int64*", -10 * $iSleep) EndFunc here's FPGA_Comms.ini [Settings] Combined = 1 [Ini_List] GLM_V1 = GLM_Lone_Test_settings.ini 73_Digital_OP_Test = 73_Digital_OP_Settings.ini 73_Digital = 73_Digital_Settings.ini 73_Digital_settings.ini [Settings] DataIniFile = 73_Digital_data.ini LabelsPerCol = 46 repeats = 0 interval = 500 datalength = 128 outstring = T Part = GLM_V1 [Buttons] Reset Faults = R MTU Control = M MTU Up = N MTU Down = P O/P Test Mode Enable = o Next = N Previous = P Toggle Output = t Loadbank Mode = L Ammeter Test = A Speedo Test = S Probe Sim = p Probe 1 Speed Toggle = 1 Probe 2 Speed Toggle = 2 Probe 3 Speed Toggle = 3 Probe 4 Speed Toggle = 4 And here's 73_Digital_data.ini expandcollapse popup[Speedo Test Active] Byte = 30 Bit = 6 OK = 1 [Probe Sim Active] Byte = 39 Bit = 7 OK = 1 [Probe 1 Speed] Byte = 38 Bit = 4 [Probe 2 Speed] Byte = 38 Bit = 5 [Probe 3 Speed] Byte = 38 Bit = 6 [Probe 4 Speed] Byte = 38 Bit = 7 [Ammeter Test Active] Byte = 30 Bit = 7 OK = 1 [Loadbank Mode Active] Byte = 39 Bit = 0 OK = 1 [MTU Mode Active] Byte = 39 Bit = 1 OK = 1 [O/P Test Mode Active] Byte = 19 Bit = 7 OK = 1 [Output Selected] Bytes = 1 Byte1 = 27 ;[FIELD I LIMITED] ;Byte = 14 ;Bit = 6 ;Flt = 1 ;[AUX I LIMITED] ;Byte = 12 ;Bit = 5 ;Flt = 1 ;[ARM1 I LIMITED] ;Byte = 12 ;Bit = 7 ;Flt = 1 ;[ARM2 I LIMITED] ;Byte = 13 ;Bit = 0 ;Flt = 1 ;[ARM3 I LIMITED] ;Byte = 13 ;Bit = 1 ;Flt = 1 ;[ARM4 I LIMITED] ;Byte = 13 ;Bit = 2 ;Flt = 1 ;[FIELD SERVO FAULT] ;Byte = 14 ;Bit = 3 ;Flt = 1 ;[AUX SERVO FAULT] ;Byte = 14 ;Bit = 4 ;Flt = 1 ;[ARM1 SERVO FAULT] ;Byte = 13 ;Bit = 7 ;Flt = 1 ;[ARM2 SERVO FAULT] ;Byte = 14 ;Bit = 0 ;Flt = 1 ;[ARM3 SERVO FAULT] ;Byte = 14 ;Bit = 1 ;Flt = 1 ;[ARM4 SERVO FAULT] ;Byte = 14 ;Bit = 2 ;Flt = 1 ;[Field ILOCK] ;Byte = 14 ;Bit = 5 ;Flt = 0 ;[AUX ILOCK] ;Byte = 12 ;Bit = 4 ;Flt = 0 ;[PROT ILOCK] ;Byte = 12 ;Bit = 6 ;Flt = 0 ;[A1 ILOCK] ;Byte = 13 ;Bit = 3 ;Flt = 0 ;[A2 ILOCK] ;Byte = 13 ;Bit = 4 ;Flt = 0 ;[A3 ILOCK] ;Byte = 13 ;Bit = 5 ;Flt = 0 ;[A4 ILOCK] ;Byte = 13 ;Bit = 6 ;Flt = 0 ;[Probe 1 Supply OK] ;Byte = 18 ;Bit = 4 ;Flt = 0 ;[Probe 2 Supply OK] ;Byte = 18 ;Bit = 5 ;Flt = 0 ;[Probe 3 Supply OK] ;Byte = 18 ;Bit = 6 ;Flt = 0 ;[Probe 4 Supply OK] ;Byte = 18 ;Bit = 7 ;Flt = 0 [Current Balance Relay] Byte = 0 Bit = 7 Flt = 0 [Field Overload relay] Byte = 1 Bit = 1 Flt = 0 [Arm1 Overload] Byte = 2 Bit = 3 Flt = 0 [Arm 2 Overload] Byte = 2 Bit = 4 Flt = 0 [Arm 3 Overload] Byte = 2 Bit = 5 Flt = 0 [Arm 4 Overload] Byte = 2 Bit = 6 Flt = 0 [TM1 Isolation Switch] Byte = 1 Bit = 3 OK = 1 [O/P 04 Close TM1 Armature] Byte = 20 Bit = 4 OK = 1 [Armature Contactor 1 Proving] Byte = 1 Bit = 7 OK = 1 [O/P 08 Motor 1 Isolate Indicator] Byte = 21 Bit = 0 Flt = 1 [O/P 14 TM1 Field Isolator] Byte = 22 Bit = 4 Flt = 0 [Field 4 Isolator Proving] Byte = 2 Bit = 7 Flt = 0 [TM2 Isolation Switch] Byte = 1 Bit = 4 OK = 1 [O/P 05 Close TM2 Armature] Byte = 20 Bit = 5 OK = 1 [Armature Contactor 2 Proving] Byte = 2 Bit = 0 OK = 1 [O/P 09 Motor 2 Isolate Indicator] Byte = 21 Bit = 1 Flt = 1 [O/P 15 TM2 Field Isolator] Byte = 22 Bit = 5 Flt = 0 [Field 2 Isolator Proving] Byte = 3 Bit = 0 Flt = 0 [TM3 Isolation Switch] Byte = 1 Bit = 5 OK = 1 [O/P 06 Close TM3 Armature] Byte = 20 Bit = 6 OK = 1 [Armature Contactor 3 Proving] Byte = 2 Bit = 1 OK = 1 [O/P 0A Motor 3 Isolate Indicator] Byte = 21 Bit = 2 Flt = 1 [O/P 16 TM3 Field Isolator] Byte = 22 Bit = 6 Flt = 0 [Field 3 Isolator Proving] Byte = 3 Bit = 1 Flt = 0 [TM4 Isolation Switch] Byte = 1 Bit = 6 OK = 1 [O/P 07 Close TM4 Armature] Byte = 20 Bit = 7 OK = 1 [Armature Contactor 4 Proving] Byte = 2 Bit = 2 OK = 1 [O/P 0B Motor 4 Isolate Indicator] Byte = 21 Bit = 3 Flt = 1 [O/P 17 TM4 Field Isolator] Byte = 22 Bit = 7 Flt = 0 [Field 4 Isolator Proving] Byte = 3 Bit = 2 Flt = 0 [O/P 38 Fan Stop] Byte = 28 Bit = 0 [O/P 26 Derate] Byte = 24 Bit = 6 [O/P 25 Power Earth Fault] Byte = 24 Bit = 5 [O/P 23 Either Cab Active] Byte = 24 Bit = 3 OK = 1 [O/P 22 Wheelslip Indicator] Byte = 24 Bit = 2 Flt = 1 [O/P 20 General Fault] Byte = 24 Bit = 0 Flt = 1 [O/P 21 ETS ON indicator] Byte = 24 Bit = 1 OK = 1 [O/P 1F Automatic Sanding] Byte = 23 Bit = 7 PK = 1 [O/P 1D Gx ON] Byte = 23 Bit = 5 OK = 1 [Gx Contactor Proving] Byte = 4 Bit = 2 OK = 1 [O/P 12 Engine Stop] Byte = 22 Bit = 2 [O/P 0C SSF] Byte = 21 Bit = 4 [NVR] Byte = 0 Bit = 0 [O/P 37 Close HSCB] Byte = 26 Bit = 7 OK = 1 [HSCB Proving] Byte = 0 Bit = 1 OK = 1 [HSCB 0] Byte = 19 Bit = 0 [HSCB 1] Byte = 19 Bit = 1 [Shoe Valve Close] Byte = 0 Bit = 2 [O/P 02 Close Line] Byte = 20 Bit = 2 OK = 1 [Line Contactor Proving] Byte = 0 Bit = 3 OK = 1 [O/P 10 Reverser FWD] Byte = 22 Bit = 0 [Reverser FWD Proving] Byte = 0 Bit = 4 [O/P 11 Reverser REV] Byte = 22 Bit = 1 [Reverser REV Proving] Byte = 0 Bit = 5 [O/P 01 Close Pre-Charge] Byte = 20 Bit = 1 OK = 1 [Pre Charge Proving] Byte = 0 Bit = 6 OK = 1 [O/P 03 Close TM Field] Byte = 20 Bit = 3 OK = 1 [Field Contactor Proving] Byte = 1 Bit = 0 OK = 1 [Fire Alarm Return] Byte = 1 Bit = 2 ;[Auxiliary Changeover 1 proving] ;Byte = 3 ;Bit = 3 ;[Auxiliary Changeover 2 proving] ;Byte = 3 ;Bit = 4 ;[Auxiliary Changeover 3 proving] ;Byte = 3 ;Bit = 5 ;[Auxiliary Changeover 4 proving] ;Byte = 3 ;Bit = 6 ;[Auxiliary Changeover 5 proving] ;Byte = 3 ;Bit = 7 ;[Auxiliary Changeover 6 proving] ;Byte = 4 ;Bit = 0 ;[Auxiliary Changeover 7 proving] ;Byte = 4 ;Bit = 1 [Traction Motor Blower 1 CB Proving] Byte = 4 Bit = 3 OK = 1 [Traction Motor Blower 2 CB Proving] Byte = 4 Bit = 4 OK = 1 [Engine Room Fan CB Proving] Byte = 4 Bit = 5 OK = 1 [Line Inductor Fan CB Proving] Byte = 4 Bit = 6 OK = 1 [Compressor CB Proving] Byte = 4 Bit = 7 [O/P 0E Close train Heat Contactor] Byte = 21 Bit = 6 [Train Heat Contactor Proving] Byte = 5 Bit = 0 [Train Heat Overload] Byte = 5 Bit = 1 [Chopper Fan PSU Breaker Proving] Byte = 5 Bit = 2 [Pressure Low] Byte = 5 Bit = 3 [74V DVT Trainline PSU ON] Byte = 5 Bit = 4 [Loadbank Pressure Switch Interlock] Byte = 5 Bit = 5 [Reset Relay] Byte = 5 Bit = 6 [MTU DC Link Voltage Reached] Byte = 5 Bit = 7 [O/P 00 Electric/Diesel Changeover] Byte = 20 Bit = 0 [Mode Changeover Proving N/O] Byte = 6 Bit = 0 [Mode Changeover Proving N/C] Byte = 6 Bit = 1 [Engine Running] Byte = 6 Bit = 2 [Alarm- MTU Eng Cold] Byte = 6 Bit = 3 [PEFR Power Detected] Byte = 6 Bit = 4 [PEFR –Ve Earth Fault] Byte = 6 Bit = 5 [Alarm - MTU Derate] Byte = 6 Bit = 6 [Control Earth Fault] Byte = 6 Bit = 7 [PEFR +Ve Earth Fault] Byte = 7 Bit = 0 [Earth Fault Iso Switch (Diesel Only)] Byte = 7 Bit = 1 [Master Switch Forward] Byte = 7 Bit = 2 OK = 1 [Master Switch Reverse] Byte = 7 Bit = 3 OK = 1 [Cab 1 Active] Byte = 7 Bit = 4 OK = 1 [Cab 2 Active] Byte = 7 Bit = 5 OK = 1 [Diesel Mode] Byte = 7 Bit = 6 [Electric Mode / Engine Stop] Byte = 7 Bit = 7 [Engine Start] Byte = 8 Bit = 0 [Reset] Byte = 8 Bit = 1 [Up/Mast Run Back] Byte = 8 Bit = 2 OK = 1 [Up/Mast Hold] Byte = 8 Bit = 3 OK = 1 [Up/Mast Series] Byte = 8 Bit = 4 OK = 1 [Up/Mast Parallel] Byte = 8 Bit = 5 OK = 1 [Up/Mast Notch Up / Weak Field] Byte = 8 Bit = 6 OK = 1 [Up/Mast OFF – Cab 2] Byte = 8 Bit = 7 OK = 1 [Up/Mast OFF – Cab 1] Byte = 9 Bit = 0 OK = 1 [Low/Mast AAR Input A] Byte = 9 Bit = 1 OK = 1 [Low/Mast AAR Input B] Byte = 9 Bit = 2 OK = 1 [Low/Mast AAR Input C] Byte = 9 Bit = 3 OK = 1 [Low/Mast AAR Input D] Byte = 9 Bit = 4 OK = 1 [Low/Mast Power On] Byte = 9 Bit = 5 OK = 1 [Low/Mast Active] Byte = 9 Bit = 6 OK = 1 [Low/Mast Engine Start Enable] Byte = 9 Bit = 7 OK = 1 [ETS CMD] Byte = 10 Bit = 0 [Low/Mast Diesel On] Byte = 10 Bit = 1 OK = 1 [Up/Mast Diesel On] Byte = 10 Bit = 2 OK = 1 [Smart Relay Status] Byte = 10 Bit = 3 [Webasto Status] Byte = 10 Bit = 4 [Electric Pre-Heat Status] Byte = 10 Bit = 5 [Battery Charger Input Contactor proving] Byte = 10 Bit = 6 [Compressor Over Temp] Byte = 10 Bit = 7 [O/P 28 Inverter 1 Contactor] Byte = 25 Bit = 0 [Inverter 1 OK] Byte = 11 Bit = 0 [O/P 29 Inverter 2 Contactor] Byte = 25 Bit = 1 [Inverter 2 OK] Byte = 11 Bit = 1 [O/P 2A Inverter 3 Contactor] Byte = 25 Bit = 2 [Inverter 3 OK] Byte = 11 Bit = 2 [O/P 2B Inverter 4 Contactor] Byte = 25 Bit = 3 [Inverter 4 OK] Byte = 11 Bit = 3 [O/P 2C Battery Charger Contactor] Byte = 25 Bit = 4 [Battery Charger OK] Byte = 11 Bit = 4 [Low Fuel Warning] Byte = 11 Bit = 5 [74V DVT PSU Ok] Byte = 11 Bit = 6 [LINE OVLD] Byte = 11 Bit = 7 [PEF (ELECTRIC)] Byte = 12 Bit = 0 [ENGINE O/LD] Byte = 12 Bit = 1 [ENGINE U/LD] Byte = 12 Bit = 2 [LOAD CTRL ACTIVE] Byte = 12 Bit = 3 Flt = 1 [FCT2_LO] Byte = 14 Bit = 7 [FCT3_LO] Byte = 15 Bit = 0 [FCT4_LO] Byte = 15 Bit = 1 [FCT5_LO] Byte = 15 Bit = 2 [FCT6_LO] Byte = 15 Bit = 3 [MICRO WD] Byte = 15 Bit = 4 [Zero Current] Byte = 15 Bit = 5 ;[ARM1 FAN1] ;Byte = 15 ;Bit = 6 ;[ARM1 FAN2] ;Byte = 15 ;Bit = 7 ;[ARM2 FAN1] ;Byte = 16 ;Bit = 0 ;[ARM2 FAN2] ;Byte = 16 ;Bit = 1 ;[ARM3 FAN1] ;Byte = 16 ;Bit = 2 ;[ARM3 FAN2] ;Byte = 16 ;Bit = 3 ;[ARM4 FAN1] ;Byte = 16 ;Bit = 4 ;[ARM4 FAN2] ;Byte = 16 ;Bit = 5 ;[FIELD FAN1] ;Byte = 16 ;Bit = 6 ;[FIELD FAN2] ;Byte = 16 ;Bit = 7 ;[PROT FAN1] ;Byte = 17 ;Bit = 0 ;[PROT FAN2] ;Byte = 17 ;Bit = 1 ;[AUX FAN1] ;Byte = 17 ;Bit = 2 ;[AUX FAN2] ;Byte = 17 ;Bit = 3 ;[TEST DI1] ;Byte = 17 ;Bit = 4 ;[TEST DI2] ;Byte = 17 ;Bit = 5 ;[TEST DI3] ;Byte = 17 ;Bit = 6 ;[TEST DI4] ;Byte = 17 ;Bit = 7 ;[TEST DI5] ;Byte = 18 ;Bit = 0 ;[TEST DI6] ;Byte = 18 ;Bit = 1 [TEST DI7] Byte = 18 Bit = 2 [TEST DI8] Byte = 18 Bit = 3 [Fan24v OK] Byte = 19 Bit = 2 [Probe 1] Byte = 19 Bit = 3 [Probe 2] Byte = 19 Bit = 4 [Probe 3] Byte = 19 Bit = 5 [Probe 4] Byte = 19 Bit = 6 [Mode State] Bytes = 1 Byte1 = 31 [IO I/P Fault] Byte = 32 Bit = 0 Flt = 1 [IO O/P Fault] Byte = 32 Bit = 1 Flt = 1 [PreCharge Bank] Bytes = 1 Byte1 = 33 [Speed] Bytes = 2 Byte1 = 34 Byte2 = 35 [Fram_Trig1/3] Bytes = 1 Byte1 = 36 [Fram_Trig4] Byte = 37 Bit = 0 [Fram_Trig2] Byte = 37 Bit = 1 [PEF_E_Flt] Byte = 32 Bit = 2 Flt = 1 [LineOvI_Flt] Byte = 32 Bit = 3 Flt = 1 [TMA_OVL_Flt(0)] Byte = 32 Bit = 4 [TMA_OVL_Flt(1)] Byte = 32 Bit = 5 [TMA_OVL_Flt(2)] Byte = 32 Bit = 6 [TMA_OVL_Flt(3)] Byte = 32 Bit = 7 [TMF_OVL_Flt] Byte = 37 Bit = 2 [Filt_Flt] Byte = 37 Bit = 4 [PC_Flt_Latched] Byte = 37 Bit = 3 [PEF_E_Latched] Byte = 37 Bit = 5 [LineOvI_Latched] Byte = 37 Bit = 6 [TMA_OVL_Latched1] Byte = 37 Bit = 7 [TMA_OVL_Latched2] Byte = 38 Bit = 0 [TMA_OVL_Latched3] Byte = 38 Bit = 1 [TMA_OVL_Latched4] Byte = 38 Bit = 2 [TMF_OVL_Latched] Byte = 38 Bit = 3 [INV C OK 1] Byte = 39 Bit = 2 [INV C OK 2] Byte = 39 Bit = 3 [INV C OK 3] Byte = 39 Bit = 4 [INV C OK 4] Byte = 39 Bit = 5 [BC C OK] Byte = 39 Bit = 6 [Power Calc] Bytes = 2 Byte1 = 40 Byte2 = 41 [MTU NBit 0] Byte = 23 Bit = 0 OK = 1 [MTU NBit 1] Byte = 23 Bit = 1 OK = 1 [MTU NBit 2] Byte = 23 Bit = 2 OK = 1 [MTU NBit 3] Byte = 23 Bit = 3 OK = 1 [MTU NBit 4] Byte = 23 Bit = 4 OK = 1 [TM 1 On] Byte = 42 Bit = 0 OK = 1 [TM 2 On] Byte = 42 Bit = 1 OK = 1 [TM 3 On] Byte = 42 Bit = 2 OK = 1 [TM 4 On] Byte = 42 Bit = 3 OK = 1 [O/P 39 Protection LED] Byte = 28 Bit = 1 [O/P 3A Protection G/nR] Byte = 28 Bit = 2 Flt = 0 [O/P 3B Aux LED] Byte = 28 Bit = 3 [O/P 3C Aux G/nR] Byte = 28 Bit = 4 Flt = 0 [O/P 3D Field LED] Byte = 28 Bit = 5 [O/P 3E Field G/nR] Byte = 28 Bit = 6 Flt = 0 [O/P 3F Arm LED 1] Byte = 28 Bit = 7 [O/P 40 Arm LED 2] Byte = 29 Bit = 0 [O/P 41 Arm LED 3] Byte = 29 Bit = 1 [O/P 42 Arm LED 4] Byte = 29 Bit = 2 [O/P 43 ARM 1 G/nR] Byte = 29 Bit = 3 Flt = 0 [O/P 44 ARM 2 G/nR] Byte = 29 Bit = 4 Flt = 0 [O/P 45 ARM 3 G/nR] Byte = 29 Bit = 5 Flt = 0 [O/P 46 ARM 4 G/nR] Byte = 29 Bit = 6 Flt = 0 [O/P 47 ARM 1 PWM Off] Byte = 29 Bit = 7 OK = 0 [O/P 48 ARM 2 PWM Off] Byte = 30 Bit = 0 OK = 0 [O/P 49 ARM 3 PWM Off] Byte = 30 Bit = 1 OK = 0 [O/P 4A ARM 4 PWM Off] Byte = 30 Bit = 2 OK = 0 [O/P 4B Field PWM Off] Byte = 30 Bit = 3 OK = 0 [O/P 4C Aux PWM Off] Byte = 30 Bit = 4 OK = 0 [Load Clamp] Bytes = 2 Byte1 = 64 Byte2 = 65 [Eng Load] Bytes = 2 Byte1 = 66 Byte2 = 67 [V Line] Bytes = 2 Byte1 = 68 Byte2 = 69 [V Filt] Bytes = 2 Byte1 = 70 Byte2 = 71 [I TS] Bytes = 2 Byte1 = 72 Byte2 = 73 [V Rect] Bytes = 2 Byte1 = 74 Byte2 = 75 [I Aux] Bytes = 2 Byte1 = 76 Byte2 = 77 [V Aux] Bytes = 2 Byte1 = 78 Byte2 = 79 [Temp Arm 1] Bytes = 2 Byte1 = 80 Byte2 = 81 [Temp Arm 2] Bytes = 2 Byte1 = 82 Byte2 = 83 [Temp Arm 3] Bytes = 2 Byte1 = 84 Byte2 = 85 [Temp Arm 4] Bytes = 2 Byte1 = 86 Byte2 = 87 [Temp Field] Bytes = 2 Byte1 = 88 Byte2 = 89 [Temp Aux] Bytes = 2 Byte1 = 90 Byte2 = 91 [Temp Prot] Bytes = 2 Byte1 = 92 Byte2 = 93 [Temp LI1] Bytes = 2 Byte1 = 94 Byte2 = 95 [Temp LI2] Bytes = 2 Byte1 = 96 Byte2 = 97 [I Shoe 1] Bytes = 2 Byte1 = 98 Byte2 = 99 [I Shoe 2] Bytes = 2 Byte1 = 100 Byte2 = 101 [Pot 1] Bytes = 2 Byte1 = 102 Byte2 = 103 [Pot 2] Bytes = 2 Byte1 = 104 Byte2 = 105 [Pot 3] Bytes = 2 Byte1 = 106 Byte2 = 107 [Pot 4] Bytes = 2 Byte1 = 108 Byte2 = 109 [Temp Cubicle] Bytes = 2 Byte1 = 110 Byte2 = 111 [Temp Ambient] Bytes = 2 Byte1 = 112 Byte2 = 113 [IA DMD] Bytes = 2 Byte1 = 114 Byte2 = 115 [IA DMD 1] Bytes = 2 Byte1 = 116 Byte2 = 117 [IA DMD 2] Bytes = 2 Byte1 = 118 Byte2 = 119 [IA DMD 3] Bytes = 2 Byte1 = 120 Byte2 = 121 [IA DMD 4] Bytes = 2 Byte1 = 122 Byte2 = 123 [IF DMD] Bytes = 2 Byte1 = 124 Byte2 = 125 [V Lim] Bytes = 2 Byte1 = 126 Byte2 = 127 [V trac] Bytes = 2 Byte1 = 62 Byte2 = 63 [Eng Ready] Byte = 30 Bit = 5 OK = 1 That will be enough to make the last button work on the first window. Bypassing the USB comms will be interesting! (and yes, I know it's a mess, It's grown a bit randomly as new features were added)
Moderators Melba23 Posted September 2, 2014 Moderators Posted September 2, 2014 weirddave,That is of no help at all. You provide a reproducer script that shows the delay and I will happily help you debug it, but just posting a mess of code which does not even have all the UDFs needed (what is FTD2XX.dll_UDF.au3?) and which you admit will not be easy to run is not going to tempt me, nor I suspect anyone else, to spend time looking at it in detail. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
weirddave Posted September 3, 2014 Author Posted September 3, 2014 OK, I will attempt to come up with something a bit more useful, it'll probably be a couple of days before I get the time to play again...
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