Hier eine kleine Funktion, die alle vorhandenen COM-Ports auflistet.
Vllt ist das ja mal für wen ganz nützlich.
Spoiler anzeigen
#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]Local $aComPort = _GetComPorts()
_ArrayDisplay($aComPort)
Local $sComPort = _GetComPorts("com1")
If @error Then
MsgBox(16, "Error " & @error, "No matching COM port found.")
Else
ConsoleWrite($sComPort & @CRLF)
EndIf
; #FUNCTION# ====================================================================================================================
; Name...........: _GetComPorts
; Description ...: Lists all com ports and their names to a 2D array, or returns only the name of the given com port
; Syntax.........: _GetComPorts($sComPort = "")
; Parameters ....: $sComPort - Either "" (blank) for array or a string like "1" or "COM1"
; Return values .: Success - Either an array or a string (depends on $sComPort)
; Failure - -1, sets @error
; |1 - No matching COM port found.
; Author ........: funkey
; Date ..........: 2010, Nov 29th
; Modified.......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: Yes
; ===============================================================================================================================
Func _GetComPorts($sComPort = "")
Local $objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
Local $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_PnPEntity WHERE Name LIKE '%(COM%" & StringReplace($sComPort, "COM", "") & ")'", "WQL", 48)
Local $sRet = ""
For $objItem In $colItems
$sRet &= $objItem.Name & @CR
Next
If $sRet = "" Then Return SetError(1, 0, "")
If $sComPort <> "" Then
If Not StringInStr($sRet, $sComPort) Or Not StringIsInt(StringRight($sComPort, 1)) Then Return SetError(1, 0, "")
$sRet = StringTrimRight($sRet, StringLen("COM" & StringReplace($sComPort, "COM", "")) + 4)
Return $sRet
EndIf
Local $aTemp = StringSplit($sRet, @CR, 2)
Local $aRet[UBound($aTemp) - 1][2]
For $i = 0 To UBound($aTemp) - 2
$aRet[$i][0] = StringTrimRight(StringTrimLeft($aTemp[$i], StringInStr($aTemp[$i], "(", 0, -1)), 1)
$aRet[$i][1] = StringLeft($aTemp[$i], StringInStr($aTemp[$i], "(", 0, -1) - 2)
Next
Return $aRet
EndFunc ;==>_GetComPorts