找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 764|回复: 0

keyence yamaha robot biaoding

[复制链接]

351

主题

341

回帖

2433

积分

管理员

积分
2433
发表于 2025-1-15 11:11:08 | 显示全部楼层 |阅读模式
'NAME=KEYENCE_ROBOT_VISION_SETUP
'PGN=1
'
' **********************************************************
' Keyence Robot Vision Setup Program
'
' This program is for setting up the robot vision system using
' Keyence乫s vision sensor.
' Please do not use it for purposes other than its original intended purpose.
' With regard to robot operation, please use the robot while following
' the precautions stated in the 乬User乫s Manual乭.
'
' Copyright (c) 2015 KEYENCE CORPORATION. All rights reserved.
'
' **********************************************************
' **** Command String ****
CLOSE GP0
CMD_NAME$ = "CRBT,"
' **** Result ****
RES_SUCCESS% = 0
RES_FAIL% = 1
RES_ERR_PARAM_RANGE_OVER% = 2
RES_ERR_MOVE_RANGE_OVER% = 2
RES_UNSUPPORTED% = 3
RES_DUMMY_NUM% = 0
' **** Operation ID ****
OPID_ECHO% = 1
OPID_GET_PRM% = 2
OPID_SET_PRM% = 3
OPID_CUR_POS% = 4
OPID_REL_MOVE% = 5
OPID_ABS_MOVE% = 6
OPID_GET_VER% = 7
OPID_GET_TOOL% = 8
OPID_CUR_POS_HP% = 9
OPID_REL_MOVE_HP% = 10
OPID_ABS_MOVE_HP% = 11
OPID_INVALID% = -1
' **** Number of Response Parameters ****
RES_PRM_NUM_ECHO% = 2
RES_PRM_NUM_GET_PRM% = 5
RES_PRM_NUM_SET_PRM% = 5
RES_PRM_NUM_CUR_POS% = 6
RES_PRM_NUM_REL_MOVE% = 6
RES_PRM_NUM_ABS_MOVE% = 6
RES_PRM_NUM_GET_VER% = 2
RES_PRM_NUM_GET_TOOL% = 6
' **** Command Parameter Index ****
RCV_ID_OPERATION% = 1
RCV_ID_REQUEST% = 2
RCV_ID_PARAM% = 3
RCV_POS_IDX_X% = RCV_ID_PARAM%
RCV_POS_IDX_Y% = RCV_POS_IDX_X% + 1
RCV_POS_IDX_Z% = RCV_POS_IDX_Y% + 1
RCV_POS_IDX_RX% = RCV_POS_IDX_Z% + 1
RCV_POS_IDX_RY% = RCV_POS_IDX_RX% + 1
RCV_POS_IDX_RZ% = RCV_POS_IDX_RY% + 1
RCV_POS_SMOOTH% = RCV_POS_IDX_RZ% + 1
RCV_POS_MOTION% = RCV_POS_SMOOTH% + 1
RCV_PRM_IDX_FMT% = RCV_ID_PARAM%
RCV_PRM_IDX_WORK% = RCV_PRM_IDX_FMT% + 1
RCV_PRM_IDX_TOOL% = RCV_PRM_IDX_WORK% + 1
RCV_PRM_IDX_SPD% = RCV_PRM_IDX_TOOL% + 1
RCV_PRM_IDX_ACC% = RCV_PRM_IDX_SPD% + 1
RCV_ECH_IDX_PRM1% = RCV_ID_PARAM%
RCV_ECH_IDX_PRM2% = RCV_ECH_IDX_PRM1% + 1
RCV_GET_TOOL_IDX_N% = RCV_ID_PARAM%
' **** Version ****
MAJOR_VER% = 2
MINOR_VER% = 1
DEV_VER% = 0
R_MAKER_ID% = 8
R_TYPE_ID% = 0
VERSION% = MAJOR_VER% * 1000000 + MINOR_VER% * 10000 + DEV_VER%
MAKERID% = R_MAKER_ID% * 10 + R_TYPE_ID%
' **** Format Information ****
FORMAT_DEFAULT% = 0
' **** Coeefficient ****
COEF_LENGTH = 1000
COEF_ANGLE = 10
COEF_ANGLE_HP = 1000
ROTATION_HALF_RANGE = 180
ROTATION_RANGE = 360
' **** Robot No. ****
ROBOT_NUMBER% = 1
' **** Parameter Range ****
KEY_VISION_NUM% = 10
WORK_MIN% = 0
WORK_MAX% = 9
WORK_OFF% = 0
TOOL_MIN% = 0
TOOL_MAX% = 9
TOOL_OFF% = 0
SPEED_MIN% = 1
SPEED_MAX% = 100
' **** Parameter ****
WorkNo% = 0
ToolNo% = 0
' **********************************************************
' * Function Main
' **********************************************************
MOTOR ON
SERVO ON
GOSUB *UtilInitParam
GOSUB *KeyConnect
WHILE(1)
    OprtID% = OPID_INVALID%     ' Operation ID
    ReqID% = 0                  ' Request ID
    DIM CmdPrm%(20)             ' Commad Parameters
    ResPrmNum% = 0              ' Number of Response Parameters
    PrmCnt% = 0
    ChkSum% = 0
    ResStatus% = MRES_SUCCESS%
    GOSUB *KeyInterpretCmd
    GOSUB *UtilCheckSum
    IF ResStatus% = RES_SUCCESS% THEN
        OprtID% = CmdPrm%(RCV_ID_OPERATION%)
        ReqID% = CmdPrm%(RCV_ID_REQUEST%)
        SELECT CASE OprtID%
            CASE OPID_ECHO%
                ResPrmNum% = RES_PRM_NUM_ECHO%
                GOSUB *KeyEcho
            CASE OPID_GET_PRM%
                ResPrmNum% = RES_PRM_NUM_GET_PRM%
                GOSUB *KeyGetRobotParam
            CASE OPID_SET_PRM%
                ResPrmNum% = RES_PRM_NUM_SET_PRM%
                GOSUB *KeySetRobotParam
            CASE OPID_CUR_POS%
                ResPrmNum% = RES_PRM_NUM_CUR_POS%
                GOSUB *KeyCurPos
            CASE OPID_REL_MOVE%
                ResPrmNum% = RES_PRM_NUM_REL_MOVE%
                GOSUB *KeyRelMove
            CASE OPID_ABS_MOVE%
                ResPrmNum% = RES_PRM_NUM_ABS_MOVE%
                GOSUB *KeyAbsMove
            CASE OPID_GET_VER%
                ResPrmNum% = RES_PRM_NUM_GET_VER%
                GOSUB *KeyGetProgVer
            CASE OPID_GET_TOOL%
                ResPrmNum% = RES_PRM_NUM_GET_TOOL%
                GOSUB *KeyGetToolData
            CASE OPID_CUR_POS_HP%
                ResPrmNum% = RES_PRM_NUM_CUR_POS%
                GOSUB *KeyCurPosHiPrec
            CASE OPID_REL_MOVE_HP%
                ResPrmNum% = RES_PRM_NUM_REL_MOVE%
                GOSUB *KeyRelMoveHiPrec
            CASE OPID_ABS_MOVE_HP%
                ResPrmNum% = RES_PRM_NUM_ABS_MOVE%
                GOSUB *KeyAbsMoveHiPrec
            CASE ELSE
                GOSUB *UtilSendResError
        END SELECT
    ENDIF
