#include #include #include #include #include #include #include #include #include #include #include "EzMySql.au3" #include #include #include #include #include #include Run("PictureTest.au3") $shuttle = 0 Local $job = "12345" Local $tsk = "01" Local $sMySqlStatement = "" Local $aArray Local $aArray_Base[0][4] Local $bArray[5] Local $bArray_Base[5] Global $total = IniRead(@ScriptDir & "\settings.ini", "CURRENT", "total", "") Global $failed = IniRead(@ScriptDir & "\settings.ini", "CURRENT", "FAILED", "") Global $good = IniRead(@ScriptDir & "\settings.ini", "CURRENT", "GOOD", "") Global $pal = IniRead(@ScriptDir & "\settings.ini", "CURRENT", "PALLET", "") Global $aOk Global $comp = "0" Global $timeout = IniRead(@ScriptDir & "\settings.ini", "CURRENT", "MISSED", "") Global $dbfault = IniRead(@ScriptDir & "\settings.ini", "CURRENT", "DB FAULT", "") Local $lock = 0 Global $server = IniRead(@ScriptDir & "\settings.ini", "SQL", "SERVER", "") Global $user = IniRead(@ScriptDir & "\settings.ini", "SQL", "USER", "") Global $pass = IniRead(@ScriptDir & "\settings.ini", "SQL", "PASS", "") Global $inst = IniRead(@ScriptDir & "\settings.ini", "SQL", "INSTANCE", "") Global $head = IniRead(@ScriptDir & "\settings.ini", "HEADER", "EXT0", "") Global $hds = IniRead(@ScriptDir & "\settings.ini", "HEADER", "START", "") Global $hdf = IniRead(@ScriptDir & "\settings.ini", "HEADER", "END", "") $bArray[0] = IniRead(@ScriptDir & "\settings.ini", "FAILED", "FAIL1", "update.bmp") If $bArray[0] = "" Then $bArray[0] = "update.bmp" $bArray[1] = IniRead(@ScriptDir & "\settings.ini", "FAILED", "FAIL2", "update.bmp") If $bArray[1] = "" Then $bArray[1] = "update.bmp" $bArray[2] = IniRead(@ScriptDir & "\settings.ini", "FAILED", "FAIL3", "update.bmp") If $bArray[2] = "" Then $bArray[2] = "update.bmp" Global $port = IniRead(@ScriptDir & "\settings.ini", "ARDUINO", "PORT", "1") Global $baud = IniRead(@ScriptDir & "\settings.ini", "ARDUINO", "BAUD", "19200") Global $shuttle = IniRead(@ScriptDir & "\settings.ini", "ARDUINO", "SHUTTLE", "0") Global $abc = "" Global $avArray, $trayArray $pos = 0 $alt = 0 $old = 0 LoadTrayTagInfo() ;This is the file that is currently being worked on ;Line 351 enable when 2 nic cards for loading jobs Global $TCPMAXLENGTH = IniRead(@ScriptDir & "\settings.ini", "SETTINGS", "TCPMAXLENGTH", "") Global $CAMERAIP = IniRead(@ScriptDir & "\settings.ini", "SETTINGS", "CAMERAIP", "") Global $TCPPORT = IniRead(@ScriptDir & "\settings.ini", "SETTINGS", "TCPPORT", "") Global $DATAPORT = IniRead(@ScriptDir & "\settings.ini", "SETTINGS", "TCPPORT2", "") Global $job = IniRead(@ScriptDir & "\settings.ini", "CURRENT", "JOB", "") Global $tsk = IniRead(@ScriptDir & "\settings.ini", "CURRENT", "TASK", "") Global $tray = IniRead(@ScriptDir & "\settings.ini", "CURRENT", "TRAY", "") Global $ttype = IniRead(@ScriptDir & "\settings.ini", "CURRENT", "TYPE", "") Global $ReadBarcodes Global $Connection Global $Connection2 Global $Host Global $imbprefix Global $string = "" $oldtray = $tray #Region ### START GUI section ### $Form1_1 = GUICreate("HighSpeed =======>>Camera", 1205, 591, 198, 129, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_THICKFRAME, $WS_TABSTOP)) $Group1 = GUICtrlCreateGroup("Camera Details", 816, 224, 385, 241) GUICtrlSetFont(-1, 20, 800, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Label3 = GUICtrlCreateLabel("Failed Reads:", 823, 348, 167, 33) GUICtrlSetFont(-1, 18, 800, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Label5 = GUICtrlCreateLabel("Good Reads:", 823, 309, 157, 33) GUICtrlSetFont(-1, 18, 800, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Label25 = GUICtrlCreateLabel("Timeouts:", 823, 390, 202, 33) GUICtrlSetFont(-1, 18, 800, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Label7 = GUICtrlCreateLabel($good, 1065, 309, 127, 33) GUICtrlSetFont(-1, 18, 400, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Label25 = GUICtrlCreateLabel("DB Write Faults:", 823, 428, 189, 33) GUICtrlSetFont(-1, 18, 800, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Label27 = GUICtrlCreateLabel($dbfault, 1065, 428, 127, 33) GUICtrlSetFont(-1, 18, 400, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Label8 = GUICtrlCreateLabel("Processed Triggers:", 823, 268, 243, 33) GUICtrlSetFont(-1, 18, 800, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Label12 = GUICtrlCreateLabel($failed, 1065, 348, 127, 33) GUICtrlSetFont(-1, 18, 400, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Label2 = GUICtrlCreateLabel($total, 1065, 268, 127, 33) GUICtrlSetFont(-1, 18, 400, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Label26 = GUICtrlCreateLabel($timeout, 1065, 390, 127, 33) GUICtrlSetFont(-1, 18, 400, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) GUICtrlCreateGroup("", -99, -99, 1, 1) $Label1 = GUICtrlCreateLabel("", 176, 532, 556, 41) GUICtrlSetFont(-1, 24, 400, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Progress1 = GUICtrlCreateProgress(100, 480, 457, 30) ;$LBS_NOSEL for no selected box $List1 = GUICtrlCreateList("", 4, 232, 805, 93, BitOR($LBS_NOTIFY, $WS_VSCROLL, $WS_BORDER), 0) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT) GUICtrlSetFont(-1, 12, 400, 0, "Arial") GUICtrlSetData(-1, "Waiting for Job") $Pic1 = GUICtrlCreatePic(@ScriptDir & "\bg-test.jpg", 0, 0, 800, 100) $Pic2 = GUICtrlCreatePic(@ScriptDir & "\white.jpg", 800, 0, 404, 100) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKHEIGHT) $Group2 = GUICtrlCreateGroup("Pallet", 372, 104, 203, 121) GUICtrlSetFont(-1, 20, 800, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Label44 = GUICtrlCreateLabel($pal, 381, 137, 186, 79, $SS_CENTER) GUICtrlSetFont(-1, 48, 800, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) GUICtrlCreateGroup("", -99, -99, 1, 1) $Group3 = GUICtrlCreateGroup("Tray", 594, 103, 217, 121) GUICtrlSetFont(-1, 20, 800, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Label15 = GUICtrlCreateLabel($tray, 612, 136, 182, 79, $SS_CENTER) GUICtrlSetFont(-1, 48, 800, 0, "Arial") GUICtrlSetColor(-1, 0x008000) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) GUICtrlCreateGroup("", -99, -99, 1, 1) $Group4 = GUICtrlCreateGroup("Job Number", 4, 104, 217, 121) GUICtrlSetFont(-1, 20, 800, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Label16 = GUICtrlCreateLabel($job, 13, 137, 180, 79) GUICtrlSetFont(-1, 48, 800, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) GUICtrlCreateGroup("", -99, -99, 1, 1) $Group6 = GUICtrlCreateGroup("Package", 232, 104, 123, 121) GUICtrlSetFont(-1, 20, 800, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Label14 = GUICtrlCreateLabel($tsk, 241, 137, 76, 79, $SS_CENTER) GUICtrlSetFont(-1, 48, 800, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) GUICtrlCreateGroup("", -99, -99, 1, 1) $Group5 = GUICtrlCreateGroup("Functions", 816, 472, 385, 113) GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Button1 = GUICtrlCreateButton("Load Job", 824, 488, 107, 41) GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Button2 = GUICtrlCreateButton("Connect DB", 824, 536, 107, 41) GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Button4 = GUICtrlCreateButton("Zero", 936, 536, 107, 41) GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Button3 = GUICtrlCreateButton("Run", 936, 488, 251, 41) GUICtrlSetFont(-1, 8, 800, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlCreateGroup("", -99, -99, 1, 1) $Pic3 = GUICtrlCreatePic(@ScriptDir & "\snapshots\" & $bArray[0], 10, 335, 200, 130) $Pic4 = GUICtrlCreatePic(@ScriptDir & "\snapshots\" & $bArray[1], 220, 335, 200, 130) $Pic5 = GUICtrlCreatePic(@ScriptDir & "\snapshots\" & $bArray[2], 430, 335, 200, 130) GUICtrlSetResizing(-1, $GUI_DOCKHCENTER + $GUI_DOCKVCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Label6 = GUICtrlCreateLabel("IMB:", 104, 532, 68, 41) GUICtrlSetFont(-1, 24, 400, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKHCENTER + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $Group7 = GUICtrlCreateGroup("Tray Size/Type", 816, 104, 385, 121) GUICtrlSetFont(-1, 20, 800, 0, "MS Sans Serif") $Label45 = GUICtrlCreateLabel(GetTrayCode($ttype), 826, 157, 358, 50, $SS_CENTER) GUICtrlSetFont(-1, 30, 800, 0, "Arial") GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) GUISetState(@SW_SHOW) #EndRegion ### START GUI section ### GUICtrlSetState($Progress1, $GUI_Hide) GUICtrlSetState($Button2, $GUI_DISABLE) GUICtrlSetData($Progress1, 0) ZeroCounts() ;===================load settings==================== $files = "19083001" ;GUISetOnEvent($GUI_EVENT_CLOSE,"exitprogram") GUICtrlSetData($Label16, $job) GUICtrlSetData($Label14, $tsk) ;arduino($port,$baud) opendatabase() If $lock = 1 Then GUICtrlSetState($Button2, $GUI_ENABLE) GUICtrlSetState($Button3, $GUI_DISABLE) GUICtrlSetState($Button1, $GUI_DISABLE) EndIf If $job <> "" And $lock = 0 Then GUICtrlSetState($Button3, $GUI_ENABLE) EndIf While 1 If $ReadBarcodes = 1 Then CaptureTelnet() If IniRead(@ScriptDir & "\settings.ini", "SHARED", "RETURN", 0) = 1 Then FailedPic() $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE exitprogram() Exit Case $Button1 ;if a job is already loaded, comfirm they wish to clear it out. Local $sAnswer = InputBox("Load Job File", "Please enter the job number that you would like to open.") If $sAnswer <> "" Then GUICtrlSetState($Button3, $GUI_DISABLE) ReadHeader($sAnswer) EndIf ;_GUICtrlListBox_AddString ( $List1, "Job " & $sAnswer & " Ready" ) $count = GUICtrlSendMsg($List1, $LB_GETCOUNT, 0, 0) GUICtrlSendMsg($List1, $LB_SETCURSEL, $count - 1, 0) Case $Button2 _GUICtrlListBox_AddString($List1, "Attempt to reconnect to DB!") DoScroll() opendatabase() ;downloadfile() ;InetGet("http://filehippo.com/download_ccleaner/download/f91c69652557f49ca712e4cfe5ffe917/", @ScriptDir & "\test.exe", 1, 0) Case $Button3 If GUICtrlRead($Button3, 0) = "Run" Then GUICtrlSetState($Button1, $GUI_DISABLE) ;GUICtrlSetState($Button2, $GUI_DISABLE) ConnectToCameraTelnet() Else DisconnectCameraTelnet() EndIf Case $Button4 ZeroCounts() EndSwitch WEnd Func FlashScannedCode() GUICtrlSetColor($Label1, 0x00FF00) ;Sleep(200) ;GUICtrlSetColor($Label1, 0x008000) Sleep(200) GUICtrlSetColor($Label1, 0x000000) EndFunc ;==>FlashScannedCode Func ConnectToCameraTelnet() _GUICtrlListBox_AddString($List1, "Connecting to Camera at: " & $CAMERAIP) $count = GUICtrlSendMsg($List1, $LB_GETCOUNT, 0, 0) GUICtrlSendMsg($List1, $LB_SETCURSEL, $count - 1, 0) TCPStartup() $Host = TCPNameToIP($CAMERAIP) $Connection = TCPConnect($Host, $TCPPORT) Sleep(1000) If $Connection = -1 Then _GUICtrlListBox_AddString($List1, "Failed to Connect to Camera!") $count = GUICtrlSendMsg($List1, $LB_GETCOUNT, 0, 0) GUICtrlSendMsg($List1, $LB_SETCURSEL, $count - 1, 0) Else $ReadBarcodes = 1 GUICtrlSetData($Button3, "STOP") _GUICtrlListBox_AddString($List1, "Successfully Connected to Camera!") $count = GUICtrlSendMsg($List1, $LB_GETCOUNT, 0, 0) GUICtrlSendMsg($List1, $LB_SETCURSEL, $count - 1, 0) _GUICtrlListBox_AddString($List1, "Running!") $count = GUICtrlSendMsg($List1, $LB_GETCOUNT, 0, 0) GUICtrlSendMsg($List1, $LB_SETCURSEL, $count - 1, 0) EndIf digitalwrite(11, $ReadBarcodes) EndFunc ;==>ConnectToCameraTelnet Func DisconnectCameraTelnet() _GUICtrlListBox_AddString($List1, "Disconnecting from Camera") $count = GUICtrlSendMsg($List1, $LB_GETCOUNT, 0, 0) GUICtrlSendMsg($List1, $LB_SETCURSEL, $count - 1, 0) TCPCloseSocket($Connection) ; Close the socket. $ReadBarcodes = 0 TCPShutdown() ; Close the TCP service. _GUICtrlListBox_AddString($List1, "Disconnected from Camera!") $count = GUICtrlSendMsg($List1, $LB_GETCOUNT, 0, 0) GUICtrlSendMsg($List1, $LB_SETCURSEL, $count - 1, 0) GUICtrlSetData($Button3, "Run") GUICtrlSetState($Button1, $GUI_ENABLE) ;GUICtrlSetState($Button2, $GUI_ENABLE) digitalwrite(11, $ReadBarcodes) EndFunc ;==>DisconnectCameraTelnet Func CaptureTelnet() $recv = "" While 1 $recv &= TCPRecv($Connection, $TCPMAXLENGTH) If @error Then ExitLoop WEnd ;ConsoleWrite(@crlf & $recv) If $recv <> "" Then ;ConsoleWrite(@crlf & $recv) ProcessIMBs($recv) GUICtrlSetData($Label1, $string) $total = $total + 1 GUICtrlSetData($Label2, $total) If $string = "NOREAD" Then $failed = $failed + 1 $recv = "" $string = "" IniWrite(@ScriptDir & "\settings.ini", "SHARED", "TRIP", 1) ElseIf $string = "84" Then $timeout = $timeout + 1 $recv = "" $string = "" GUICtrlSetData($Label26, $timeout) Else ;ConsoleWrite ($string) $sSql = "" $good = $good + 1 Local $sSql = "select a.stored, a.linking, b.trayact,b.traytype, b.pallet from ezmysqltest.phase3 a join ezmysqltest.cqt b on a.linking = b.trayid where a.stored = " & $string If Not _EzMySql_Query($sSql & ";") Then _GUICtrlListBox_AddString($List1, "At " & _NowTime(4) & " Database Error Occurred " & @error) DoScroll() $rowct = 0 ConsoleWrite("Sql Error for Chad " & _EzMySql_ErrMsg()) Else $rowct = _EzMySql_Rows() EndIf If $rowct = 0 Then Local $sSql = "insert into faults (imb) VALUES ('" & $string & "')" _EzMySql_Query($sSql & ";") $dbfault = $dbfault + 1 GUICtrlSetData($Label27, $dbfault) ;digitalwrite(9,1) Else For $i = 1 To _EzMySql_Rows() Step 1 $aOk = _EzMySql_FetchData() $tray = $aOk[2] $ttype = $aOk[3] $pal = $aOk[4] If $tray <> $oldtray Then If $shuttle = 0 Then digitalwrite(8, 1) $shuttle = 1 Else digitalwrite(8, 0) $shuttle = 0 EndIf ConsoleWrite($shuttle & @CRLF) $oldtray = $tray IniWrite(@ScriptDir & "\settings.ini", "ARDUINO", "SHUTTLE", $shuttle) EndIf If Not _EzMySql_Query("Update ezmysqltest.phase3 set complete = 1 where stored = " & $string & ";") Then _GUICtrlListBox_AddString($List1, "At " & _NowTime(4) & " Database update error Occurred") DoScroll() EndIf GUICtrlSetData($Label44, $pal) GUICtrlSetData($Label15, $tray) GUICtrlSetData($Label45, GetTrayCode(StringStripWS($ttype, $STR_STRIPALL))) Next EndIf EndIf $recv = "" $string = "" EndIf GUICtrlSetData($Label12, $failed) GUICtrlSetData($Label7, $good) ; FlashScannedCode() EndFunc ;==>CaptureTelnet Func ProcessIMBs($dataStr) Local $dataArray = StringSplit($dataStr, Chr(03)) ; Split the string using the delimiter "Chr(03)" into an array. ;ConsoleWrite("Processing " & $dataArray[0] &0" Records" & @CRLF) Local $dataCountA = $dataArray[0] For $i = 1 To $dataArray[0] ; Loop through the array returned by StringSplit. If StringLen($dataArray[$i]) = $TCPMAXLENGTH Then Global $string = $dataArray[$i] ;process the IMB, it's good ElseIf $i = 1 Then ;prefix $newCode = $imbprefix & $dataArray[$i] Global $string = $newCode ;ConsoleWrite($newCode & @CRLF) $imbprefix = "" ;clear the variable ElseIf $i = $dataCountA Then $imbprefix = $dataArray[$i] ;save the data to be prefixed onto the next EndIf Next EndFunc ;==>ProcessIMBs Func ProcessIMBs2($dataStr) Local $dataArray = StringSplit($dataStr, Chr(13)) ; Split the string using the delimiter "Chr(03)" into an array. ;ConsoleWrite("Processing " & $dataArray[0] & " Records" & @CRLF) Local $dataCountA = $dataArray[0] For $i = 1 To $dataArray[0] ; Loop through the array returned by StringSplit. If StringLen($dataArray[$i]) = $TCPMAXLENGTH Then Global $string = $dataArray[$i] ;process the IMB, it's good ElseIf $i = 1 Then ;prefix $newCode = $imbprefix & $dataArray[$i] Global $string = $newCode ;ConsoleWrite($newCode & @CRLF) $imbprefix = "" ;clear the variable ElseIf $i = $dataCountA Then $imbprefix = $dataArray[$i] ;save the data to be prefixed onto the next EndIf Next EndFunc ;==>ProcessIMBs2 Func FileCreate($sFilePath, $sString) Local $bReturn = True ; Create a variable to store a boolean value. If FileExists($sFilePath) = 0 Then $bReturn = FileWrite($sFilePath, $sString) = 1 ; If FileWrite returned 1 this will be True otherwise False. Return $bReturn ; Return the boolean value of either True of False, depending on the return value of FileWrite. EndFunc ;==>FileCreate Func opendatabase() If Not _EzMySql_Startup() Then MsgBox(0, "Error Starting MySql", "Error: " & @error & @CR & "Error string: " & _EzMySql_ErrMsg()) Exit EndIf If Not _EzMySql_Open("", "root", $pass, "", "3306") Then MsgBox(0, "Error opening Database", "Error: " & @error & @CR & "Error string: " & _EzMySql_ErrMsg()) Exit EndIf If Not _EzMySql_Exec("CREATE DATABASE IF NOT EXISTS EzMySqlTest") Then MsgBox(0, "Error opening Database", "Error: " & @error & @CR & "Error string: " & _EzMySql_ErrMsg()) Exit EndIf If Not _EzMySql_SelectDB("EzMySqlTest") Then MsgBox(0, "Error setting Database to use", "Error: " & @error & @CR & "Error string: " & _EzMySql_ErrMsg()) Exit EndIf $lock = 0 GUICtrlSetState($Button3, $GUI_ENABLE) GUICtrlSetState($Button1, $GUI_ENABLE) _GUICtrlListBox_AddString($List1, "Successfully Connected to Database!") DoScroll() EndFunc ;==>opendatabase Func FailedPic() GUICtrlSetImage($Pic3, @ScriptDir & "\snapshots\" & $bArray[0]) GUICtrlSetImage($Pic4, @ScriptDir & "\snapshots\" & $bArray[1]) GUICtrlSetImage($Pic5, @ScriptDir & "\snapshots\" & $bArray[2]) IniWrite(@ScriptDir & "\settings.ini", "SHARED", "RETURN", 0) EndFunc ;==>FailedPic Func DoScroll() $count = GUICtrlSendMsg($List1, $LB_GETCOUNT, 0, 0) GUICtrlSendMsg($List1, $LB_SETCURSEL, $count - 1, 0) ;GUICtrlSetState($Button3, $GUI_ENABLE) EndFunc ;==>DoScroll Func create_db2($name = "phase3") $sSql = "CREATE TABLE IF NOT EXISTS " & $name & "(" & _ "num INT unsigned NOT NULL DEFAULT '0' ," & _ "stored decimal(32,0) NOT NULL," & _ "readid varchar(45) DEFAULT NULL," & _ "complete int(1) unsigned zerofill DEFAULT NULL," & _ "trayid int(5) unsigned DEFAULT NULL," & _ "pallet int(5) unsigned DEFAULT NULL," & _ "linking int(5) unsigned NOT NULL," & _ "traytype varchar(2) NOT NULL DEFAULT '0'," & _ "PRIMARY KEY (`Stored`) );" If Not _EzMySql_Query($sSql) Then _GUICtrlListBox_AddString($List1, "At " & _NowTime(4) & " Table Creation Failed") DoScroll() Exit EndIf _GUICtrlListBox_AddString($List1, "At " & _NowTime(4) & " Table Creation Succeed") DoScroll() $name = "faults" $sSql = "CREATE TABLE IF NOT EXISTS " & $name & "(" & _ "imb decimal(32,0) NOT NULL," & _ "traytype varchar(2) NOT NULL DEFAULT '0'," & _ "PRIMARY KEY (`imb`) );" If Not _EzMySql_Query($sSql) Then _GUICtrlListBox_AddString($List1, "At " & _NowTime(4) & " Faults Table Creation Failed") DoScroll() Exit EndIf _GUICtrlListBox_AddString($List1, "At " & _NowTime(4) & " Faults Table Creation Succeed") DoScroll() EndFunc ;==>create_db2 Func ReadHeader($dat) $name2 = $dat & $head readarray($name2, $pos, $alt, $old) $test = UBound($aArray) - 2 $ver = StringMid($aArray[1][0], $hds, $hdf) Global $qty = StringMid($aArray[$test][0], 322, 10) ;PBR file Setup Global $pbrnm = IniRead(@ScriptDir & "\settings.ini", $ver, "Ext1", "") Global $imbs = IniRead(@ScriptDir & "\settings.ini", $ver, "PBRIMBS", "") Global $imbf = IniRead(@ScriptDir & "\settings.ini", $ver, "PBRIMBF", "") Global $cqts = IniRead(@ScriptDir & "\settings.ini", $ver, "PBRCQTS", "") Global $cqtf = IniRead(@ScriptDir & "\settings.ini", $ver, "PBRCQTF", "") Global $len = IniRead(@ScriptDir & "\settings.ini", $ver, "LENGTH", "") ; CQT file setup Global $cqtnm = IniRead(@ScriptDir & "\settings.ini", $ver, "Ext2", "") Global $lnks = IniRead(@ScriptDir & "\settings.ini", $ver, "CQTLINKS", "") Global $lnkf = IniRead(@ScriptDir & "\settings.ini", $ver, "CQTLINKF", "") Global $trays = IniRead(@ScriptDir & "\settings.ini", $ver, "CQTTRAYS", "") Global $trayf = IniRead(@ScriptDir & "\settings.ini", $ver, "CQTTRAYF", "") ;CSM File setup Global $csmnm = IniRead(@ScriptDir & "\settings.ini", $ver, "Ext3", "") Global $ctyps = IniRead(@ScriptDir & "\settings.ini", $ver, "CSMTYPES", "") Global $ctypf = IniRead(@ScriptDir & "\settings.ini", $ver, "CSMTYPEF", "") Global $cids = IniRead(@ScriptDir & "\settings.ini", $ver, "CSMCONTS", "") Global $cidf = IniRead(@ScriptDir & "\settings.ini", $ver, "CSMCONTF", "") Global $cdsps = IniRead(@ScriptDir & "\settings.ini", $ver, "CSMDSPS", "") Global $cdspf = IniRead(@ScriptDir & "\settings.ini", $ver, "CSMDSPF", "") Global $cpals = IniRead(@ScriptDir & "\settings.ini", $ver, "CSMPALS", "") Global $cpalf = IniRead(@ScriptDir & "\settings.ini", $ver, "CSMPALF", "") Example($dat) EndFunc ;==>ReadHeader Func Example($dat) $name2 = "" $name2 = $dat & $pbrnm GUICtrlSetState($Progress1, $GUI_Show) _GUICtrlListBox_AddString($List1, "Database Opening" & _NowTime(5)) DoScroll() $name = "phase3" create_db2($name) $name = "a" & $job & $tsk create_db2($name) $sSql = "INSERT INTO " & $name & " SELECT * FROM phase3;" If Not _EzMySql_Query($sSql) Then _GUICtrlListBox_AddString($List1, "Error Copying Database " & _NowTime(5)) DoScroll() EndIf _GUICtrlListBox_AddString($List1, "Deleting old Database " & _NowTime(5)) DoScroll() $sSql = "DELETE from phase3" If Not _EzMySql_Query($sSql & ";") Then _GUICtrlListBox_AddString($List1, "ERROR Deleting old Database " & _NowTime(5)) DoScroll() EndIf $sSql = "DELETE from faults" If Not _EzMySql_Query($sSql & ";") Then _GUICtrlListBox_AddString($List1, "ERROR Deleting faults Database " & _NowTime(5)) DoScroll() EndIf $alt = 1 $inc = 10000 $pos = 0 $old = $inc * $len $cnt = 1 $lock = 0 $lock2 = 0 $ct = 0 _GUICtrlListBox_AddString($List1, "Writing New Database " & _NowTime(5)) DoScroll() For $cyc = 0 To $qty Step $inc readarray($name2, $pos, $alt, $old) $k = UBound($aArray) - 1 ;_ArrayDisplay($aArray) $job = StringLeft($aArray[0][0], 5) $tsk = StringMid($aArray[0][0], 7, 2) GUICtrlSetData($Label16, $job) GUICtrlSetData($Label14, $tsk) IniWrite(@ScriptDir & "\settings.ini", "CURRENT", "JOB", $job) IniWrite(@ScriptDir & "\settings.ini", "CURRENT", "TASK", $tsk) For $i = 0 To $k $aArray[$i][1] = StringMid($aArray[$i][0], $imbs, $imbf) $aArray[$i][0] = StringMid($aArray[$i][0], $cqts, $cqtf) Next $work = " insert into phase3 (num,linking,stored) values " $sSql = $work $t = $k - 1 For $j = 0 To $t $sSql &= "('" & $cnt & "','" & $aArray[$j][0] & "','" & $aArray[$j][1] & "')" $cnt = $cnt + 1 If Mod($j, $t) Then $sSql &= ',' ;ConsoleWrite($cnt & " " & $cyc & " " &$j & " " & $t & @CRLF) Else If Not _EzMySql_Query($sSql & ";") Then _GUICtrlListBox_AddString($List1, "At " & _NowTime(4) & " Database Error PDR Occurred" & _EzMySql_ErrMsg()) ConsoleWrite($sSql) DoScroll() Return False EndIf $sSql = $work $ct = $ct + 1 $tic = ($cnt / $qty) * 100 GUICtrlSetData($Progress1, $tic) EndIf Next $pos = $pos + $old Next $tic = 0 _GUICtrlListBox_AddString($List1, "Job Number:" & $job & " is loaded " & _NowTime(5)) GUICtrlSetState($Progress1, $GUI_Hide) ReadCQT($dat) EndFunc ;==>Example Func ReadCQT($dat) $alt = 0 $old = 0 $pos = 0 $sName = "" $name2 = $dat & $cqtnm _GUICtrlListBox_AddString($List1, "Importing CQT File " & _NowTime(5)) DoScroll() GUICtrlSetData($Progress1, 0) readarray($name2, $pos, $alt, $old) $val = UBound($aArray) - 1 For $i = 0 To $val $aArray[$i][1] = StringMid($aArray[$i][0], $lnks, $lnkf) $aArray[$i][0] = StringMid($aArray[$i][0], $trays, $trayf) Next $sSql = "DELETE from cqt" If Not _EzMySql_Query($sSql & ";") Then create_cqt() EndIf $t = $val - 1 $work = " Insert into cqt (linking,trayid) values " $sSql = $work For $j = 0 To $t ;$sSql &= '('& $aArray[$j][0] & ',' & $aArray[$j][1] & ',' & $aArray[$j][2] & ',' & $aArray[$j][3] & ')' $sSql &= "('" & $aArray[$j][0] & "','" & $aArray[$j][1] & "')" If Mod($j, $t) Then $sSql &= ',' Else If Not _EzMySql_Query($sSql & ";") Then _GUICtrlListBox_AddString($List1, "At " & _NowTime(4) & " Database Error CQT Occurred" & _EzMySql_ErrMsg()) DoScroll() Return False EndIf $sSql = $work EndIf Next _GUICtrlListBox_AddString($List1, "Import of CQT Complete " & _NowTime(5)) DoScroll() ReadCSM($dat) EndFunc ;==>ReadCQT Func ReadCSM($dat) _GUICtrlListBox_AddString($List1, "Importing CSM File " & _NowTime(5)) DoScroll() $name2 = "" $name2 = $dat & $csmnm $sSql = "DELETE from csm2" If Not _EzMySql_Query($sSql & ";") Then create_csm() EndIf readarray($name2, $pos, $alt, $old) $val = UBound($aArray) - 2 For $i = 0 To $val $aArray[$i][3] = StringMid($aArray[$i][0], $cpals, $cpalf) $aArray[$i][2] = StringMid($aArray[$i][0], $ctyps, $ctypf) $aArray[$i][1] = StringMid($aArray[$i][0], $cids, $cidf) $aArray[$i][0] = StringMid($aArray[$i][0], $cdsps, $cdspf) If $aArray[$i][3] = " " Then $aArray[$i][3] = "0" Next $work = " insert into csm2 (offset2,linking,traytype,trayid) values " $sSql = $work $t = $val For $j = 0 To $t $sSql &= "('" & $aArray[$j][0] & "','" & $aArray[$j][1] & "','" & $aArray[$j][2] & "','" & $aArray[$j][3] & "')" If Mod($j, $t) Then $sSql &= ',' Else If Not _EzMySql_Query($sSql & ";") Then _GUICtrlListBox_AddString($List1, "At " & _NowTime(4) & " Database Error CSM Occurred" & _EzMySql_ErrMsg()) DoScroll() Return False EndIf $sSql = $work EndIf Next _GUICtrlListBox_AddString($List1, "Import of CSM Complete " & _NowTime(5)) DoScroll() jointables() EndFunc ;==>ReadCSM Func jointables() $sSql = "create or replace view ezmysqltest.csmmem as select * from ezmysqltest.csm2 where traytype = 'p';" If Not _EzMySql_Query($sSql) Then _GUICtrlListBox_AddString($List1, "At " & _NowTime(4) & " CSM VIEW Creation Failed") DoScroll() EndIf $sSql = "update ezmysqltest.csm2 a join ezmysqltest.csmmem b on b.linking = a.trayid set a.pallet = b.offset2" If Not _EzMySql_Query($sSql & ";") Then _GUICtrlListBox_AddString($List1, "Merge of Files InComplete " & _NowTime(5)) DoScroll() Return False EndIf $sSql = "update ezmysqltest.cqt a join ezmysqltest.csm2 b on a.linking = b.linking set a.traytype = b.traytype, a.trayact = b.offset2, a.pallet = b.pallet" If Not _EzMySql_Query($sSql & ";") Then _GUICtrlListBox_AddString($List1, "Merge of Files InComplete " & _NowTime(5)) DoScroll() Return False EndIf _GUICtrlListBox_AddString($List1, "Complete, Ready to run! " & _NowTime(5)) GUICtrlSetState($Button3, $GUI_ENABLE) EndFunc ;==>jointables Func ZeroCounts() Global $total = "0" Global $failed = "0" Global $good = "0" Global $timeout = "0" Global $dbfault = "0" GUICtrlSetData($Label12, $failed) GUICtrlSetData($Label7, $good) GUICtrlSetData($Label26, $timeout) GUICtrlSetData($Label2, $total) GUICtrlSetData($Label27, $dbfault) EndFunc ;==>ZeroCounts Func exitprogram() IniWrite(@ScriptDir & "\settings.ini", "CURRENT", "TOTAL", $total) IniWrite(@ScriptDir & "\settings.ini", "CURRENT", "GOOD", $good) IniWrite(@ScriptDir & "\settings.ini", "CURRENT", "FAILED", $failed) IniWrite(@ScriptDir & "\settings.ini", "CURRENT", "MISSED", $timeout) IniWrite(@ScriptDir & "\settings.ini", "CURRENT", "DB FAULT", $dbfault) IniWrite(@ScriptDir & "\settings.ini", "CURRENT", "TRAY", $tray) IniWrite(@ScriptDir & "\settings.ini", "CURRENT", "PALLET", $pal) IniWrite(@ScriptDir & "\settings.ini", "CURRENT", "TYPE", $ttype) IniWrite(@ScriptDir & "\settings.ini", "ARDUINO", "SHUTTLE", $shuttle) IniWrite(@ScriptDir & "\settings.ini", "SHARED", "RETURN", 0) digitalwrite(11, 0) TCPCloseSocket($Connection) ; Close the socket. TCPShutdown() ; Close the TCP service. ;_SQL_CLOSE(-1) Exit EndFunc ;==>exitprogram Func readarray($name, $pos, $alt, $old) $aArray = $aArray_Base ; Create a constant variable in Local scope of the filepath that will be read/written to. Local $sFilePath = "\mail\" & $name ; Open the file for reading and store the handle to a variable. Local $hFileOpen = FileOpen($sFilePath, $FO_READ) If $hFileOpen = -1 Then MsgBox($MB_SYSTEMMODAL, "", "An error occurred when Opening the " & $name & " file.") Exit EndIf FileSetPos($hFileOpen, 0, $FILE_BEGIN) If $alt = 0 Then FileSetPos($hFileOpen, 0, $FILE_BEGIN) Local $sFileRead = StringReplace(StringStripCR(FileRead($hFileOpen)), @LF, "") Else FileSetPos($hFileOpen, $pos, $FILE_BEGIN) Local $sFileRead = StringReplace(StringStripCR(FileRead($hFileOpen, $old)), @LF, "") EndIf FileClose($hFileOpen) _ArrayAdd($aArray, $sFileRead, Default, "^", "#", Default) EndFunc ;==>readarray ; REmoved zero fill from trayid, linking, offset2 of csm and trayid and linking of cqt 8/14 Func create_csm() $sSql = "CREATE TABLE IF NOT EXISTS csm2 (" & _ "trayid int(10) unsigned DEFAULT '0' ," & _ "linking int(10) unsigned NOT NULL," & _ "offset2 int(10) unsigned NOT NULL," & _ "traytype varchar(2) DEFAULT NULL," & _ "pallet int(10) unsigned DEFAULT NULL," & _ "PRIMARY KEY (`linking`) );" If Not _EzMySql_Query($sSql) Then _GUICtrlListBox_AddString($List1, "At " & _NowTime(4) & " CSM Creation Failed") DoScroll() EndIf _GUICtrlListBox_AddString($List1, "At " & _NowTime(4) & " CSM Creation Succeed") DoScroll() EndFunc ;==>create_csm Func create_cqt() $sSql = "CREATE TABLE IF NOT EXISTS cqt (" & _ "trayid int(10) unsigned DEFAULT '0' ," & _ "linking int(10) unsigned NOT NULL," & _ "pallet int(10) unsigned DEFAULT NULL," & _ "traytype varchar(2) DEFAULT NULL," & _ "trayact int(10) unsigned DEFAULT NULL);" If Not _EzMySql_Query($sSql) Then _GUICtrlListBox_AddString($List1, "At " & _NowTime(4) & " CQT Creation Failed") DoScroll() EndIf _GUICtrlListBox_AddString($List1, "At " & _NowTime(4) & " CQT Creation Succeed") DoScroll() EndFunc ;==>create_cqt Func LoadTrayTagInfo() Local $tmptArray = IniReadSection(@ScriptDir & "\settings.ini", "TrayTag-Info") If Not @error Then ; Check if an error occurred. AssocArrayCreate($trayArray, UBound($tmptArray) - 1) ; Create Associative Array with the correct number of items For $i = 1 To $tmptArray[0][0] If Not AssocArrayAssign($trayArray, $tmptArray[$i][0], $tmptArray[$i][1]) Then MsgBox(0x0, "Tray Type Load Error", "An error has occured assigning tray types. Types are Case Sensitive") Exit EndIf Next Else MsgBox(0x0, "Tray Type Load Error", "An error has occured trying to read the types from the INI file.") EndIf EndFunc ;==>LoadTrayTagInfo Func GetTrayCode($traycode) Return AssocArrayGet($trayArray, $traycode) EndFunc ;==>GetTrayCode Func Arduino($port, $baud) $loop = 0 $val1 = 0 conecta($port, $baud) digitalwrite(8, 0) Sleep(250) digitalwrite(9, 1) Sleep(250) digitalwrite(8, $shuttle) EndFunc ;==>Arduino