为什么LotusScript在循环中暂停?
问题描述:
我想写一个LotusScript来控制电机。我用于阅读这些位的脚本似乎工作正常,但我希望添加一个停止按钮。我拥有使设备停止的所有命令,但是我遇到的麻烦是每当LotusScript运行一个循环时,我都无法点击其他任何按钮。为什么LotusScript在循环中暂停?
有没有人知道解决这个问题的方法?
我使用的脚本如下。
谢谢你亲切。
安迪巴洛
子readpositionsub 昏暗send_string作为字符串
昏暗readString作为字符串 昏暗tempString作为字符串 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
结束子
和停止按钮该工作应该是... 对象btnStop
次点击(来源作为Buttoncontrol) REM初始化 手柄= 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)
末次
答
你不是在一个线程环境中运行的LotusScript,所以你怎么能指望停止已在运行的代码的按钮上的代码?
答
如果你想能够取消循环,你需要使用定时器对象。基本上你开始执行循环的一次迭代。在开始时,您会查找更改的字段值或ini变量以取消定时器(如果已设置)。现在你可以使用你的按钮来设置该变量。 循环将比没有定时器的情况下运行慢得多(毕竟它具有设置的等待间隔)