WEND
GOSUB *KeyClose
HALT
' **********************************************************
' * Function KeyConnect
' **********************************************************
*KeyConnect:
    'OFFLINE CMU
    OPEN GP0
    RETURN
' **********************************************************
' * Function KeyClose
' **********************************************************
*KeyClose:
    'ONLINE CMU
    CLOSE GP0
    RETURN
' **********************************************************
' * Function KeyInterpretCmd
' **********************************************************
*KeyInterpretCmd:
    PrmCnt% = 0
    FOR C% = 1 TO 16
        CmdPrm%(C%) = 0
    NEXT C%
    CALL *UtilRecvCmd(REF CmdStr$)
    A$ = MID$(CmdStr$,1,5)
    IF A$ <> CMD_NAME$ THEN
        RETURN
    ENDIF
    CMDLEN% = LEN(CmdStr$)
    B$ = ""
    FOR C% = 6 TO CMDLEN%
        A$ = MID$(CmdStr$, C%, 1)
        Split% = 0
        IF A$ = "," THEN
            Split% = 1
        ELSEIF C% = CMDLEN% THEN
            B$ = B$ + A$
            Split% = 1
        ENDIF
        IF Split% = 1 THEN
            PrmCnt% = PrmCnt% + 1
            CmdPrm%(PrmCnt%) = VAL(B$)
            B$ = ""
            IF PrmCnt% > 16 THEN EXIT FOR
        ELSE
            B$ = B$ + A$
        ENDIF
    NEXT C%
    RETURN
