⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prgcontrolfrm.frm

📁 数控切割控制系统,需要DLPORTIO,通过控制8位的并口的电位高低来4路控制数控切割机
💻 FRM
📖 第 1 页 / 共 4 页
字号:
'
'                                    dxDistance = 2 * dR + dX0 + dX1
'                                    dyDistance = 2 * dR - dY0 - dY1
'
'                                    lTime = CLng(LenOfArc / F)
'                                    lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
'                                    calcuInterval = lInterval
'                                Else
'                                    If (dX0 >= 0 And dY0 < 0) And (dX1 >= 0 And dY1 >= 0) And (iDirect = 1) Then
'                                        LenOfArc = 2 * Pi * dR - Atn(pDistance / vDistance) * 2 * dR
'
'                                        dxDistance = 3 * dR - dX0 + dX1
'                                        dyDistance = 3 * dR + dY0 - dY1
'
'                                        lTime = CLng(LenOfArc / F)
'                                        lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
'                                        calcuInterval = lInterval
'                                    Else
'                                        If (dX0 >= 0 And dY0 < 0) And (dX1 >= 0 And dY1 >= 0) And (iDirect = 2) Then
'                                            LenOfArc = Atn(pDistance / vDistance) * 2 * dR
'
'                                            dxDistance = Abs(dX0 - dX1)
'                                            dyDistance = Abs(dY1 - dY0)
'
'                                            lTime = CLng(LenOfArc / F)
'                                            lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
'                                            calcuInterval = lInterval
'                                        Else
'                                            If (dX0 >= 0 And dY0 < 0) And (dX1 >= 0 And dY1 < 0) And (iDirect = 1) Then
'                                                LenOfArc = Atn(pDistance / vDistance) * 2 * dR
'
'                                                dxDistance = Abs(dX0 - dX1)
'                                                dyDistance = Abs(dY1 - dY0)
'
'                                                lTime = CLng(LenOfArc / F)
'                                                lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
'                                                calcuInterval = lInterval
'                                            Else
'                                                If (dX0 >= 0 And dY0 < 0) And (dX1 >= 0 And dY1 < 0) And (iDirect = 2) Then
'                                                    LenOfArc = 2 * Pi * dR - Atn(pDistance / vDistance) * 2 * dR
'
'                                                    dxDistance = 4 * dR - dX0 + dX1
'                                                    dyDistance = 4 * dR - dY0 + dY1
'
'                                                    lTime = CLng(LenOfArc / F)
'                                                    lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
'                                                    calcuInterval = lInterval
'                                                Else
'                                                    If (dX0 >= 0 And dY0 < 0) And (dX1 < 0 And dY1 >= 0) And (iDirect = 1) Then
'                                                        If (dX0 + dY0 < 0) And (dX1 + dY1 > 0) Then
'                                                            LenOfArc = 2 * Pi * dR - Atn(pDistance / vDistance) * 2 * dR
'                                                        Else
'                                                            LenOfArc = Atn(pDistance / vDistance) * 2 * dR
'                                                        End If
'                                                        dxDistance = 2 * dR + dX0 + dX1
'                                                        dyDistance = 2 * dR + dY0 + dY1
'
'                                                        lTime = CLng(LenOfArc / F)
'                                                        lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
'                                                        calcuInterval = lInterval
'                                                    Else
'                                                        If (dX0 >= 0 And dY0 < 0) And (dX1 < 0 And dY1 >= 0) And (iDirect = 2) Then
'                                                            If (dX0 + dY0 < 0) And (dX1 + dY1 > 0) Then
'                                                                LenOfArc = Atn(pDistance / vDistance) * 2 * dR
'                                                            Else
'                                                                LenOfArc = 2 * Pi * dR - Atn(pDistance / vDistance) * 2 * dR
'                                                            End If
'                                                            dxDistance = 2 * dR - dX0 - dX1
'                                                            dyDistance = 2 * dR - dY0 - dY1
'
'                                                            lTime = CLng(LenOfArc / F)
'                                                            lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
'                                                            calcuInterval = lInterval
'                                                        Else
'                                                            If (dX0 >= 0 And dY0 < 0) And (dX1 < 0 And dY1 < 0) And (iDirect = 1) Then
'                                                                LenOfArc = Atn(pDistance / vDistance) * 2 * dR
'                                                                dxDistance = Abs(dX0 - dX1)
'                                                                dyDistance = Abs(dY0 - dY1)
'
'                                                                lTime = CLng(LenOfArc / F)
'                                                                lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
'                                                                calcuInterval = lInterval
'                                                            Else
'                                                                If (dX0 >= 0 And dY0 < 0) And (dX1 < 0 And dY1 < 0) And (iDirect = 2) Then
'                                                                    LenOfArc = 2 * Pi * dR - Atn(pDistance / vDistance) * 2 * dR
'                                                                    dxDistance = 3 * dR - dY0 + dY1
'                                                                    dyDistance = 4 * dR - dX0 + dX1
'
'                                                                    lTime = CLng(LenOfArc / F)
'                                                                    lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
'                                                                    calcuInterval = lInterval
'                                                                Else
'                                                                    If (dX0 < 0 And dY0 >= 0) And (dX1 >= 0 And dY1 >= 0) And (iDirect = 1) Then
'                                                                        LenOfArc = Atn(pDistance / vDistance) * 2 * dR
'                                                                        dxDistance = Abs(dX1 - dX0)
'                                                                        dyDistance = Abs(dY1 - dY0)
'
'                                                                        lTime = CLng(LenOfArc / F)
'                                                                        lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
'                                                                        calcuInterval = lInterval
'                                                                    Else
'                                                                        If (dX0 < 0 And dY0 >= 0) And (dX1 >= 0 And dY1 >= 0) And (iDirect = 2) Then
'                                                                            LenOfArc = 2 * Pi * dR - Atn(pDistance / vDistance) * 2 * dR
'                                                                            dxDistance = 4 * dR + dX0 - dX1
'                                                                            dyDistance = 2 * dR + dY0 + dY1
'
'                                                                            lTime = CLng(LenOfArc / F)
'                                                                            lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
'                                                                            calcuInterval = lInterval
'                                                                        Else
'                                                                            If (dX0 < 0 And dY0 >= 0) And (dX1 >= 0 And dY1 < 0) And (iDirect = 1) Then
'                                                                                If (dX0 + dY0 < 0) And (dX1 + dY1 < 0) Then
'                                                                                    LenOfArc = 2 * Pi * dR - Atn(pDistance / vDistance) * 2 * dR
'                                                                                Else
'                                                                                    LenOfArc = Atn(pDistance / vDistance) * 2 * dR
'                                                                                End If
'                                                                                dxDistance = 3 * dR + dX0 - dX1
'                                                                                dyDistance = 2 * dR - dY0 - dY1
'
'                                                                                lTime = CLng(LenOfArc / F)
'                                                                                lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
'                                                                                calcuInterval = lInterval
'                                                                            Else
'                                                                                If (dX0 < 0 And dY0 >= 0) And (dX1 >= 0 And dY1 < 0) And (iDirect = 2) Then
'                                                                                    If (dX0 + dY0 < 0) And (dX1 + dY1 < 0) Then
'                                                                                        LenOfArc = Atn(pDistance / vDistance) * 2 * dR
'                                                                                    Else
'                                                                                        LenOfArc = 2 * Pi * dR - Atn(pDistance / vDistance) * 2 * dR
'                                                                                    End If
'                                                                                    dxDistance = 2 * dR + dX0 + dX1
'                                                                                    dyDistance = 2 * dR + dY0 + dY1
'
'                                                                                    lTime = CLng(LenOfArc / F)
'                                                                                    lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
'                                                                                    calcuInterval = lInterval
'                                                                                Else
'                                                                                    If (dX0 < 0 And dY0 >= 0) And (dX1 < 0 And dY1 >= 0) And (iDirect = 1) Then
'                                                                                        If (dX0 + dY0 < 0) And (dX1 + dY1 < 0) Then
'                                                                                            LenOfArc = Atn(pDistance / vDistance) * 2 * dR
'                                                                                        Else
'                                                                                            LenOfArc = 2 * Pi * dR - Atn(pDistance / vDistance) * 2 * dR
'                                                                                        End If
'                                                                                        dxDistance = 2 * dR + dX0 + dX1
'                                                                                        dyDistance = 2 * dR + dY0 + dY1
'
'                                                                                        lTime = CLng(LenOfArc / F)
'                                                                                        lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
'                                                                                        calcuInterval = lInterval
'                                                                                    Else
'                                                                                        If (dX0 < 0 And dY0 >= 0) And (dX1 < 0 And dY1 >= 0) And (iDirect = 2) Then
'
'                                                                                        Else
'                                                                                            If (dX0 < 0 And dY0 >= 0) And (dX1 < 0 And dY1 < 0) And (iDirect = 1) Then
'
'                                                                                            Else
'                                                                                                If (dX0 < 0 And dY0 >= 0) And (dX1 < 0 And dY1 < 0) And (iDirect = 2) Then
'
'                                                                                                Else
'                                                                                                    If (dX0 < 0 And dY0 < 0) And (dX1 >= 0 And dY1 >= 0) And (iDirect = 1) Then
'
'                                                                                                    Else
'                                                                                                        If (dX0 < 0 And dY0 < 0) And (dX1 >= 0 And dY1 >= 0) And (iDirect = 2) Then
'
'                                                                                                        Else
'                                                                                                            If (dX0 < 0 And dY0 < 0) And (dX1 >= 0 And dY1 < 0) And (iDirect = 1) Then
'
'                                                                                                            Else
'                                                                                                                If (dX0 < 0 And dY0 < 0) And (dX1 >= 0 And dY1 < 0) And (iDirect = 2) Then
'
'                                                                                                                Else
'                                                                                                                    If (dX0 < 0 And dY0 < 0) And (dX1 < 0 And dY1 >= 0) And (iDirect = 1) Then
'
'                                                                                                                    Else
'                                                                                                                        If (dX0 < 0 And dY0 < 0) And (dX1 < 0 And dY1 >= 0) And (iDirect = 2) Then
'
'                                                                                                                        Else
'                                                                                                                            If (dX0 < 0 And dY0 < 0) And (dX1 < 0 And dY1 < 0) And (iDirect = 1) Then
'
'                                                                                                                            Else
'                                                                                                                                If (dX0 < 0 And dY0 < 0) And (dX1 < 0 And dY1 < 0) And (iDirect = 2) Then
'
'                                                                                                                                Else
'                                                                                                                                    If (dX0 < 0 And dY0 < 0) And (dX1 < 0 And dY1 < 0) And (iDirect = 2) Then
'
'                                                                                                                                    End If
'                                                                                                                                End If
'                                                                                                                            End If
'                                                                                                                        End If
'                                                                                                                    End If
'                                                                                                                End If
'                                                                                                            End If
'                                                                                                        End If
'                                                                                                    End If
'                                                                                                End If
'                                                                                            End If
'                                                                                        End If
'                                                                                    End If
'                                                                                End If
'                                                                            End If
'                                                                        End If
'                                                                    End If
'                                                                End If
'                                                            End If
'                                                        End If
'                                                    End If
'                                                End If
'                                            End If
'                                        End If
'                                    End If
'                                End If
'                            End If
'                        End If
'                    End If
'                End If
'            End If
'        End If
'    End If
'End Function
Public Function calcuInterval(dX0 As Double, dY0 As Double, dX1 As Double, dY1 As Double, dR As Double, iDirect As Integer) As Long
    Dim LenOfArc As Double
    Dim dxDistance As Double
    Dim dyDistance As Double
    Dim lInterval As Long
    Dim lTime As Long
    Dim pDistance As Double
    Dim vDistance As Double
    Dim A, B As Long
    Dim Angle0 As Double
    Dim Angle1 As Double
    
    LenOfArc = 0
    dxDistance = 0
    dyDistance = 0
    
    pDistance = Sqr((dX1 - dX0) * (dX1 - dX0) + (dY1 - dY0) * (dY1 - dY0)) / 2
    vDistance = Sqr(dR * dR - pDistance * pDistance)
    
    A = X0 * X1
    B = Y0 * Y1
    
    If (A > 0 And B > 0) Or (A < 0 And B < 0) Then
        dxDistance = Abs(X1 - X0)
        dyDistance = Abs(Y1 - Y0)
    End If
    
    If (A > 0 And B < 0) Then
        dxDistance = 2 * dR - Abs(X1) - Abs(X0)
        dyDistance = Abs(Y1 - Y0)
    End If
    
    If (A < 0 And B > 0) Then
        dxDistance = Abs(X1 - X0)
        dyDistance = 2 * dR - Abs(Y1) - Abs(Y0)
    End If
    
    Angle0 = GetAngle(dX0, dY0)
    Angle1 = GetAngle(dX1, dY1)
    
    If (BigAngle(Angle0, Angle1, iDirect)) Then
        LenOfArc = (2 * Pi - Abs(Angle1 - Angle0)) * dR
        dxDistance = 4 * dR - dxDistance
        dyDistance = 4 * dR - dyDistance
    Else
        LenOfArc = Abs((Angle1 - Angle0) * dR)
    End If

    lTime = CLng(LenOfArc / F)
    lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
    calcuInterval = lInterval
