Search code examples
user-interfacelotusscript

Why does this LotusScript halt during a loop?


I am trying to write a LotusScript to control a motor. The script I have for reading the bits seem to work fine, but I wish to add a stop button. I have all the commands for making the device stop, but the trouble I'm having is that whenever LotusScript is running through a loop, I cannot click on any of the other buttons.

Does anyone know a way around this???

The scripts I am using are below.

Thank-you kindly.

Andy Barlow

Sub readpositionsub Dim send_string As String
Dim readString As String Dim tempString As String readString = ""

REM Sets the "movement" cell to 6 (the movement int)
[b1].contents = "6"
Do While [b1].contents <> "7"

    readString = ""
    statusBitString = ""

    REM READ STATUS ===!!!===
    REM Open the handle to the motor
    handle =    init_RS232(19200)
    REM #1$ reads the status from the controller.
    send_string = "#1$"+Chr$(13)
    REM Ask the controller to store the results in bits
    resultStatus=write_RS232 (handle,send_string)

    REM Read Status by looping through all of the bits
    For n=0 To 8
        tempString = "*1234567"  
        sendReadCommand = read_RS232(handle,tempString)
        If Mid(tempString,1,1) = Chr$(13) Then
            Exit For
        Else
            statusBitString = statusBitString  + Mid(tempString,1,1)
        End If

    Next
    [b1].contents = Mid(statusBitString,7, 1)
    close_RS232(handle)
    REM End Read Status



    REM READ POSITION ===!!!===
    REM Open the handle to the motor
    handle =    init_RS232(19200)
    send_string = "#1C"+Chr$(13)
    t=write_RS232 (handle,send_string)  
    REM Reading Position
    For n=0 To 20
        tempString = "*1234567"  
        r = read_RS232(handle,tempString)
        If Mid(tempString,1,1) = Chr$(13) Then
            Exit For
        Else
            readString = readString + Mid(tempString,1,1)

        End If

    Next
    REM End Read Position
    [a1].contents=Mid(readString, 4)
    close_RS232(handle)

Loop

End Sub

And the stop button that should work should be... Object btnStop

Sub Click(Source As Buttoncontrol) REM initialise handle = init_RS232(19200)

REM Create the string for starting the motor
send_string = "#1S"+Chr$(13)

REM Send the string for starting the motor
resultStartMotor=write_RS232 (handle,send_string)

REM Close the spin handle
close_RS232(handle)

End Sub


Solution

  • You're not running your Lotusscript in a threaded environment, so how do you expect the code on a button to stop the code already running?