' **********************************************************
' * Function KeyEcho
' **********************************************************
*KeyEcho:
    GOSUB *UtilMakeResHeader
    ' *********************
    ResStr$ = ResStr$ + "," + STR$(CmdPrm%(RCV_ECH_IDX_PRM1%)) + "," + STR$(CmdPrm%(RCV_ECH_IDX_PRM2%))
    ChkSum% = ChkSum% + CmdPrm%(RCV_ECH_IDX_PRM1%) + CmdPrm%(RCV_ECH_IDX_PRM2%)
    ' *********************
    ResStr$ = ResStr$ + "," + STR$(ChkSum%)
    ' *********************
    CALL *UtilSendRes(ResStr$)
    RETURN
' **********************************************************
' * Function KeyGetRobotParam
' **********************************************************
*KeyGetRobotParam:
    GOSUB *UtilSendResRoboPrm
    RETURN
' **********************************************************
' * Function KeySetRobotParam
' **********************************************************
*KeySetRobotParam:
    ON ERROR GOTO *SetParamErrorProc
    IF CmdPrm%(RCV_PRM_IDX_WORK%) < WORK_MIN% OR WORK_MAX% < CmdPrm%(RCV_PRM_IDX_WORK%) THEN
        ResStatus% = RES_ERR_PARAM_RANGE_OVER%
    ELSE
        WorkNo% = CmdPrm%(RCV_PRM_IDX_WORK%)
        GOSUB *UtilSetWorkNumber
    ENDIF
    IF CmdPrm%(RCV_PRM_IDX_TOOL%) < TOOL_MIN% OR TOOL_MAX% < CmdPrm%(RCV_PRM_IDX_TOOL%) THEN
        ResStatus% = RES_ERR_PARAM_RANGE_OVER%
    ELSE
        ToolNo% = CmdPrm%(RCV_PRM_IDX_TOOL%)
        GOSUB *UtilSetToolNumber
    ENDIF
    IF CmdPrm%(RCV_PRM_IDX_SPD%) < SPEED_MIN% OR SPEED_MAX% < CmdPrm%(RCV_PRM_IDX_SPD%) THEN
        ResStatus% = RES_ERR_PARAM_RANGE_OVER%
    ELSE
        ASPEED[ROBOT_NUMBER%] CmdPrm%(RCV_PRM_IDX_SPD%)
    ENDIF
    ' *********************
    GOSUB *UtilSendResRoboPrm
    ON ERROR GOTO 0
    RETURN
' **********************************************************
' * Function KeyCurPos
' **********************************************************
*KeyCurPos:
    GOSUB *UtilSendResPos
    RETURN
' **********************************************************
' * Function KeyRelMove
' **********************************************************
*KeyRelMove:
    ON ERROR GOTO *MoveErrorProc
    IF CmdPrm%(RCV_POS_IDX_RX%) <> 0 OR CmdPrm%(RCV_POS_IDX_RY%) <> 0 THEN
        ResStatus% = RES_ERR_MOVE_RANGE_OVER%
    ELSE
        MoveRetry% = 0
        P99 = WHRXY[ROBOT_NUMBER%]
        LOC1(P99) = LOC1(P99) + CmdPrm%(RCV_POS_IDX_X%) / COEF_LENGTH
        LOC2(P99) = LOC2(P99) + CmdPrm%(RCV_POS_IDX_Y%) / COEF_LENGTH
        LOC3(P99) = LOC3(P99) + CmdPrm%(RCV_POS_IDX_Z%) / COEF_LENGTH
        LOC4(P99) = LOC4(P99) + CmdPrm%(RCV_POS_IDX_RZ%) / COEF_ANGLE
        LOC5(P99) = 0
        LOC6(P99) = 0
        MOVE[ROBOT_NUMBER%] L, P99
        MOVE[ROBOT_NUMBER%] P, P99
    ENDIF
    ' *********************
    GOSUB *UtilSendResPos
    ON ERROR GOTO 0
    RETURN