End Function

Public Function GetAngle(ByVal A0 As Long, ByVal B0 As Long) As Double
    If (A0 < 0) Then
        GetAngle = Pi + Atn(B0 / A0)
        Exit Function
    End If

    If (A0 = 0) And (B0 > 0) Then
        GetAngle = Pi / 2
    End If

    If (A0 = 0) And (B0 < 0) Then
        GetAngle = Pi * 3 / 2
    End If

    If (A0 > 0 And B0 > 0) Then
        GetAngle = Atn(B0 / A0)
        Exit Function
    End If

    If (A0 > 0 And B0 < 0) Then
        GetAngle = 2 * Pi + Atn(B0 / A0)
    End If

    If (A0 = 0) And (B0 = 0) Then
        GetAngle = 0
    End If
 
End Function

Public Function BigAngle(A0 As Double, A1 As Double, iDirect As Integer) As Boolean
'iDirect (1 -- 顺时针,2 -- 逆时针)
    Dim AngleDiff As Double
    
    BigAngle = False
    AngleDiff = A1 - A0
    If (((AngleDiff > Pi) And (AngleDiff <= 2 * Pi)) Or ((AngleDiff > -1 * Pi) And (AngleDiff < 0))) And (iDirect = 1) Then
        BigAngle = True
    End If
