Hi
mein Srcipt soll eine RS232 Verbindung erstellen, das macht sie leider nur wenn ich vorher Putty auf dem jeweiligen Port einmal geöffnet habe. Danach kann ich immer zwischen den Ports hin und her schalten.
hätte vielleicht jemand eine Idee voran das liegt, dass bei meinem Script keine verbinden ensteht. Wird vielleicht die .dll nicht geladen?
hier ein Teil von meinem Script
Spoiler anzeigen
#include "CommInterface.au3"
#include <MsgBoxConstants.au3>
#include <WinAPI.au3>
#include <SliderConstants.au3>
#include <StaticConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiEdit.au3>
#include <array.au3>
#include <string.au3>
#Include <File.au3>
#include "CommAPI.au3"
$LabelNewTxt = ""
$aRes = _GetGlobalResolution()
$hight = $aRes[Ubound($aRes)-1] - $aRes[Ubound($aRes)-1] ; Gui an Monitor anpassen
$wight = $aRes[Ubound($aRes)-2] - $aRes[Ubound($aRes)-2]
$hightwin = $aRes[Ubound($aRes)-1] - 170
$wightwin = $aRes[Ubound($aRes)-2] - 10
$Buttonhight = 150 * $aRes[Ubound($aRes)-1] / 900
$Buttonwight = 200 * $aRes[Ubound($aRes)-2] / 1440
Opt("GUIOnEventMode", 1);Die Gui auf den OnEventMode umschalten
$Form1 = GUICreate("Master Blaster V 2.00", int($wightwin),Int ($hightwin),Int($wight),Int($hight))
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUISetFont(22)
GUICtrlCreateLabel("TC-SIA Steuerung über RS-232", 20, 10, 500, 40)
GUISetFont(10)
$sedit=GUICtrlCreateEdit ("First line"& @CRLF, 4*$Buttonwight + $Buttonwight/2 + 10,10,$wightwin - (4*$Buttonwight + $Buttonwight/2+10) ,$hightwin-20,$ES_AUTOVSCROLL+$WS_VSCROLL)
;GUICtrlSetOnEvent($myedit,"$LOG")
$Btn1 = GUICtrlCreateButton("ChargeH", 20, $Buttonhight + 130, $Buttonwight, $Buttonhight)
GUICtrlSetOnEvent($Btn1,"ChargeH") ; Hier wird dem Button die Funktion "Button1" zugewiesen. Das gleiche macht man dann auch mit dem zweiten Button.....
GUICtrlCreateLabel("COM-Port Auswählen:", 20, $hightwin-60, 200, 25)
$AuswahlCOM = GUICtrlCreateCombo("", 20, $hightwin-40, 100, 25)
GUICtrlSetOnEvent($AuswahlCOM,"PortNeu")
GUICtrlSetData(-1, " COM 1| COM 2| COM 3| COM 4| COM 5| COM 6| COM 7| COM 8")
GUISetState()
$iP = 4
Global Const $iBaud = 115200
Global Const $iParity = 0
Global Const $iByteSize = 8
Global Const $iStopBits = 1
If FileExists("Port.txt") Then FileDelete("Port.txt") ;Wenn die Datei vorhanden ist wird sie gelöscht!!!
_FileCreate("Port.txt") ;Erstellt die Datei
$hFile = _CommAPI_OpenCOMPort($iP, $iBaud, $iParity, $iByteSize, $iStopBits)
Func PortNeu() ;Neuen Com-Port wählen
_CommAPI_ClosePort($hFile)
If @error Then Return SetError(@error, @extended, @ScriptLineNumber)
$iP = StringRight(GUICtrlRead($AuswahlCOM),1)
filewrite("Port.txt", $iP)
global $hFile = _CommAPI_OpenCOMPort($iP, $iBaud, $iParity, $iByteSize, $iStopBits)
EndFunc
While True
sleep(100)
If Not _CommAPI_WaitCommEvent($hFile) = "0" Then ;Antwort in Edit schreiben
$sResult = _CommAPI_ReceiveData($hFile)
_GUICtrlEdit_AppendText($sedit, $sResult)
EndIf
WEnd
Func ChargeH()
_CommAPI_TransmitData($hFile, "$C00:chargeh:00" & @CRLF); Befehl senden
_GUICtrlEdit_AppendText($sedit, "$C00:chargeh:00" & @CRLF)
EndFunc
Func _GetGlobalResolution(); Auslesen der Monitorgröße
Local $aRes[4], $hWindow, $stRET
$hWindow = _WinAPI_GetDesktopWindow()
$stRET = _WinAPI_GetWindowPlacement($hWindow)
If Not @error Then
$aRes[0] = DllStructGetData($stRET, 'rcNormalPosition', 1) ; left
$aRes[1] = DllStructGetData($stRET, 'rcNormalPosition', 2) ; top
$aRes[2] = DllStructGetData($stRET, 'rcNormalPosition', 3) ; right
$aRes[3] = DllStructGetData($stRET, 'rcNormalPosition', 4) ; bottom
Return $aRes
Else
Return SetError(1, 0, 0)
EndIf
EndFunc ;==>_GetGlobalResolution
Func CLOSEClicked() ;Damit man auch das Fenster wieder schliessen kann, da im OnEventMode ohne dies nix passiert.
MsgBox(0, "GUI Event", "Du hast auf CLOSE geklickt! Programm wird beendet...")
Exit
EndFunc
schon Mal Danke im Voraus
Lyki
edit: Problem gelöst. Erst nen _CommAPI_CreateModeString verwenden dann geht es.