' **********************************************************
' * Function KeyAbsMove
' **********************************************************
*KeyAbsMove:
    ON ERROR GOTO *MoveErrorProc
    IF CmdPrm%(RCV_POS_IDX_RX%) <> 0 OR CmdPrm%(RCV_POS_IDX_RY%) <> 0 THEN
        ResStatus% = RES_ERR_MOVE_RANGE_OVER%
    ELSE
        MoveRetry% = 0
        P99 = WHRXY[ROBOT_NUMBER%]
        LOC1(P99) = CmdPrm%(RCV_POS_IDX_X%) / COEF_LENGTH
        LOC2(P99) = CmdPrm%(RCV_POS_IDX_Y%) / COEF_LENGTH
        LOC3(P99) = CmdPrm%(RCV_POS_IDX_Z%) / COEF_LENGTH
        Rz = CmdPrm%(RCV_POS_IDX_RZ%) / COEF_ANGLE
        RzBase = LOC4(P99) - Rz + ROTATION_HALF_RANGE
        RotOrgZ = RzBase / ROTATION_RANGE
        IF RotOrgZ < 0 THEN RotOrgZ = RotOrgZ - 1
        RotOrgZ = INT(RotOrgZ)
        Rz = Rz + RotOrgZ * ROTATION_RANGE
        LOC4(P99) = Rz
        MOVE[ROBOT_NUMBER%] L, P99
        MOVE[ROBOT_NUMBER%] P, P99
    ENDIF
    ' *********************
    GOSUB *UtilSendResPos
    ON ERROR GOTO 0
    RETURN
' **********************************************************
' * Function KeyGetProgVer
' **********************************************************
*KeyGetProgVer:
    GOSUB *UtilMakeResHeader
    ' *********************
    ResStr$ = ResStr$ + "," + STR$(VERSION%) + "," + STR$(MAKERID%)
    ChkSum% = ChkSum% + VERSION% + MAKERID%
    ' *********************
    ResStr$ = ResStr$ + "," + STR$(ChkSum%)
    ' *********************
    CALL *UtilSendRes(ResStr$)
    RETURN
' **********************************************************
' * Function KeyGetToolData
' **********************************************************
*KeyGetToolData:
    GOSUB *UtilSendResToolData
    RETURN
' **********************************************************
' * Function KeyCurPosHiPrec
' **********************************************************
*KeyCurPosHiPrec:
    GOSUB *UtilSendResPosHiPrec
    RETURN
' **********************************************************
' * Function KeyRelMoveHiPrec
' **********************************************************
*KeyRelMoveHiPrec:
    ON ERROR GOTO *MoveErrorProc
    IF CmdPrm%(RCV_POS_IDX_RX%) <> 0 OR CmdPrm%(RCV_POS_IDX_RY%) <> 0 THEN
        ResStatus% = RES_ERR_MOVE_RANGE_OVER%
    ELSE
        MoveRetry% = 0
        P99 = WHRXY[ROBOT_NUMBER%]
        LOC1(P99) = LOC1(P99) + CmdPrm%(RCV_POS_IDX_X%) / COEF_LENGTH
        LOC2(P99) = LOC2(P99) + CmdPrm%(RCV_POS_IDX_Y%) / COEF_LENGTH
        LOC3(P99) = LOC3(P99) + CmdPrm%(RCV_POS_IDX_Z%) / COEF_LENGTH
        LOC4(P99) = LOC4(P99) + CmdPrm%(RCV_POS_IDX_RZ%) / COEF_ANGLE_HP
        LOC5(P99) = 0
        LOC6(P99) = 0
        MOVE[ROBOT_NUMBER%] L, P99
        MOVE[ROBOT_NUMBER%] P, P99
    ENDIF
    ' *********************
    GOSUB *UtilSendResPosHiPrec
    ON ERROR GOTO 0
    RETURN
' **********************************************************
' * Function KeyAbsMoveHiPrec
' **********************************************************
*KeyAbsMoveHiPrec:
    ON ERROR GOTO *MoveErrorProc
    IF CmdPrm%(RCV_POS_IDX_RX%) <> 0 OR CmdPrm%(RCV_POS_IDX_RY%) <> 0 THEN
        ResStatus% = RES_ERR_MOVE_RANGE_OVER%
    ELSE
        MoveRetry% = 0
        P99 = WHRXY[ROBOT_NUMBER%]
        LOC1(P99) = CmdPrm%(RCV_POS_IDX_X%) / COEF_LENGTH
        LOC2(P99) = CmdPrm%(RCV_POS_IDX_Y%) / COEF_LENGTH
        LOC3(P99) = CmdPrm%(RCV_POS_IDX_Z%) / COEF_LENGTH
        Rz = CmdPrm%(RCV_POS_IDX_RZ%) / COEF_ANGLE_HP
        RzBase = LOC4(P99) - Rz + ROTATION_HALF_RANGE
        RotOrgZ = RzBase / ROTATION_RANGE
        IF RotOrgZ < 0 THEN RotOrgZ = RotOrgZ - 1
        RotOrgZ = INT(RotOrgZ)
        Rz = Rz + RotOrgZ * ROTATION_RANGE
        LOC4(P99) = Rz
        MOVE[ROBOT_NUMBER%] L, P99
        MOVE[ROBOT_NUMBER%] P, P99
    ENDIF
    ' *********************
    GOSUB *UtilSendResPosHiPrec
    ON ERROR GOTO 0
    RETURN
