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

📄 drv_prn.bas

📁 VB代码
💻 BAS
📖 第 1 页 / 共 2 页
字号:
'        Call SetClkLineHigh
        If (GetMISOLineStatus()) Then
            ucReturnValue = ucReturnValue Or ucMaskCode
        End If
        Call SetClkLineHigh
        ucMaskCode = ShiftDataRight(ucMaskCode)
        Call SetClkLineLow
    Next ucCount
    SPITrans_ReadOneByte = ucReturnValue
End Function
Sub CMD_ProgramEnable()
    Call SPITrans_WriteOneByte(&HAC)
    Call SPITrans_WriteOneByte(&H53)
    Call SPITrans_WriteOneByte(&H0)
    Call SPITrans_WriteOneByte(&H0)
End Sub
Sub StartProgram()
    Dim ucWriteDataBuff(0) As Byte
    
    'Call SetResetLineLow
    'Call SetClkLineLow
    ucWriteDataBuff(0) = &H0
  '  ucWriteDataBuff(1) = &H0
    
    MainForm.ComProgram.Output = ucWriteDataBuff
    Call Delay(1)
    'Call SetResetLineHigh
    Call Delay(100)
    Call CMD_ProgramEnable
End Sub
Sub EndProgram()
    'Call SetResetLineLow
    Call Delay(1)
End Sub

Function CMD_ReadLockBits() As Byte
    Dim ucReturnValue As Byte
    
    Call StartProgram
    Call SPITrans_WriteOneByte(&H24)
    Call SPITrans_WriteOneByte(&H0)
    Call SPITrans_WriteOneByte(&H0)
    ucReturnValue = SPITrans_ReadOneByte()
    
    ucReturnValue = ShiftDataRight(ucReturnValue)
    ucReturnValue = ShiftDataRight(ucReturnValue)
    ucReturnValue = ucReturnValue And &H7
    
    Call EndProgram
    CMD_ReadLockBits = ucReturnValue
    
End Function
Sub CMD_ReadProgramMemory(ByVal iCodeDataLen As Integer)
    Dim iCount As Integer
    Dim iAddress As Integer
    Dim iBaseNumber As Integer
    Dim ucCompleteRatio As Byte
    
    Call StartProgram
    
    MainForm.Lbl_ProgressPrompt.Caption = "完成进度"
    MainForm.Lbl_ProgressPrompt.Visible = True
    MainForm.Lbl_ProgressPrompt.Refresh
    
    MainForm.WritePGMCodeProgressBar.Min = 0
    MainForm.WritePGMCodeProgressBar.Max = iMaxCodeLength
    MainForm.WritePGMCodeProgressBar.Value = 0
    MainForm.WritePGMCodeProgressBar.Visible = True
    
    iBaseNumber = iMaxCodeLength / 100 + 1
    ucCompleteRatio = 0
    MainForm.lbl_DispCompleteRatio.Caption = CStr(ucCompleteRatio) & "%"
    MainForm.lbl_DispCompleteRatio.Visible = True
    MainForm.lbl_DispCompleteRatio.Refresh
    
  
    iAddress = 0
    For iCount = 0 To iCodeDataLen - 1 Step 1
        SPITrans_WriteOneByte (&H20)
        SPITrans_WriteOneByte (CByte(iAddress \ &H100))
        SPITrans_WriteOneByte (CByte(iAddress Mod &H100))
        ucDataBuff(iCount) = SPITrans_ReadOneByte()
        iAddress = iAddress + 1
        
        MainForm.WritePGMCodeProgressBar.Value = iCount
        If ((iCount Mod iBaseNumber) = 0) Then
            ucCompleteRatio = ucCompleteRatio + 1
            MainForm.lbl_DispCompleteRatio.Caption = CStr(ucCompleteRatio) & "%"
            MainForm.lbl_DispCompleteRatio.Refresh
        End If

    Next iCount
    
    ucCompleteRatio = 100
    MainForm.lbl_DispCompleteRatio.Caption = CStr(ucCompleteRatio) & "%"
   
    Call EndProgram
    MainForm.Lbl_ProgressPrompt.Visible = False
    MainForm.lbl_DispCompleteRatio.Visible = False
    MainForm.WritePGMCodeProgressBar.Visible = False
    
End Sub



Public Function InitProgramDevice() As Boolean
    Dim bReturnValue As Boolean
    Dim iCount As Integer
    
    ucPrintDataPortMemImage = &H0
    ucPrintControlPortMemImage = &H0

    bReturnValue = WriteData_PrintDataPort(ucPrintDataPortMemImage)
    bReturnValue = WriteData_PrintControlPort(ucPrintControlPortMemImage)
    
    For iCount = 0 To iMaxCodeLength Step 1
    
        ucDataBuff(iCount) = &HFF
    Next iCount
    
    
    InitProgramDevice = True
End Function


