2010-02-18 98 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變量以取消定時器(如果已設置)。現在你可以使用你的按鈕來設置該變量。 循環將比沒有定時器的情況下運行慢得多(畢竟它具有設置的等待間隔)