Thread regexp als Funktionsparameter übergeben (1 answers)
Opened by Gast at 2006-10-06 13:43

Gast Gast
 2006-10-06 13:43
#70560 #70560
Hallo,
ich möchte eine Funktion bauen, die aktiv auf den Empfang einer bestimmten Zeichenfolge über die serielle Schnittstelle wartet. D.h. die Funktion wird beendet, wenn eine Zeichenfolge empfangen wurde, die einem als Parameter zu übergebenden reg. Ausdruck matcht oder ein timeout erreicht wurde. Hier ein Beispiel für den Aufruf:
Code: (dl )
waitFor(/OK|ERROR|\+CME ERROR: *(0-9)+/, 5.0);  # warte 5s auf 'OK' oder 'ERROR' oder '+CME ERROR:<errorCode>

bisher sieht meine Kreation so aus, dass ich den reg. Ausdruck als String übergebe:
Code: (dl )
waitFor("OK|ERROR|\\+CME ERROR: *(0-9)+", 5.0);  # warte 5s auf 'OK' oder 'ERROR' oder '+CME ERROR:<errorCode>

was mir allerdings nicht gefällt, weil, wenn im String keine korrekte regExp drin steht, dann meldet mir perl den Fehler an der Stelle, wo sie ausgewertet wird, also mitten in waitFor und nicht an der Stelle, wo waitFor aufgerufen wird. Ausserdem stinken mir die doppelten backslashes, wenn ich den + maskieren will.

Wie muss ich nun das Parameterauslesen in waitFor implementieren, damit es, so wie im ersten Code-Schnippsel angegeben, funktioniert?

Danke

View full thread regexp als Funktionsparameter übergeben