waitregex inputstr does not contain recieved line when command timesout
In current version, waitregex command doesn't clear inpustr, matchstr and groupmatchstr1..9 when a expected string wasn't receive.
Please check 'result' variable to judge success or failure of waitregex command.
https://ttssh2.osdn.jp/manual/en/macro/command/waitregex.html
I created a snippet of code to demonstrate what I am doing. I have a pass through device that sends SDI-12 commands to a sensor and the sensor responds to the commands.
When the response matches the regular expression the returned value is placed in the inputstr and the matchstr variables.
When the response does not match the regular expression the previous responses that did match are located in the inpustr and matchstr variables.
I was expecting the inputstr and all matchstr variables would be set to null and then the received string would be captured to the inputstr and if the regular expression matched it would also be copied to the matchstr variable.
; waitregex demonstrates how inputstr does not contain most recent result but contains last matched result
; Description:
; Updated: 09/19/2017 Initial release
; Author: Scott Breyman
timeout = 1
send '?R0!'
;expected result
waitregex '0\+\d+\.\d{2}+-\d+\.\d\+0-9+\r'
sprintf2 strMessage 'inputstr "%s"\nmatchstr "%s"' inputstr matchstr
strspecial strMessage
messagebox strMessage 'match'
send '?R0!'
;expected result
waitregex '0\+\d+\.\d{2}+-\d+\.\d\r'
sprintf2 strMessage 'inputstr "%s"\nmatchstr "%s"' inputstr matchstr
strspecial strMessage
messagebox strMessage 'no match'
end