' **********************************************************
' ********************* Utility ************************
' **********************************************************
'**********************************************************
'*  Function  UtilInitParam
'**********************************************************
*UtilInitParam:
    GOSUB *UtilSetWorkNumber
    GOSUB *UtilSetToolNumber
    RETURN
'**********************************************************
'*  Function  UtilSetWorkNumber
'**********************************************************
*UtilSetWorkNumber:
    IF WorkNo% = WORK_OFF% THEN
        SHIFT[ROBOT_NUMBER%] OFF
    ELSE
        SHIFT[ROBOT_NUMBER%] S[WorkNo%]
    ENDIF
    RETURN
'**********************************************************
'*  Function  UtilSetToolNumber
'**********************************************************
*UtilSetToolNumber:
    SELECT CASE ToolNo%
        CASE 0
            CHANGE[ROBOT_NUMBER%] OFF
        CASE 1
            CHANGE[ROBOT_NUMBER%] H1
        CASE 2
            CHANGE[ROBOT_NUMBER%] H2
        CASE 3
            CHANGE[ROBOT_NUMBER%] H3
        CASE 4
            CHANGE[ROBOT_NUMBER%] H4
        CASE 5
            CHANGE[ROBOT_NUMBER%] H5
        CASE 6
            CHANGE[ROBOT_NUMBER%] H6
        CASE 7
            CHANGE[ROBOT_NUMBER%] H7
        CASE 8
            CHANGE[ROBOT_NUMBER%] H8
        CASE 9
            CHANGE[ROBOT_NUMBER%] H9
    END SELECT
    RETURN
' **********************************************************
' * Function UtilCheckSum
' **********************************************************
*UtilCheckSum:
    ResStatus% = RES_SUCCESS%
    IF PrmCnt% >= 1 THEN
        ChkSum% = 0
        FOR C% = 1 TO PrmCnt% - 1
            ChkSum% = ChkSum% + CmdPrm%(C%)
        NEXT C%
        IF CmdPrm%(PrmCnt%) <> ChkSum% THEN
            ResStatus% = RES_FAIL%
        ENDIF
    ELSE
        ResStatus% = RES_FAIL%
    ENDIF
    RETURN
'**********************************************************
' * Function UtilMakeResHeader
'**********************************************************
*UtilMakeResHeader:
    ResStr$ = CMD_NAME$ + STR$(OprtID%) + "," + STR$(ReqID%) + "," + STR$(ResStatus%)
    ChkSum% = OprtID% + ReqID% + ResStatus%
    RETURN
' **********************************************************
' * Function UtilSendResRoboPrm
' **********************************************************
*UtilSendResRoboPrm:
    GOSUB *UtilMakeResHeader
    ' *********************
    Wk% = WorkNo% MOD KEY_VISION_NUM%
    Tl% = ToolNo% MOD KEY_VISION_NUM%
    Spd% = ASPEED[ROBOT_NUMBER%]
    Acl% = 100
    ResStr$ = ResStr$ + "," + STR$(FORMAT_DEFAULT%) + "," + STR$(Wk%) + "," + STR$(Tl%) + "," + STR$(Spd%) +"," + STR$(Acl%)
    ChkSum% = ChkSum% + FORMAT_DEFAULT% + Wk% + Tl% + Spd% + Acl%
    ' *********************
    ResStr$ = ResStr$ + "," + STR$(ChkSum%)
    ' *********************
    CALL *UtilSendRes(ResStr$)
    RETURN
