📄 drv_prn.bas
字号:
' 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 + -