Function CMD_VerifyProgramMemory() As Boolean
    Dim ucReadData As Byte
    Dim bFunctionReturn As Boolean
    
    Dim iCount As Integer
    Dim iAddress As Integer
    Dim iBaseNumber As Integer
    Dim ucCompleteRatio As Byte
      
    Call StartProgram
     
    MainForm.Lbl_ProgressPrompt.Caption = "完成进度"
    MainForm.Lbl_ProgressPrompt.Visible = True
    MainForm.Lbl_ProgressPrompt.Refresh
    
    MainForm.WritePGMCodeProgressBar.Min = 0
    MainForm.WritePGMCodeProgressBar.Max = iMaxCodeLength
    MainForm.WritePGMCodeProgressBar.Value = 0
    MainForm.WritePGMCodeProgressBar.Visible = True
    
    iBaseNumber = iMaxCodeLength / 100 + 1
    ucCompleteRatio = 0
    MainForm.lbl_DispCompleteRatio.Caption = CStr(ucCompleteRatio) & "%"
    MainForm.lbl_DispCompleteRatio.Visible = True
    MainForm.lbl_DispCompleteRatio.Refresh
    
  
   iAddress = 0
    For iCount = 0 To iMaxCodeLength - 1 Step 1
        SPITrans_WriteOneByte (&H20)
        SPITrans_WriteOneByte (CByte(iAddress \ &H100))
        SPITrans_WriteOneByte (CByte(iAddress Mod &H100))
        ucReadData = SPITrans_ReadOneByte()
        If (ucReadData <> ucDataBuff(iCount)) Then
            MsgBox ("校验出错,请检查器件是否已加密。")
            bFunctionReturn = False
            GoTo Verifyend
        
        End If
        iAddress = iAddress + 1
        
        MainForm.WritePGMCodeProgressBar.Value = iCount
        If ((iCount Mod iBaseNumber) = 0) Then
            ucCompleteRatio = ucCompleteRatio + 1
            MainForm.lbl_DispCompleteRatio.Caption = CStr(ucCompleteRatio) & "%"
            MainForm.lbl_DispCompleteRatio.Refresh
        End If

    Next iCount
    bFunctionReturn = True
    
    ucCompleteRatio = 100
    MainForm.lbl_DispCompleteRatio.Caption = CStr(ucCompleteRatio) & "%"
   
Verifyend:
    Call EndProgram
    MainForm.Lbl_ProgressPrompt.Visible = False
    MainForm.lbl_DispCompleteRatio.Visible = False
    MainForm.WritePGMCodeProgressBar.Visible = False
        
        
    CMD_VerifyProgramMemory = bFunctionReturn
End Function


'Function ConvertDataBuffContentToFormatString() As String
'    Dim iAddrCount As Integer
'    Dim ucCount As Byte
'    Dim iLineCount As Integer
'    Dim iDataLineNumber As Integer
'    Dim sDestinationString As String
'
'    iAddrCount = 0
'    sDestinationString = ""
'
'    iDataLineNumber = iMaxCodeLength / c_CharNumberPerLine
'
'    For iLineCount = 0 To iDataLineNumber - 1 Step 1
'        sDestinationString = sDestinationString & CIntToHexStr(iAddrCount) & " "
'        For ucCount = 0 To c_CharNumberPerLine - 1 Step 1
'            sDestinationString = sDestinationString & CStr_Hex(ucDataBuff(iLineCount * c_CharNumberPerLine + ucCount)) & " "
'        Next ucCount
        
'        sDestinationString = sDestinationString & Chr(13) & Chr(10)
        
'        iAddrCount = iAddrCount + c_CharNumberPerLine
        
'    Next iLineCount
    
'    ConvertDataBuffContentToFormatString = sDestinationString
'End Function

Function ConvertDataBuffContentToFormatString() As String
    Dim iAddrCount As Integer
    Dim ucCount As Byte
    Dim iLineCount As Integer
    Dim iDataLineNumber As Integer
    Dim sDestinationString As String
    Dim sOneLineTempString As String
    
    Dim iBaseNumber As Integer
    Dim ucCompleteRatio As Byte
   
 
    iAddrCount = 0
    sDestinationString = ""
    iDataLineNumber = iMaxCodeLength \ c_CharNumberPerLine
    
    
    FrmMain.Lbl_ProgressPrompt.Caption = "完成进度"
    FrmMain.Lbl_ProgressPrompt.Visible = True
    FrmMain.Lbl_ProgressPrompt.Refresh
    
    FrmMain.WritePGMCodeProgressBar.Min = 0
    FrmMain.WritePGMCodeProgressBar.Max = iDataLineNumber
    FrmMain.WritePGMCodeProgressBar.Value = 0
    FrmMain.WritePGMCodeProgressBar.Visible = True
    
    iBaseNumber = iDataLineNumber / 100 + 1
    ucCompleteRatio = 0
    FrmMain.lbl_DispCompleteRatio.Caption = CStr(ucCompleteRatio) & "%"
    FrmMain.lbl_DispCompleteRatio.Visible = True
    FrmMain.lbl_DispCompleteRatio.Refresh
    
    For iLineCount = 0 To iDataLineNumber - 1 Step 1
        sOneLineTempString = CIntToHexStr(iAddrCount) & " "
        For ucCount = 0 To c_CharNumberPerLine - 1 Step 1
            'sOneLineTempString = sOneLineTempString & CStr_Hex(ucDataBuff(iAddrCount)) & " "
            sOneLineTempString = sOneLineTempString & CStr_Hex(ucDataBuff(iAddrCount)) & " "
            iAddrCount = iAddrCount + 1
       
        Next ucCount
        
        sOneLineTempString = sOneLineTempString & Chr(13) & Chr(10)
        sDestinationString = sDestinationString & sOneLineTempString
        
        FrmMain.WritePGMCodeProgressBar.Value = iLineCount
        If ((iLineCount Mod iBaseNumber) = 0) Then
            ucCompleteRatio = ucCompleteRatio + 1
            FrmMain.lbl_DispCompleteRatio.Caption = CStr(ucCompleteRatio) & "%"
            FrmMain.lbl_DispCompleteRatio.Refresh
        End If

    Next iLineCount
    ucCompleteRatio = 100
    FrmMain.lbl_DispCompleteRatio.Caption = CStr(ucCompleteRatio) & "%"

    
    FrmMain.Lbl_ProgressPrompt.Visible = False
    FrmMain.lbl_DispCompleteRatio.Visible = False
    FrmMain.WritePGMCodeProgressBar.Visible = False
        
 
    ConvertDataBuffContentToFormatString = sDestinationString
End Function

⌨️ 快捷键说明

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