' **********************************************************
' * Function UtilSendResPos
' **********************************************************
*UtilSendResPos:
    GOSUB *UtilMakeResHeader
    ' *********************
    P99 = WHRXY[ROBOT_NUMBER%]
    X% = LOC1(P99) * COEF_LENGTH
    Y% = LOC2(P99) * COEF_LENGTH
    Z% = LOC3(P99) * COEF_LENGTH
    ResStr$ = ResStr$ + "," + STR$(X%) + "," + STR$(Y%) + "," + STR$(Z%)
    ChkSum% = ChkSum% + X% + Y% + Z%
    X% = 0
    Y% = 0
    Z% = LOC4(P99) * COEF_ANGLE
    ResStr$ = ResStr$ + "," + STR$(X%) + "," + STR$(Y%) + "," + STR$(Z%)
    ChkSum% = ChkSum% + X% + Y% + Z%
    ' *********************
    ResStr$ = ResStr$ + "," + STR$(ChkSum%)
    ' *********************
    CALL *UtilSendRes(ResStr$)
    RETURN
' **********************************************************
' * Function UtilSendResError
' **********************************************************
*UtilSendResError:
    ResStatus% = RES_FAIL%
    GOSUB *UtilMakeResHeader
    ' *********************
    IF ResPrmNum% >= 1 THEN
        FOR C% = 1 TO ResPrmNum%
            ResStr$ = ResStr$ + "," + STR$(RES_DUMMY_NUM%)
            ChkSum% = ChkSum% + RES_DUMMY_NUM%
        NEXT C%
    ENDIF
    ' *********************
    ResStr$ = ResStr$ + ","+ STR$(ChkSum%)
    ' *********************
    CALL *UtilSendRes(ResStr$)
    RETURN
' **********************************************************
' * Function UtilSendResToolData
' **********************************************************
*UtilSendResToolData:
    ResStatus% = RES_UNSUPPORTED%
    GOSUB *UtilMakeResHeader
    ' *********************
    IF ResPrmNum% >= 1 THEN
        FOR C% = 1 TO ResPrmNum%
            ResStr$ = ResStr$ + "," + STR$(RES_DUMMY_NUM%)
            ChkSum% = ChkSum% + RES_DUMMY_NUM%
        NEXT C%
    ENDIF
    ' *********************
    ResStr$ = ResStr$ + ","+ STR$(ChkSum%)
    ' *********************
    CALL *UtilSendRes(ResStr$)
    RETURN
' **********************************************************
' * Function UtilSendResPosHiPrec
' **********************************************************
*UtilSendResPosHiPrec:
    GOSUB *UtilMakeResHeader
    ' *********************
    P99 = WHRXY[ROBOT_NUMBER%]
    X% = LOC1(P99) * COEF_LENGTH
    Y% = LOC2(P99) * COEF_LENGTH
    Z% = LOC3(P99) * COEF_LENGTH
    ResStr$ = ResStr$ + "," + STR$(X%) + "," + STR$(Y%) + "," + STR$(Z%)
    ChkSum% = ChkSum% + X% + Y% + Z%
    X% = 0
    Y% = 0
    Z% = LOC4(P99) * COEF_ANGLE_HP
    ResStr$ = ResStr$ + "," + STR$(X%) + "," + STR$(Y%) + "," + STR$(Z%)
    ChkSum% = ChkSum% + X% + Y% + Z%
    ' *********************
    ResStr$ = ResStr$ + "," + STR$(ChkSum%)
    ' *********************
    CALL *UtilSendRes(ResStr$)
    RETURN
' **********************************************************
' * Function UtilRecvCmd
' **********************************************************
SUB *UtilRecvCmd(rcvStr$)
    SEND GP0 TO rcvStr$
END SUB
' **********************************************************
' * Function UtilSendRes
' **********************************************************
SUB *UtilSendRes(sndStr$)
    SEND sndStr$ TO GP0
END SUB
' **********************************************************
' * Function MoveErrorProc
' **********************************************************
*SetParamErrorProc:
    RESUME NEXT
' **********************************************************
' * Function MoveErrorProc
' **********************************************************
*MoveErrorProc:
    ErrCode% = ERR
    IF &H20000 <= ErrCode% AND ErrCode% <= &H2FFFF THEN
        IF MoveRetry% = 0 THEN
            IF LOCF(P99) = 1 THEN
                LOCF(P99) = 2
            ELSE
                LOCF(P99) = 1
            ENDIF      
            MoveRetry% = 1
            RESUME NEXT
        ENDIF
        ResStatus% = RES_ERR_MOVE_RANGE_OVER%
    ELSE
        ResStatus% = RES_FAIL%
    ENDIF
    RESUME NEXT
'

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|笔记

GMT+8, 2025-7-7 05:37 , Processed in 0.035022 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表