-
Posts
1,634 -
Joined
-
Last visited
About ConsultingJoe
- Birthday 08/18/1987
Profile Information
-
Member Title
ConsultingJoe.com
-
Location
Chicago IL, USA
-
WWW
http://consultingjoe.com
-
Interests
Autoit, Networking, Building, Repairing Computers,
Wed Design and Development.
Recent Profile Visitors
ConsultingJoe's Achievements
Universalist (7/7)
4
Reputation
-
ConsultingJoe reacted to a post in a topic: YoloV8 Image Annotation Tool
-
ioa747 reacted to a post in a topic: YoloV8 Image Annotation Tool
-
Danyfirex reacted to a post in a topic: YoloV8 Image Annotation Tool
-
YoloV8 Image Annotation Tool
ConsultingJoe replied to ConsultingJoe's topic in AutoIt Example Scripts
Holy cow. That's amazing. WOW -
ConsultingJoe reacted to a post in a topic: YoloV8 Image Annotation Tool
-
YoloV8 Image Annotation Tool
ConsultingJoe replied to ConsultingJoe's topic in AutoIt Example Scripts
After thinking about this more and how difficult it would be to manage having the user adjust existing boxes and polygon points. It would be very hard all with GDI+ but possible. I found openlayers that gives you map controls to draw polygons on a canvas and adjust the points. May have to adapt this project to nodejs and front-end javascript. https://openlayers.org/en/latest/examples/draw-and-modify-features.html -
argumentum reacted to a post in a topic: YoloV8 Image Annotation Tool
-
YoloV8 Image Annotation Tool
ConsultingJoe replied to ConsultingJoe's topic in AutoIt Example Scripts
Thanks for the quick feedback. Well taken. Just updated the code for relative default paths and added and example 8 image dataset, 4 with masks and 4 people without masks. Let me know your thoughts from there. Joe -
Hi All! Long time posting but glad the community is still thriving! I want to share my code for a YoloV8 Image Annotation Tool. It is not yet complete but a good amount is functional. It offers... Screenshot Here GUI with responsive controls and image view Custom image view scaling to keep images in proportion Some improvements like font scaling could be added Load image folder and yolov8 annotation txt folder Click Load Annotations See your first image in the image folder with colored polygons or bounding boxes and an associated label Labels come from a classes.txt file located in the annotation labels folder Polygons and/or rectangles are drawn depending on the number of elements in the annotation file for each class Polygons and labels are automatically redrawn when the window is maximized, restored or resized. Navigate with the "Next" and "Previous" buttons at the bottom of the GUI TODO Add keyboard shortcuts for buttons Add remove button to remove an image and associated annotation text file from the dataset Add a list view on the right of the image for the image file names and select which file is currently displayed Add a list view on the left of the image for the polygons and their labels to select to move or delete individual annotations Add the ability to click within a polygon to select it in the list view on the left for adjustments, removal or changing the assigned class These are just a few items to make this a fully functionally annotation tool but hopefully people have similar needs and want to pitch in. I plan to create a Github soon if anyone is interested. I'm happy to hear any feedback or suggestions Thanks Example Yolov8 Annotations (No Mask/Mask) ==> https://www.consultingjoe.com/wp-content/uploads/2024/09/Example-Yolov8-Annotations.zip #include <GUIConstantsEx.au3> #include <ButtonConstants.au3> #include <File.au3> #include <MsgBoxConstants.au3> #include <WindowsConstants.au3> #include <GDIPlus.au3> #include <Array.au3> Global $imageDir, $labelDir, $annotations, $classes, $classes_colors = [] Global $imageFiles, $currentIndex = 1 Global $originalImageWidth, $originalImageHeight, $scaleX, $scaleY ; Create the GUI (with resizing and maximizing options) $mainGUI = GUICreate("YOLOv8 Annotation Tool", 1024, 768, -1, -1, BitOR($WS_SIZEBOX, $WS_MAXIMIZEBOX, $WS_SYSMENU, $WS_MINIMIZEBOX, $WS_CAPTION)) ; Input fields GUICtrlCreateLabel("Image Directory:", 10, 10) GUICtrlSetResizing(-1, $GUI_DOCKAUTO) $imageDirInput = GUICtrlCreateInput(@ScriptDir & "\images\", 120, 10, 700, 20) GUICtrlSetResizing(-1, $GUI_DOCKAUTO) GUICtrlCreateLabel("Label Directory:", 10, 40) GUICtrlSetResizing(-1, $GUI_DOCKAUTO) $labelDirInput = GUICtrlCreateInput(@ScriptDir & "\labels\", 120, 40, 700, 20) GUICtrlSetResizing(-1, $GUI_DOCKAUTO) ; Browse buttons $imageDirButton = GUICtrlCreateButton("Browse", 830, 10, 75, 20) GUICtrlSetResizing(-1, $GUI_DOCKAUTO) $labelDirButton = GUICtrlCreateButton("Browse", 830, 40, 75, 20) GUICtrlSetResizing(-1, $GUI_DOCKAUTO) ; Load button $loadButton = GUICtrlCreateButton("Load Annotations", 10, 70, 200, 30) GUICtrlSetResizing(-1, $GUI_DOCKAUTO) ; Navigation buttons $prevButton = GUICtrlCreateButton("Previous", 10, 710, 100, 30) GUICtrlSetResizing(-1, $GUI_DOCKAUTO) $nextButton = GUICtrlCreateButton("Next", 920, 710, 100, 30) GUICtrlSetResizing(-1, $GUI_DOCKAUTO) ; Image display area, scalable (with the anchor set) $picDisplay = GUICtrlCreatePic("", 10, 110, 1000, 600) GUICtrlSetResizing($picDisplay, $GUI_DOCKHCENTER) ; Show the GUI GUISetState(@SW_SHOW) ; Event Loop While 1 $msg = GUIGetMsg() Switch $msg Case $GUI_EVENT_CLOSE Exit Case $GUI_EVENT_RESTORE ConsoleWrite("RESTORE") Sleep(10) DisplayCurrentImage(0) Case $GUI_EVENT_MAXIMIZE ConsoleWrite("MAXIMIZE") Sleep(10) DisplayCurrentImage(0) Case $GUI_EVENT_RESIZED ConsoleWrite("RESIZED") Sleep(10) DisplayCurrentImage(0) Case $imageDirButton $imageDir = FileSelectFolder("Select Image Directory", @ScriptDir & "\images\") If Not @error Then GUICtrlSetData($imageDirInput, $imageDir) Case $labelDirButton $labelDir = FileSelectFolder("Select Label Directory", @ScriptDir & "\labels\") If Not @error Then GUICtrlSetData($labelDirInput, $labelDir) Case $loadButton $imageDir = GUICtrlRead($imageDirInput) $labelDir = GUICtrlRead($labelDirInput) If $imageDir = "" Or $labelDir = "" Then MsgBox($MB_ICONERROR, "Error", "Please select both image and label directories.") Else LoadImages($imageDir, $labelDir) EndIf Case $prevButton If $currentIndex > 1 Then DisplayCurrentImage(-1) EndIf Case $nextButton If $currentIndex < $imageFiles[0] Then DisplayCurrentImage(1) EndIf EndSwitch WEnd Func AdjustImageDisplay($imageWidth, $imageHeight) ; Get the available space in the GUI for the image display Local $winSize = WinGetClientSize($mainGUI) Local $availableWidth = $winSize[0] Local $availableHeight = $winSize[1] - 220 ; Adjust for top GUI elements (like buttons) ; Calculate the aspect ratio of the image Local $imageAspectRatio = $imageWidth / $imageHeight ; Initialize new dimensions while maintaining the aspect ratio Local $newWidth, $newHeight ; Adjust the dimensions to fit within the available space, maintaining aspect ratio If ($availableWidth / $availableHeight) > $imageAspectRatio Then ; Available space is wider than the image's aspect ratio, so limit by height $newHeight = $availableHeight $newWidth = $newHeight * $imageAspectRatio Else ; Available space is taller than the image's aspect ratio, so limit by width $newWidth = $availableWidth $newHeight = $newWidth / $imageAspectRatio EndIf ; Calculate new position to center the image control horizontally and vertically Local $xPos = ($availableWidth - $newWidth) / 2 Local $yPos = ($availableHeight - $newHeight) / 2 + 110 ; Resize and reposition the image display control GUICtrlSetPos($picDisplay, $xPos, $yPos, $newWidth, $newHeight) EndFunc Func LoadClasses($labelDir) Local $classFile = $labelDir & "\classes.txt" ; Check if the classes.txt file exists in the label directory If FileExists($classFile) Then ; Read the file into an array Local $lines = [] _FileReadToArray($classFile, $lines) ; Check if the file was read successfully If IsArray($lines) Then ;_ArrayDisplay($lines) ; Copy the lines to the global classes array Global $classes = $lines AssignClassColors() ConsoleWrite("Classes loaded successfully: " & _ArrayToString($classes, ", ") & @CRLF) Else MsgBox($MB_ICONERROR, "Error", "Failed to read the classes.txt file.") EndIf Else MsgBox($MB_ICONERROR, "Error", "classes.txt file not found in: " & $labelDir) EndIf EndFunc Func LoadImages($imageDir, $labelDir) ; Load images $labelDir = GUICtrlRead($labelDirInput) $imageFiles = _FileListToArrayRec($imageDir, "*.jpg;*.png", 1) _ArrayDelete($classes, 0) LoadClasses($labelDir) If @error Then MsgBox($MB_ICONERROR, "Error", "No images found in directory: " & $imageDir) Return EndIf ; Set the current index to the first image $currentIndex = 1 ; Display the first image DisplayCurrentImage(0) EndFunc Func DisplayCurrentImage($nextIndex) If $imageFiles = "" Then Return $currentIndex += $nextIndex Local $filename = StringTrimLeft($imageFiles[$currentIndex], StringInStr($imageFiles[$currentIndex], "\", 0, -1)) ; Replace the extension to match the label file Local $labelFilename = StringReplace($filename, ".jpg", ".txt") $labelFilename = StringReplace($labelFilename, ".png", ".txt") Local $imagePath = $imageDir & "\" & $filename Local $labelPath = $labelDir & "\" & $labelFilename If FileExists($labelPath) Then ConsoleWrite("EXISTS "&$labelPath&@crlf) ; Get the original image dimensions Local $imageWidth = _GDIPlus_ImageGetWidth($imagePath) Local $imageHeight = _GDIPlus_ImageGetHeight($imagePath) AdjustImageDisplay($imageWidth, $imageHeight) ; Load and display the image GUICtrlSetImage($picDisplay, $imagePath) DisplayImageWithAnnotations($imagePath, $labelPath) Else MsgBox($MB_ICONERROR, "Error", "Label file not found: " & $labelFilename) EndIf EndFunc Func DisplayImageWithAnnotations($imagePath, $labelPath) ; Clear previous annotations by deleting all elements While UBound($annotations) > 0 _ArrayDelete($annotations, 0) WEnd _GDIPlus_Startup() Local $hGraphic = _GDIPlus_GraphicsCreateFromHWND(GUICtrlGetHandle($picDisplay)) Local $hBitmap = _GDIPlus_BitmapCreateFromFile($imagePath) ; Get the image dimensions $originalImageWidth = _GDIPlus_ImageGetWidth($hBitmap) $originalImageHeight = _GDIPlus_ImageGetHeight($hBitmap) ; Get the dimensions of the displayed image area (accounting for GUI scaling) Local $displayWidth = ControlGetPos($mainGUI, "", $picDisplay)[2] Local $displayHeight = ControlGetPos($mainGUI, "", $picDisplay)[3] ; Calculate scaling factors for X and Y $scaleX = $displayWidth / $originalImageWidth $scaleY = $displayHeight / $originalImageHeight ; Draw the image _GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0) sleep(50) ; Load and parse the annotation file Local $lines = [] _FileReadToArray($labelPath, $lines) If IsArray($lines) Then For $i = 1 To $lines[0] ConsoleWrite($lines[$i] & @CRLF) ; Ensure the line is not empty and $lines[$i] is within bounds If IsString($lines[$i]) And StringStripWS($lines[$i], 3) <> "" Then Local $elements = StringSplit($lines[$i], " ") ; Ensure $elements is an array and has enough elements If IsArray($elements) And UBound($elements) >= 5 Then ; Handle bounding box (4 points) or polygon (more than 4 points) If UBound($elements) > 6 Then ; Draw the polygon and label it DrawPolygon($hGraphic, $elements) LabelPolygon($hGraphic, $elements) Else ; Draw the bounding box DrawBoundingBox($hGraphic, $elements) LabelPolygon($hGraphic, $elements) EndIf ; Store annotation data _ArrayAdd($annotations, $lines[$i]) EndIf EndIf Next Else ;MsgBox($MB_ICONERROR, "Error", "Failed to read label file: " & $labelPath) EndIf ; Cleanup _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_Shutdown() EndFunc Func DrawPolygon($hGraphic, $elements) Local $classIndex = $elements[1] ; Class index is the first element of the annotation ; Calculate the number of points in the polygon Local $numPoints = (UBound($elements) - 2) / 2 ; Declare the array to hold the polygon points as a 2D array Local $points[$numPoints + 1][2] ; +1 to hold the number of vertices at index [0][0] ; The first element contains the number of vertices $points[0][0] = $numPoints ; Convert normalized coordinates to scaled pixel coordinates For $i = 0 To $numPoints - 1 $points[$i + 1][0] = Round($elements[2 + $i * 2] * $originalImageWidth * $scaleX) ; X coordinate $points[$i + 1][1] = Round($elements[3 + $i * 2] * $originalImageHeight * $scaleY) ; Y coordinate Next ; Create a pen for drawing Local $hPen = _GDIPlus_PenCreate($classes_colors[$classIndex+1], 2) ; Draw the polygon using the 2D points array _GDIPlus_GraphicsDrawPolygon($hGraphic, $points, $hPen) ; Clean up _GDIPlus_PenDispose($hPen) EndFunc Func DrawBoundingBox($hGraphic, $elements) ; Scale the bounding box coordinates according to the display scaling Local $classIndex = $elements[1] ; Class index is the first element of the annotation ; Convert normalized coordinates to pixel coordinates Local $xCenter = $elements[2] * $originalImageWidth * $scaleX Local $yCenter = $elements[3] * $originalImageHeight * $scaleY Local $width = $elements[4] * $originalImageWidth * $scaleX Local $height = $elements[5] * $originalImageHeight * $scaleY ; Calculate the top-left corner from center coordinates and width/height Local $x = $xCenter - ($width / 2) Local $y = $yCenter - ($height / 2) ; Create a pen for drawing, using the class color Local $hPen = _GDIPlus_PenCreate($classes_colors[$classIndex + 1], 2) ; Draw the rectangle (bounding box) _GDIPlus_GraphicsDrawRect($hGraphic, $x, $y, $width, $height, $hPen) ; Clean up _GDIPlus_PenDispose($hPen) EndFunc Func LabelPolygon($hGraphic, $elements) ; Get the class index (first element) and calculate the top-center for the label Local $classIndex = $elements[1] ; Class index is the first element of the annotation Local $minX = $originalImageWidth * $scaleX Local $minY = $originalImageHeight * $scaleY Local $maxX = 0 Local $maxY = 0 Local $numPoints = (UBound($elements) - 2) / 2 ; Find the min and max X coordinates and the minimum Y (top of the polygon) For $i = 0 To $numPoints - 1 Local $x = $elements[2 + $i * 2] * $originalImageWidth * $scaleX Local $y = $elements[3 + $i * 2] * $originalImageHeight * $scaleY ; Get the smallest Y (topmost point) and calculate the min/max X values If $x < $minX Then $minX = $x If $x > $maxX Then $maxX = $x If $y < $minY Then $minY = $y If $y > $maxY Then $maxY = $y Next ; Calculate the horizontal center of the polygon Local $centerX = ($minX + $maxX) / 2 ; Draw the label (class index) at the top-center of the polygon Local $hBrush = _GDIPlus_BrushCreateSolid($classes_colors[$classIndex + 1]) ; White color for text Local $hFormat = _GDIPlus_StringFormatCreate() Local $hFamily = _GDIPlus_FontFamilyCreate("Arial") Local $hFont = _GDIPlus_FontCreate($hFamily, 16, 4) ; Font size 12, bold Local $textRect = _GDIPlus_RectFCreate($minX - 35, $maxY - $minY + $minY, 100, 20) ; Draw the label centered horizontally ; Draw the text label at the top-center of the polygon _GDIPlus_GraphicsDrawStringEx($hGraphic, $classes[$classIndex + 1], $hFont, $textRect, $hFormat, $hBrush) ; Clean up _GDIPlus_BrushDispose($hBrush) _GDIPlus_FontDispose($hFont) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_FontFamilyDispose($hFamily) EndFunc Func AssignClassColors() Local $predefinedColors = [0xFFFF0000, 0xFF00FF00, 0xFF0000FF, 0xFFFFFF00, 0xFFFF00FF, 0xFF00FFFF, 0xFFFFA500, 0xFF800080, 0xFF808080, 0xFF008080] Local $numPredefined = UBound($predefinedColors) ; Loop through the classes array For $i = 0 To UBound($classes) - 1 ; Assign a predefined color if available, otherwise generate a random color If $i < $numPredefined Then _ArrayAdd($classes_colors, $predefinedColors[$i]) Else ; Generate a random color if predefined colors are exhausted _ArrayAdd($classes_colors, RandomColor()) EndIf Next ConsoleWrite("Class colors assigned successfully: " & _ArrayToString($classes_colors, ", ") & @CRLF) EndFunc ; Function to generate a random color in RGB format Func RandomColor() Local $r = Random(0, 255, 1) Local $g = Random(0, 255, 1) Local $b = Random(0, 255, 1) Return ($r * 0x10000 + $g * 0x100 + $b) EndFunc
-
ConsultingJoe changed their profile photo
-
Send POST string to webpage?
ConsultingJoe replied to karliky's topic in AutoIt General Help and Support
-
I've built my POS for the company I'm at it works with multiple locations and has these features: Customer Lookup / Create / Edit Customer Member Key Tags Update Prices and show employee reference price Cash/Credit/Exchange Split Tender Receipt Notes to show on the printed Receipt Works with Cash drawer Works with Star Thermal Printer It does have some bugs between child windows and events but functions in production pretty well.
-
Finger Print Reader Program
ConsultingJoe replied to ConsultingJoe's topic in AutoIt General Help and Support
I have created a FreeLancer Project for this. Please check it out. It may explain a little better. There is a link to the SDK and to the $20 product if you would like to purchase one for testing. https://www.freelancer.com/projects/C-Programming-Software-Architecture/Figure-Print-USB-Communication-Server.html Please Please Help.- 8 replies
-
- finger print reader program
- finger print reader
- (and 3 more)
-
Ok, so I have been working on this figure print application and have been using the sample program and its just not clean or smooth. I really need to talk to it straight to the DLL I have the docs here and DLL and samples here: http://premierdistributor.com/TrueAPI_SDK1.zip What I need is to know the correct way to call these function so I can: Init the system, store prints, load prints, and verify prints. Also I would like to get an image of what was scanned. I know there is a way because the sample program offers a lot to show off its functionallity. The USB figure print device is about $20 on amazon and its called the Upek TrueMe. Please email me at joe@consultingjoe.com Thank you. Let me know if you have any questions. I NEED THIS ASAP!
-
Will Windows RT run Autoit Programs?
ConsultingJoe posted a topic in AutoIt General Help and Support
http://gizmodo.com/5952934/what-windows-rt-cant-do Does anyone know yet? -
Finger Print Reader Program
ConsultingJoe replied to ConsultingJoe's topic in AutoIt General Help and Support
It uses a lot of control clicking as I am not a DLLCALLER. lol PM me for any Docs/DLLs/and the sample program that I used this with. #NoTrayIcon #include <Array.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <StaticConstants.au3> Opt("TrayMenuMode", 1) ; Default tray menu items (Script Paused/Exit)will not be shown. Local $exititem = TrayCreateItem("Exit") $ini_file = @DesktopDir&"bioprints.ini" TraySetState() HotKeySet("{F9}","quit") $ini_exists = 1 If(FileExists($ini_file) = 0) Then $ini_exists = 0 EndIf $store_id = IniReadSection($ini_file,"store") If @error Then MsgBox(0,"","Error, store id unknown.") Exit EndIf $store_id = IniRead($ini_file,"store","store_id","0") ProcessClose("bio.exe") ProgressOn("","Loading finger prints","Please wait.") ConsoleWrite(23) $bio_title = "BSAPI Function Preview" Run(@DesktopDir&"biobio.exe","",@SW_MINIMIZE) Sleep(500) ControlClick($bio_title,"","ThunderRT6CommandButton39") Sleep(1100) ControlClick($bio_title,"","ThunderRT6CommandButton37") Sleep(1000) ControlSend($bio_title,"","ThunderRT6ComboBox12","B") Sleep(200) ProgressSet(20,"Retreiving finger prints") Local $search = FileFindFirstFile(@DesktopDir&"bio*.bir") Dim $prints[1] If $search = -1 Then MsgBox(0, "Error", "No files/directories matched the search pattern") Exit EndIf While 1 Local $file = FileFindNextFile($search) If @error Then ExitLoop $file = StringReplace($file,".bir","") _ArrayAdd($prints,$file) WEnd FileClose($search) ;_ArrayDisplay($prints) Sleep(200) $count = 0 $total_prints = UBound($prints)-1 if($ini_exists = 0) Then IniWrite($ini_file,"store","store_id","1") For $i In $prints If $i = "" Then ContinueLoop if($ini_exists = 0) Then IniWrite($ini_file,"prints",$count,"ID Not Set") ControlClick($bio_title,"","ThunderRT6CommandButton19") While Not WinExists("Open file") Sleep(1) WEnd Sleep(200) ControlSetText("Open file", "", "Edit1", @DesktopDir&"bio"&$i&".bir") ControlClick("Open file", "", "Button2") Sleep(200) ;Send("C:Documents and SettingsOwnerDesktopbio1.bir{ENTER}") ControlSetText($bio_title,'',"ThunderRT6TextBox3",$i) For $ii = 0 To 4 ControlSend($bio_title, "", "ThunderRT6ListBox1","{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}") Next ControlClick($bio_title, "", "ThunderRT6CommandButton16") $count += 1 ProgressSet(100/$total_prints*$count,"Loading print "&$count&" of "&$total_prints) Sleep(100) Next ProgressOff() Local $msg $gui = GuiCreate("Clock", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP); GUISetBkColor(0xffffff) ;$ie = _IECreateEmbedded() ;$ie_obj = GUICtrlCreateObj($ie,0,0,@DesktopWidth,@DesktopHeight) ;_IENavigate($ie,"http://google.com") $img = GUICtrlCreatePic(@DesktopDir&"print.jpg", @DesktopWidth/2-156, @DesktopHeight/2, 316, 450) $msg_label = GUICtrlCreateLabel("Please wait", @DesktopWidth/2-600, @DesktopHeight/2-200, 1200, 200, $SS_CENTER) GUICtrlSetFont(-1,40,600) $clock = GUICtrlCreateLabel("Loading...", @DesktopWidth/2-400, @DesktopHeight/2-400, 800, 200, $SS_CENTER) GUICtrlSetFont(-1,100,800) $clock2 = GUICtrlCreateLabel("", 0, 0, 400, 100, $SS_CENTER) GUICtrlSetFont(-1,60,800) GUICtrlSetColor(-1,0xebebeb) GUICtrlSetBkColor(-1,0x666666) update_clock() $ss_label = GUICtrlCreateLabel("",0,-1,@DesktopWidth,1) GUISetState(@SW_SHOW) ; will display an empty dialog box AdlibRegister("update_clock",500) AdlibRegister("screensaver",10000) GUICtrlSetData($msg_label,"Please Swipe Your Finger To Clock In/Out") ;;WinSetState($bio_title,"",@SW_MAXIMIZE) For $ii = 0 To 4 ControlSend($bio_title, "", "ThunderRT6ListBox1","{UP}{UP}{UP}{UP}{UP}{UP}{UP}{UP}{UP}{UP}") Next For $ii = 0 To 4 ControlSend($bio_title, "", "ThunderRT6ListBox1","{SHIFTDOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{SHIFTUP}") Next ControlClick($bio_title, "", "ThunderRT6CommandButton14") AdlibRegister("scan_print",1500) While 1 Local $msg = TrayGetMsg() Select Case $msg = 0 ContinueLoop Case $msg = $exititem quit() EndSelect $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then quit() WEnd Exit Func scan_print() $status = ControlGetText($bio_title,"","ThunderRT6TextBox9") If $status = "Processing, please wait ..." Then Return False ElseIf StringInStr($status,"Match found in slot ") > 0 Then ControlSetText($bio_title,"","ThunderRT6TextBox9","") $slot = StringReplace($status,"Match found in slot ","") $list = ControlGetText($bio_title, "", "ThunderRT6ListBox1") ConsoleWrite("Match found in slot: "&$slot&" "&$list&@CRLF) $id = IniRead($ini_file, "prints",$slot,"-1") If $id = -1 Then GUICtrlSetData($msg_label,"Match found but user id unknown.") Return Else GUICtrlSetData($msg_label,"Please Wait...") $response = "Test" $response = BinaryToString($response) If StringInStr($response,"clocked in") > 0 Then Run(@DesktopDir&"tasks.exe "&$id&" "&$store_id, "", @SW_SHOW) EndIf GUICtrlSetData($msg_label,$response) AdlibRegister("screensaver",10000) EndIf Sleep(200) ControlClick($bio_title, "", "ThunderRT6CommandButton14") ElseIf $status = "ABSVerify: No Match" Then ConsoleWrite("No match found. Please try again"&@CRLF) GUICtrlSetData($msg_label,"No match found. Please try again") Sleep(200) ControlClick($bio_title, "", "ThunderRT6CommandButton14") ElseIf $status = "Operation has been interrupted due timeout" Then Sleep(200) ControlClick($bio_title, "", "ThunderRT6CommandButton14") EndIf EndFunc Func update_clock() If @HOUR > 12 Then $ampm = "PM" $hour = @HOUR - 12 Else $ampm = "AM" $hour = @HOUR EndIf If GUICtrlRead($clock) <> $hour&":"&@MIN&" "&$ampm Then GUICtrlSetData($clock, $hour&":"&@MIN&" "&$ampm) If GUICtrlRead($clock2) <> $hour&":"&@MIN&" "&$ampm Then GUICtrlSetData($clock2, $hour&":"&@MIN&" "&$ampm) EndFunc Func screensaver() GUICtrlSetData($msg_label, "Please Swipe Your Finger To Clock In/Out") GUICtrlSetPos($clock2,Random(0,@DesktopWidth-100),Random(0,@DesktopHeight-100)) EndFunc Func quit() ProgressOn("Quiting","Please wait") ProcessClose("bio.exe") Sleep(500) ProgressOff() Exit EndFunc- 8 replies
-
- finger print reader program
- finger print reader
- (and 3 more)
-
Display current track from Spotify in Skype
ConsultingJoe replied to Zisly's topic in AutoIt Example Scripts
Cool simple script tho. You kinda cheat tho by getting the song via the title and not ripping into the gui to get it. But what every get the result. Good job. -
Finger Print Reader Program
ConsultingJoe replied to ConsultingJoe's topic in AutoIt General Help and Support
Ok, so I got my script to automate the sample app and it is able to load all finger print template files from a directory and then it will constantly attempt to verify finger prints and currently outputs to ConsoleWrites to what slot/user swiped their finger and if there was an error or if it was not found among the prints on file. Cool A, lol? I will try to like or upload the DLL/Sample/Doc files if anyone is a PRO DLL CALLER, lol cuz I sure am aint. Otherwise I can also post the sample code for where I'm at and anyone can work off of that. ZeroCool- 8 replies
-
- finger print reader program
- finger print reader
- (and 3 more)
-
Finger Print Reader Program
ConsultingJoe replied to ConsultingJoe's topic in AutoIt General Help and Support
Yes, I signed up for the SDK and got all the files and docs but dllcalls are very hard for me to figure out with the pointers and the right types. If anyone would like to help thats where I'm stuck. I've built off of a sample app but its not the right way. But its cool you can change a patter of led blinks and the speed, you can enroll and verify finger prints, you can EVEN use it for navigation, just like the old little nipple track balls on IBM laptops. So. tomorrow, I can post a like to the DOCs/DLL/my code & sample apps if you have any recommendations. Thanks.- 8 replies
-
- finger print reader program
- finger print reader
- (and 3 more)