2010-02-18 136 views
0

我想写一个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) 

末次

回答

1

你不是在一个线程环境中运行的LotusScript,所以你怎么能指望停止已在运行的代码的按钮上的代码?

1

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