Programmieren - alles kontrollieren 4.938 Themen, 20.667 Beiträge

*.bat funktioniert nicht richtig unter Win2000

Zero Gravity / 4 Antworten / Flachansicht Nickles

Hallo zusammen,


Folgende zwei *.bat Dateien habe ich unter Win98 problemlos über längere Zeit benutzt.


Die erste Bat-Datei ist dafür geschrieben worden ein Handy (Siemens S25) an der COM2 anzusteuern um eine Telefonummer zu wählen. Zusätzlich wurde eine WAV-Datein abgespielt. Nach Ablauf einer Zeit wurde ein Befehl an das Handy geschickt um aufzulegen. Die BAT-Datei im wesentlichen funktioniert unter Win2000, aber die dafür benötigten Programme wait.com und wavplay.exe nicht. Der erste Teil dieser BAT-Datein ist dafür geschrieben worden das die Datei nicht ein zweites mal ausgefürt wird während sie noch bearbeitet wird, die ist umbedingt notwendig. Die BAT-Datei befand sich in C:/Verzeichnis1/Verzeichnis2/beispiel.bat


//@echo off


cd..


cd..


SET LOCK="C:\Alarm"


IF NOT EXIST %LOCK% GOTO LOCKED


GOTO END


:LOCKED


echo LOCKFILE > %LOCK%


C:\Winnt\System32\mode com2 19200,n,8,1


C:\wait 2


echo ATZ>com2


C:\wait 2


echo atd0123456789;>com2


C:\wait 2


C:\wavplay.exe C:\musik.wav


C:\wait 5


echo at+chup>com2


echo at+chup>com2


C:\wait 2


echo atd9876543210;>com2


C:\wait 15


echo at+chup>com2


echo at+chup>com2


IF EXIST %LOCK% DEL %LOCK%


IF EXIST %LOCK% DEL %LOCK%


:END


 


Die zweite BAT-Datei wurde dazu verwendet einen Eintrag in eine txt-Datei vorzunehmen. Der Eintrag sah folgendet Maßen aus:


Mo 15.12.2003 17:56:34 Hinweis in Datei


Dazu wurde das Programm logecho.com verwendet. Auch diese funktioniert nicht unter Win2000.


@echo off


C:\logecho $W  $D.$M.$C$Y  $h:$m:$s  Hinweis in Datei>>C:\Datei.txt


 


Kann mir jemand sagen wie ich diese Funktionen unter Win2000 realisiert bekomme? Diese müsste doch eigentlich mit einem VBScript funktioniern, aber wie programmiert man eine solches Script? Und wie kann ich es dann ausführen?


Die BAT-Datein wurden automatisch aus einem anderen Programm heraus aufgerufen. Sie dienten einer Art Alarmierung.


 


Danke schon mal im Voraus.


MfG Zero Gravity

bei Antwort benachrichtigen
Pumbo Zero Gravity „*.bat funktioniert nicht richtig unter Win2000“
Optionen

Hallo @Zero!