End Function

Private Sub BeginCut()
    Dim Mystr As String
    Dim bAccess_File As Boolean

    iDirection = 0
    
    DirectX = False
    DirectY = False

    xPos = 0
    yPos = 0
    
    xStartCount = 0
    yStartCount = 0
    
    CircleGoOn = False
    bDrawCircle = False
'    StopNow = False
'    M = 1
    Close #1
    Open ProgramFileName For Input As #1
        Do While Not EOF(1)
            Input #1, Mystr

            If (M = 0) Then
                PrgFileLineNumber = PrgFileLineNumber + 1
            End If

            PrgFileLineNumber = PrgFileLineNumber + 1

            bAccess_File = DivideLine(Mystr)

            If Not bAccess_File Then
                Close #1
                PrgFileLineNumber = 0
                MsgBox "代码文件有错1", vbInformation, "提示"
                Unload Me
                MainFrm.Show vbModal
            End If

            If (G0 = 1) Then '直线
                dX01 = X1
                dY01 = Y1
                bAccess_File = SendLineSignal(X0, Y0, X1, Y1)
            Else
                bAccess_File = SendCircleSignal
                I = 0
                J = 0
                r = 0
            End If

            If Not bAccess_File Then
                Close #1
                PrgFileLineNumber = 0
                MsgBox "代码文件有错2", vbInformation, "提示"
                Unload Me
                MainFrm.Show vbModal
'            Else
'                X0 = X1
'                Y0 = Y1
            End If

            If (M = 0) Then
                pGoOnCmd.Enabled = True
                Close #1
                Exit Sub
            End If

            If (M = 2) Then
                pGoOnCmd.Enabled = False
                Exit Do
            End If

        Loop
    Close #1

End Sub

Private Sub Judge()
    If (Result = 2) Then
        Timer.Enabled = False
        XTimer.Enabled = False
        
        MsgBox "X轴到头!返回", vbInformation, "提示"
        Unload Me
        MainFrm.Show vbModal
        Exit Sub
    End If
    
    If (Result = 3) Then
        YTimer.Enabled = False
        Timer.Enabled = False
        
        MsgBox "Y轴到头!返回", vbInformation, "提示"
        Unload Me
        MainFrm.Show vbModal
        Exit Sub
    End If
    
    If (Result = 1) Then
        XTimer.Enabled = False
        YTimer.Enabled = False
        Timer.Enabled = False
        
        Timer_Beep.Enabled = True
        MsgBox "出现故障", vbInformation, "提示"
        Timer_Beep.Enabled = False
        Unload Me
        MainFrm.Show vbModal
        Exit Sub
    End If
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -