Hi,
vorab - bin ein blutiger Anfänger der folgendes Problem hat:
Ich habe eine Waage mit einer Seriellen Schnittstelle. Diese Serielle Schnittstelle ist auf einen Schnittstellenwandler geführt ( RS232 auf TCP/IP ). Wir haben bereits eine Applikation im Betrieb die Über TCP/IP Daten aus der Waage liest. Die Waage stellt hierfür einen speziellen Befehlsvorrat zur Verfügung. Kurzum - die Schnittstelle funktioniert. Der Quellcode dieser Applikation ist leider nicht einsehbar. Ich möchte diese Applikation nun mit Hilfe von AutoIt nachbilden. Ich bin auch mittlerweile in der Lage Daten an die Waage zu senden aber leider bekomme ich keine Antwort und auch keinen Fehler zurück. Es gibt die Möglichkeit den Schnittstellenwandler als TCP Client zu konfigurieren das habe ich auch versucht aber habe dennoch keine Antwort bekommen. Es muss wie bei der bestehenden Applikation auch einen Weg geben die Daten auch ohne die TCP Client Konfiguration zu lesen und zu schreiben. Ich hoffe das jemand von euch mir helfen kann.
Anbei mein Code:
;Tool für TMR Auslesen und Nullstellen der LKW-Waagen.
;Änderungen bitte eintragen
;Erstellung Version 1.0 Stand 20.04.2010 Sto AG Abt. TVAS Michael Blum
#include <GuiConstantsEx.au3>
#Include <Color.au3>
#include <Constants.au3>
#include <Word.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode",1)
TCPStartup() ; TCP wird initialisiert
;~ local $IP1 = "10.102.42.254" ;IP Adresse Waage 1
;~ local $IP2 = "10.101.34.20" ;IP Adresse Waage 2
;~ local $Port1 = 10000 ;TCP Port der Waage 1
;~ local $Port2 = 10002 ;TCP Port der Waage 2
local $IP1 = "10.103.42.172" ;IP Adresse Waage 1
local $IP2 = "10." ;IP Adresse Waage 2
local $Port1 = 8000 ;TCP Port der Waage 1
local $Port2 = 10002 ;TCP Port der Waage 2
local $Gewicht = "RN" ; Systec String für Gweichtswert lesen wenn Waage in Ruhe
local $ZeroIt = "SZ" ; Systec String für Waage Nullstellen
local $waage1 = 3 ;Adresse der Waageneinheit1 (Brückenwaage)
local $waage2 = 1 ;Adresse der Waageneinheit2 ( Gebäude 18)
Global $Ende
Global $socket
Global $Message
Global $SHOCKET
Global $myIP
GUICreate("LKW Waagen Nullstellen",700,700)
GUISetState(@sw_show)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit];GUICtrlCreateLabel("Waagenantwort:",40,200,600,300,1,1)
$Message = GUICtrlCreateList("Waagenantwort:",40,200,600,300,1)
$W1Read = GUICtrlCreateButton("Waage 1 lesen",40,600,110,50)
GUICtrlSetOnEvent($W1Read,"WA1RD")
$W2Read = GUICtrlCreateButton("Waage 2 lesen",160,600,110,50)
GUICtrlSetOnEvent($W2Read,"WA2RD")
$W1Zero = GUICtrlCreateButton("Waage 1 Nullstellen",280,600,110,50)
GUICtrlSetOnEvent($W1Zero,"WA1ZR")
$W2Zero = GUICtrlCreateButton("Waage 2 Nullstellen",400,600,110,50)
GUICtrlSetOnEvent($W2Zero,"WA2ZR")
$Ende = GUICtrlCreateButton("Ende",520,600,110,50)
GUICtrlSetOnEvent($Ende, "Onexit")
while 1
;sleep(2000)
wend
func WA1RD ()
$socket = TCPConnect($IP1, $Port1)
If $socket = -1 Then ; Wenn $socket = -1 ist, Fehlermeldung ausgeben
MsgBox(16, "Error", "Die Verbindung zum Server konnte nicht hergestellt werden!") ; Fehlermeldung
EndIf
$sendedBytes = TCPSend($socket, $Gewicht & $Waage1)
If $sendedBytes = 0 Then ; Wenn der Rückgabewert von TCPSend(...) 0 ist, Fehlermeldung ausgeben
MsgBox(16, "Error", "Das Paket konnte nicht gesendet werden.") ; Fehlermeldung
EndIf
TCPCloseSocket($socket)
call("AntwortW1")
EndFunc
func WA2RD ()
$socket = TCPConnect($IP2, $Port2)
If $socket = -1 Then ; Wenn $socket = -1 ist, Fehlermeldung ausgeben
MsgBox(16, "Error", "Die Verbindung zum Server konnte nicht hergestellt werden!") ; Fehlermeldung
EndIf
$sendedBytes = TCPSend($socket, $Gewicht & $Waage2)
If $sendedBytes = 0 Then ; Wenn der Rückgabewert von TCPSend(...) 0 ist, Fehlermeldung ausgeben
MsgBox(16, "Error", "Das Paket konnte nicht gesendet werden.") ; Fehlermeldung
EndIf
TCPCloseSocket($socket)
call("AntwortW2")
EndFunc
func WA1ZR ()
$socket = TCPConnect($IP1, $Port1)
If $socket = -1 Then ; Wenn $socket = -1 ist, Fehlermeldung ausgeben
MsgBox(16, "Error", "Die Verbindung zum Server konnte nicht hergestellt werden!") ; Fehlermeldung
EndIf
$sendedBytes = TCPSend($socket, $ZeroIt & $Waage1)
If $sendedBytes = 0 Then ; Wenn der Rückgabewert von TCPSend(...) 0 ist, Fehlermeldung ausgeben
MsgBox(16, "Error", "Das Paket konnte nicht gesendet werden.") ; Fehlermeldung
EndIf
TCPCloseSocket($socket)
call("AntwortW1")
EndFunc
func WA2ZR ()
$socket = TCPConnect($IP2, $Port2)
If $socket = -1 Then ; Wenn $socket = -1 ist, Fehlermeldung ausgeben
MsgBox(16, "Error", "Die Verbindung zum Server konnte nicht hergestellt werden!") ; Fehlermeldung
EndIf
$sendedBytes = TCPSend($socket, $ZeroIt & $Waage2)
If $sendedBytes = 0 Then ; Wenn der Rückgabewert von TCPSend(...) 0 ist, Fehlermeldung ausgeben
MsgBox(16, "Error", "Das Paket konnte nicht gesendet werden.") ; Fehlermeldung
EndIf
TCPCloseSocket($socket)
call("AntwortW2")
EndFunc
func AntwortW1()
[/autoit][autoit][/autoit][autoit]$myPort = 8000
[/autoit][autoit][/autoit][autoit];~ $myip = "10.103.42.249"
$myIP = @IPAddress1
$mainsocket = TCPListen($myIP, $myPort)
;~ $mainsocket = TCPListen($myip, $Port1)
While 1 ; Endlosschleife
$acceptedSocket = TCPAccept($mainsocket) ; Wir versuchen eine möglicher Verbindung anzunehmen
If $acceptedSocket <> -1 Then ; Wenn $acceptedSocket ungleich -1 ist, ...
$receivedData = TCPRecv($acceptedSocket, $myPort) ; Wenn eine Socketverbindung hergestellt wurde, empfange ein Paket vom Client ($connectedSocket)
MsgBox(64, "Nachricht empfangen!", "Es wurde eine Nachricht empfangen: " & $receivedData)
GUICtrlSetData($Message,$receivedData)
TCPCloseSocket($acceptedSocket)
ExitLoop
EndIf
;~ msgbox(1,"sally","hoi")
[/autoit][autoit][/autoit][autoit]WEnd
;TCPCloseSocket($socket)
TCPShutdown()
EndFunc
[/autoit][autoit][/autoit][autoit]func AntwortW2()
[/autoit][autoit][/autoit][autoit]$myPort = 10000
$myip = "10.103.42.249"
;$myIP = @IPAddress1
$mainsocket = TCPListen($myip, $myPort)
[/autoit][autoit][/autoit][autoit]While 1 ; Endlosschleife
$acceptedSocket = TCPAccept($mainsocket) ; Wir versuchen eine möglicher Verbindung anzunehmen
If $acceptedSocket <> -1 Then ; Wenn $acceptedSocket ungleich -1 ist, ...
$receivedData = TCPRecv($acceptedSocket, $myPort) ; Wenn eine Socketverbindung hergestellt wurde, empfange ein Paket vom Client ($connectedSocket)
MsgBox(64, "Nachricht empfangen!", "Es wurde eine Nachricht empfangen: " & $receivedData)
GUICtrlSetData($Message,$receivedData)
TCPCloseSocket($acceptedSocket)
ExitLoop
EndIf
WEnd
[/autoit][autoit][/autoit][autoit]; TCPShutdown()
[/autoit][autoit][/autoit][autoit]EndFunc
[/autoit][autoit][/autoit][autoit]; Raus hier.....
Func CLOSEClicked()
;TCPShutdown()
Exit
EndFunc
func onexit ()
If @GUI_CtrlId = $Ende Then
;TCPShutdown()
Exit
EndIf
EndFunc