Die Idee mit VB-Script zu arbeiten, ist grundsätzlich richtig, doch hast Du nach meiner Erfahrung massive Problem beim Ansprecehn der RS232. Zu diesem Problemkomplex hat KAINKA ein Buch veröffentlicht, dass sich mit der Messdatenerfassung mittels VB-Script unter Word und EXCEL via RS232 beschäftigt. Auf der beiliegenden CD hat er entsprechende Routinen (DLLs) veröffentlicht, die in die VB-Umgebung eingebunden werden und so, ähnlich zu den o.a. Programmbeispiel "Handy", ein direktes Ansprechen der Schnittstelle mittels "VB-Befehlen" ermöglichen. KAINKA gibt in dem Buch eine sehr gute Einführung in die VB-Script-Programmiererei. Ich denke, wenn Du in der Lage bist, o.a. BATCH-Script zu erstellen (übrigens: respekt, gute Idee, habe selber an so was noch gar nicht gedacht), dann wird das für Dich ein "Heimspiel". Das Buch heißt: "MSR mit WORD und EXCEL" (guckst Du hier: http://www.b-kainka.de/buch2.htm)
Folgend ein von mir dazu veröffentlichtes Demo-Programme zum Ansprechen eines DACs mittels ASCI-Strings über die RS232 aus EXCEL heraus und Visualisierung der Messdaten auf einem Arbeitsblatt in Echtzeit. Wie Du siehst, wird die RS232 mittels neu eingeführten Befehl OPENCOM, CLOSECOM resp. READ- und WRITE- Befehlen angesprochen, die vorher deklariert werden.

Gruß

Pumbo

Declare Sub OPENCOM Lib "RSAPI.DLL" (ByVal A$)
Declare Sub CLOSECOM Lib "RSAPI.DLL" ()
Declare Sub TIMEOUT Lib "RSAPI.DLL" (ByVal ms%)
Declare Sub STRREAD Lib "RSAPI.DLL" (ByVal A$)
Declare Sub STRLENGTH Lib "RSAPI.DLL" (ByVal L%)
Declare Sub TIMEINIT Lib "RSAPI.DLL" ()
Declare Function TIMEREAD Lib "RSAPI.DLL" () As Long
Declare Sub SENDBYTE Lib "RSAPI.DLL" (ByVal B%)
Declare Function SENDSTRING Lib "RSAPI.DLL" (ByVal S As String) As Integer
Declare Function READBYTE Lib "RSAPI.DLL" () As Integer
Declare Sub DELAY Lib "RSAPI.DLL" (ByVal ms%)



Option Explicit
Dim Setup, ZDat$, M1$, M, KZ, MSRK, Kanal$, ZEILE, EOF$, MSR$, T 'Benutzte Variablen




Sub MSR55()
Sheets("MD1").Select
Columns("A:k").Select
Selection.ClearContents
Application.Calculation = xlAutomatic

TIMEOUT 10000
MSRK = 10 'Variable Messkanalanzahl MSR55
ZEILE = 2 'Variable Zeilenposition Messwerte
OPENCOM "com2,9600,N,8,2"
'MSR Setup
GoSub MSR1:
SENDSTRING "L" + Chr(13)
DELAY 4000
GoSub MSR1:
SENDSTRING "U00,00,00,00,00" + Chr(13)

GoSub MSR1:
SENDSTRING "A1," + MSRK + Chr(13) 'Aktivieren von Messkanälen
For KZ = 1 To MSRK
GoSub MSR1:
SENDSTRING "M" + KZ + ",7" + Chr(13) 'Bestimmung des Sensortypes je Messkanal

GoSub MSR1:
SENDSTRING "W" + KZ + ",2" + Chr(13) 'Bestimmung der Auflösung je Messkanal
Next KZ

TIMEINIT

s1:
Application.Calculation = xlManual

T = TIMEREAD / 1000


KZ = 1
GoSub MSR1:
'Auslesung Datum Uhrzeit
SENDSTRING "K" + Chr(13)
STRLENGTH 30
ZDat$ = "123456789012345678901234567890"
STRREAD (ZDat$)
If Left$(ZDat$, 1) "Z" Then GoTo s1:
Cells(1, 1).Value = Left$(ZDat$, 29)
Cells(ZEILE, 1).Value = T
SENDSTRING Chr(6)


S2: 'Messdatenauslesung
KZ = KZ + 1
STRLENGTH 12
M1$ = "123456789012"
STRREAD (M1$)
If ZEILE = 2 Then Cells(ZEILE - 1, KZ).Value = "Kanal " + Right$(Left$(M1$, 3), 2) 'Kanalbeschriftung
M = Val(Right$(M1$, 6))
Cells(ZEILE, KZ).Value = M 'Messdatum
SENDSTRING Chr(6)
If KZ = MSRK + 1 Then ZEILE = ZEILE + 1
If KZ

Application.Calculation = xlAutomatic

'Auslesung Signalübermittlungsende
STRLENGTH 2
EOF$ = "12"
STRREAD (EOF$)
If Left$(EOF$, 1) = "#" Then GoTo s1:
GoTo s1:

CLOSECOM
End

'MSR55 - Signalübermittlungsroutine
MSR1: SENDBYTE Asc("@")
STRLENGTH 1
MSR$ = "1"
STRREAD (MSR$)

If MSR$ "!" Then GoTo MSR1:
Return





End Sub

bei Antwort benachrichtigen