为什么这个LotusScript在循环中停止?

时间:2010-02-18 11:39:45

标签: user-interface lotusscript

我正在尝试编写一个LotusScript来控制电机。我用于读取位的脚本似乎工作正常,但我想添加一个停止按钮。我有使设备停止的所有命令,但我遇到的麻烦是每当LotusScript运行循环时,我都无法点击任何其他按钮。

有没有人知道解决这个问题?

我正在使用的脚本如下。

谢天谢地。

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

应该有效的停止按钮应该是...... 对象btnStop

Sub Click(Source As Buttoncontrol)     REM初始化     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

2 个答案:

答案 0 :(得分:1)

您没有在线程环境中运行Lotusscript,那么您如何期望按钮上的代码停止已经运行的代码?

答案 1 :(得分:1)

如果您想取消循环,则需要使用计时器对象。基本上你开始执行循环的一次迭代。在开始时,您将查找已更改的字段值或ini变量以在设置时取消计时器。现在您可以使用按钮设置该变量。 循环运行速度比没有计时器慢得多(毕竟它设置了等待间隔)