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

📄 form100.frm

📁 P1618QP bootloader code
💻 FRM
📖 第 1 页 / 共 3 页
字号:
        Case "Save"
            With CommonDialog1
                .DialogTitle = "Save HEX File"
                .CancelError = False
                'ToDo: set the flags and attributes of the common dialog control
                .Flags = cdlOFNHideReadOnly
                .Filter = "INHEX32 Files (*.HEX)|*.HEX|All Files (*.*)|*.*"
                .ShowSave
                If Len(.FileName) = 0 Then
                    Exit Sub
                End If
                PicBootS.OutFileName = .FileName
                .FileName = ""
            End With
            'ToDo: add code to process the opened file
        
            'crap = ConvertHEX(PicBootS.OutFileName, "D:\Crapp.HEX")
        
            If PicBootS.DeviceType = 1 Then
                ExportP18HEXFile PicBootS.OutFileName
            Else
                ExportP16HEXFile PicBootS.OutFileName
            End If
        
            StatusBar1.Panels(PANEL_STATUS).Text = STATUS_HEX_EXPORTED
        
        
        Case "Clear"
            EraseDataFiles
            
        Case "View"
            ViewDataFiles
            
        Case "Abort"
            AbortFlag = 0
            
        Case "Connect"
            If Toolbar1.Buttons(9).Value = tbrUnpressed Then
                DisconnectDev
            Else
                ConnectToPIC
            End If
            
        Case "Read"
            Fm_Bootload.MousePointer = 13
            SetDisplayMode MODE_WORKING
            
            'read program memory
            If M_MemAccess(1).Checked = True Then
                Select Case ReadRangeDevMem(PicBootS.ProgMemAddrL, PicBootS.ProgMemAddrH, PicBootS.DevBytesPerAddr, 1, PicBootS.ProgMemFile)
               ' Select Case ReadRangeDevMem(0, PicBootS.ProgMemAddrH, PicBootS.DevBytesPerAddr, 1, PicBootS.ProgMemFile)
                'Select Case ReadRangeDevMem(0, 511, 1, PicBootS.ProgMemFile)
                    Case -100
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_ABORT
                        SetDisplayMode MODE_CONNECTED_IDLE
                        Fm_Bootload.MousePointer = 0
                        Exit Sub
                    Case 1
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_FINISHED
                    Case Else
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_READ_FAILURE
                End Select
            End If
                
            'read eedata
            If M_MemAccess(2).Checked = True Then
                Select Case ReadRangeDevMem(PicBootS.EEDataAddrL, PicBootS.EEDataAddrH, 1, 4, PicBootS.EEDataFile)
                    Case -100
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_ABORT
                        SetDisplayMode MODE_CONNECTED_IDLE
                        Fm_Bootload.MousePointer = 0
                        Exit Sub
                    Case 1
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_FINISHED
                    Case Else
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_READ_FAILURE
                End Select
            End If
            
            'read config
            If M_MemAccess(3).Checked = True Then
                Select Case ReadRangeDevMem(PicBootS.ConfigAddrL, PicBootS.ConfigAddrH, 1, 1, PicBootS.ConfigFile)
                    Case -100
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_ABORT
                        SetDisplayMode MODE_CONNECTED_IDLE
                        Fm_Bootload.MousePointer = 0
                        Exit Sub
                    Case 1
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_FINISHED
                    Case Else
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_READ_FAILURE
                End Select
            End If
            
            'read userID
            If M_MemAccess(4).Checked = True Then
                Select Case ReadRangeDevMem(PicBootS.UserIDAddrL, PicBootS.UserIDAddrH, 1, 1, PicBootS.UserIDFile)
                    Case -100
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_ABORT
                        SetDisplayMode MODE_CONNECTED_IDLE
                        Fm_Bootload.MousePointer = 0
                        Exit Sub
                    Case 1
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_FINISHED
                    Case Else
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_READ_FAILURE
                End Select
            End If
                 
            SetDisplayMode MODE_CONNECTED_IDLE
            Fm_Bootload.MousePointer = 0
        
            
        Case "Write"
            Fm_Bootload.MousePointer = 13
            SetDisplayMode MODE_WORKING
            
            If M_MemAccess(1).Checked = True Then
                Select Case WriteRangeDevMem(PicBootS.DeviceWrtBlock, PicBootS.DevBytesPerAddr, 2, PicBootS.ProgMemFile)
                    Case -100
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_ABORT
                        SetDisplayMode MODE_CONNECTED_IDLE
                        Fm_Bootload.MousePointer = 0
                        Exit Sub
                    Case -101
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_VERIFY_ERROR
                        SetDisplayMode MODE_CONNECTED_IDLE
                        Fm_Bootload.MousePointer = 0
                        test = Shell(PicBootS.EditorFile & " " & VB.App.Path & "\" & PicBootS.ErrorLogFile, vbNormalFocus)
                        Exit Sub
                    Case 1
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_FINISHED
                    Case Else
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_WRITE_FAILURE
                End Select
            End If
            
            If M_MemAccess(2).Checked = True Then
                Select Case WriteRangeDevMem(1, 1, 5, PicBootS.EEDataFile)
                    Case -100
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_ABORT
                        SetDisplayMode MODE_CONNECTED_IDLE
                        Fm_Bootload.MousePointer = 0
                        Exit Sub
                    Case -101
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_VERIFY_ERROR
                        SetDisplayMode MODE_CONNECTED_IDLE
                        Fm_Bootload.MousePointer = 0
                        test = Shell(PicBootS.EditorFile & " " & VB.App.Path & "\" & PicBootS.ErrorLogFile, vbNormalFocus)
                        Exit Sub
                    Case 1
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_FINISHED
                    Case Else
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_WRITE_FAILURE
                End Select
            End If
            
            If M_MemAccess(4).Checked = True Then
                Select Case WriteRangeDevMem(PicBootS.DeviceWrtBlock, 1, 2, PicBootS.UserIDFile)
                    Case -100
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_ABORT
                        SetDisplayMode MODE_CONNECTED_IDLE
                        Fm_Bootload.MousePointer = 0
                        Exit Sub
                    Case -101
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_VERIFY_ERROR
                        SetDisplayMode MODE_CONNECTED_IDLE
                        Fm_Bootload.MousePointer = 0
                        test = Shell(PicBootS.EditorFile & " " & VB.App.Path & "\" & PicBootS.ErrorLogFile, vbNormalFocus)
                        Exit Sub
                    Case 1
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_FINISHED
                    Case Else
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_WRITE_FAILURE
                End Select
            End If
                
            SetDisplayMode MODE_CONNECTED_IDLE
            Fm_Bootload.MousePointer = 0
        
            
        Case "Erase"
            Fm_Bootload.MousePointer = 13
            SetDisplayMode MODE_WORKING
            
            If M_MemAccess(1).Checked = True Then
                Select Case EraseRangeDevMem(PicBootS.ProgMemAddrL, PicBootS.ProgMemAddrH)
                Case -100
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_ABORT
                        SetDisplayMode MODE_CONNECTED_IDLE
                        Fm_Bootload.MousePointer = 0
                        Exit Sub
                    Case 1
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_FINISHED
                    Case Else
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_WRITE_FAILURE
                End Select
            End If
            
            If M_MemAccess(4).Checked = True Then
                Select Case EraseRangeDevMem(PicBootS.UserIDAddrL, PicBootS.UserIDAddrH)
                Case -100
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_ABORT
                        SetDisplayMode MODE_CONNECTED_IDLE
                        Fm_Bootload.MousePointer = 0
                        Exit Sub
                    Case 1
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_FINISHED
                    Case Else
                        StatusBar1.Panels(PANEL_STATUS).Text = STATUS_WRITE_FAILURE
                End Select
            End If
                   
            SetDisplayMode MODE_CONNECTED_IDLE
            Fm_Bootload.MousePointer = 0
                
        Case "Run"
            
            MyButtons = MsgBox("Disabling the bootloader will lock out boot mode. Be sure to have re-entry" & vbCrLf & "code within your firmware to use the bootloader in the future." & vbCrLf & vbCrLf & "Do you want to continue?", vbYesNo, "Disable Bootloader...")
            If MyButtons = vbNo Then   ' User chose Yes.
                Exit Sub   ' Perform some action.
            End If
            
            GotoRunMode
            DisconnectDev
            StatusBar1.Panels(PANEL_STATUS).Text = STATUS_RUNMODE_SET
            
    End Select
End Sub




Private Sub Toolbar1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
    If Button = 2 Then
        MsConFlag = 2
        PopupMenu M_Program, vbPopupMenuRightButton
    End If
End Sub

'******************************************************************************





















Private Sub DisconnectDev()

    AbortFlag = 0
    DoEvents

    'close the port
    If PicBootS.PortHandle > 0 Then
        ClosePIC (PicBootS.PortHandle)
        PicBootS.PortHandle = -1
    End If
    
    Toolbar1.Buttons(9).Value = tbrUnpressed
    StatusBar1.Panels(PANEL_STATUS).Text = STATUS_NOT_CON
    StatusBar1.Panels(PANEL_FWVER).Text = " "
    StatusBar1.Panels(PANEL_DEVICE).Text = " "

    SetDisplayMode (MODE_NOT_CONNECTED)

End Sub






Private Sub SetDisplayMode(DspMode As Integer)
    
    Toolbar1.Buttons(1).Enabled = False
    Toolbar1.Buttons(2).Enabled = False
    Toolbar1.Buttons(4).Enabled = True
    Toolbar1.Buttons(5).Enabled = True
    Toolbar1.Buttons(7).Enabled = False
    Toolbar1.Buttons(9).Enabled = True
    Toolbar1.Buttons(10).Enabled = False
    Toolbar1.Buttons(11).Enabled = False
    Toolbar1.Buttons(12).Enabled = False
    Toolbar1.Buttons(14).Enabled = False
    
    M_FPPort(1).Enabled = True
    M_FPPort(2).Enabled = True
    M_FPPort(3).Enabled = True
    M_FPPort(4).Enabled = True
    
    M_FPBaud(1).Enabled = True
    M_FPBaud(2).Enabled = True
    M_FPBaud(3).Enabled = True
    M_FPBaud(4).Enabled = True
    M_FPBaud(5).Enabled = True
    
    M_MemAccess(1).Enabled = True
    M_MemAccess(2).Enabled = True
    M_MemAccess(3).Enabled = True
    M_MemAccess(4).Enabled = True
    
    M_PSendCfg.Visible = False
    space101.Visible = False
        
    
    
    
    If (DspMode And MODE_CONNECTED_IDLE) Then
        Toolbar1.Buttons(1).Enabled = True
        Toolbar1.Buttons(2).Enabled = True
        Toolbar1.Buttons(10).Enabled = True
        Toolbar1.Buttons(11).Enabled = True
        Toolbar1.Buttons(12).Enabled = True
        Toolbar1.Buttons(14).Enabled = True
        M_PSendCfg.Visible = True
        space101.Visible = True
        M_Program.Enabled = True
    End If
    
    If (DspMode And MODE_WORKING) Then
        M_PSendCfg.Visible = False
        Toolbar1.Buttons(7).Enabled = True
        Toolbar1.Buttons(1).Enabled = False
        Toolbar1.Buttons(2).Enabled = False
        Toolbar1.Buttons(4).Enabled = False
        Toolbar1.Buttons(5).Enabled = False
        M_MemAccess(1).Enabled = False
        M_MemAccess(2).Enabled = False
        M_MemAccess(3).Enabled = False
        M_MemAccess(4).Enabled = False
        M_FPBaud(1).Enabled = False
        M_FPBaud(2).Enabled = False
        M_FPBaud(3).Enabled = False
        M_FPBaud(4).Enabled = False
        M_FPBaud(5).Enabled = False
        M_FPPort(1).Enabled = False
        M_FPPort(2).Enabled = False
        M_FPPort(3).Enabled = False
        M_FPPort(4).Enabled = False
    End If
    
    
    If PicBootS.DeviceType = 0 Then
        M_MemAccess(3).Visible = False
        M_MemAccess(4).Visible = False
        Toolbar1.Buttons(12).Enabled = False
        M_MemAccess(3).Checked = False
        M_MemAccess(4).Checked = False
        M_PSendCfg.Visible = False
        space101.Visible = False
    Else
        M_MemAccess(3).Visible = True
        M_MemAccess(4).Visible = True
    End If
    
End Sub



⌨️ 快捷键说明

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