Files
Desktop_BLVStudio/BLV_Studio/FrmReleaseFirmware2.vb
2025-12-11 10:06:44 +08:00

400 lines
14 KiB
VB.net
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Imports System.IO
Imports System.Security.Cryptography
Public Class FrmReleaseFirmware2
Public FileName As String
Public SafeFileName As String
Public FileNameV4 As String
Public SafeFileNameV4 As String
Public InsertFirmwareV4 As New Dictionary(Of String, String
Public InsertFirmware As New Dictionary(Of String, String
Private Sub FrmReleaseFirmware2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
SetAPP_FOR_CodevFalse
'SetLauncher_cbointem(Launcher_cbo, "tbl_luncher_list", "Luncher_Name")
'SetLauncher_cbointem(Launcher_cbo, "tbl_luncher_list", "Luncher_Name")
End Sub
Public Sub SetAPP_FOR_Codev(flag As Boolean)
Label6.Enabled = flag
hotel_chk.Enabled = flag
Roon_chk.Enabled = flag
ApplicableModels_cbo.Enabled = flag
End Sub
Public Function GetfilePathtext(filePathTextBox As TextBox, filelv As String) As String
Dim openFileDialog As New OpenFileDialog
openFileDialog.InitialDirectory = Application.StartupPath
openFileDialog.RestoreDirectory = True
openFileDialog.Title = "选择上传固件"
openFileDialog.Filter = $"配置文件(*.hex)|*.hex"
If openFileDialog.ShowDialog() = DialogResult.OK Then
If CuttingFilePathopenFileDialog.SafeFileName, filelv Then
filePathTextBox.Text = openFileDialog.FileName
Else
filePathTextBox.Text = ""
End If
Return openFileDialog.SafeFileName
End If
Return ""
End Function
Public Function CuttingFilePath(filepath As String, filelv As String) As Boolean
If Not IsNothing(Firmware_cbo.SelectedItem) Then
Dim filename As String = FileNamingFormat(filepath, Firmware_cbo.SelectedItem.ToString, filelv)
Dim buff() As String
If String.IsNullOrEmpty(filename) Then
Roon_chk.Tag = ""
hotel_chk.Tag = ""
Roon_chk.Text = "房型:"
hotel_chk.Text = "酒店:"
MsgBox("文件格式不匹配")
Return False
Else
buff = filename.Split("_")
FirmwareVer_txt.Text = buff3
If Firmware_cbo.SelectedItem.ToString.Equals("Hex_Code") Then
Gethotleandroon(buff5)
End If
Return True
End If
End If
Return False
End Function
Public Function FileNamingFormat(filename As String, format As String, filelv As String) As String
Dim buff() As String = filename.Split(".")
If buff.Length = 2 Then
If buff(1).ToLower.Equals("hex") Then
Dim buff1() As String = buff(0).Split("_")
If format.Equals("Hex_Code") Then '2022=11-13 czh 适配C1机型主机已询问符合固件命名规则
If buff1.Length = 6 AndAlso buff1(1).ToLower.Equals("fw") AndAlso buff1(0).ToLower.Contains("c") Then 'AndAlso buff1(0).ToLower.Equals("c1f")
If buff1(2).ToLower.Equals(filelv.ToLower) Then
If IsNumeric(StrToHex(buff1(3).ToString)) AndAlso IsNumeric(buff1(4)) AndAlso IsNumeric(buff1(5)) Then
Return buff(0)
Else
Return ""
End If
Else
Return ""
End If
Else
Return ""
End If
ElseIf format.Equals("App_Cfg") Then
If buff1.Length = 6 AndAlso buff1(1).ToLower.Equals("a") AndAlso buff1(0).ToLower.Equals("c1f") Then
If buff1(5).ToLower.Equals("m") Or buff1(5).ToLower.Equals("nm") Then
If buff1(2).ToLower.Equals(filelv.ToLower) Then
If IsNumeric(StrToHex(buff1(3).ToString)) AndAlso IsNumeric(buff1(4)) Then
Return buff(0)
Else
Return ""
End If
Else
Return ""
End If
Else
Return ""
End If
Else
Return ""
End If
Else
Return ""
End If
Else
Return ""
End If
Else
Return ""
End If
End Function
Private Function StrToHex(pbSrc As String) As Integer
Dim pBufDest(1) As Byte
Dim h1 As Byte
Dim h2 As Byte
Dim s1 As Byte
Dim s2 As Byte
Dim t1 As Integer
Dim T2 As Integer
Dim i As UInt16
If Not pbSrc.Length = 2 Then Return -1
h1 = pbSrc.Chars(0).ToString.ToLower
h2 = Asc(pbSrc.Chars(1).ToString.ToLower)
t1 = toupper(h1)
T2 = toupper(h2)
If t1 = -1 AndAlso T2 = -1 Then Return -1
Return t1 * 16 + T2
End Function
Private Function toupper(val As Byte) As Integer
If val < 0 OrElse val > 9 Then
If val < Asc("a") OrElse val > Asc("f") Then
Return -1
Else
Return val - Asc("a") + 10
End If
Else
Return val
End If
End Function
Public Sub Gethotleandroon(hotleid As String)
Roon_chk.Tag = ""
hotel_chk.Tag = ""
Roon_chk.Text = "房型:"
hotel_chk.Text = "酒店:"
Dim sqlstr As String = $"SELECT a.ROOM_TYPE_NAME,b.IDOLD,b.HOTEL_NAME_CN FROM tbl_room_type_list a left JOIN tbl_hotel_basic_info b on b.IDOLD = a.HOTEL_OLD_ID where a.ROOM_TYPE_OLD_ID='{hotleid}';"
Dim udt As DataTable
Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, FrmMain.DbConnString)
db.Open()
udt = db.ExecuteDataTable(sqlstr)
db.Close()
End Using
If IsNothing(udt) Then
Return
Else
For Each dtrow As DataRow In udt.Rows
For i As Integer = 0 To udt.Columns.Count - 1
If i = 0 Then
Roon_chk.Text = "房型:" & dtrow.Item(i).ToString
Roon_chk.Tag = hotleid
End If
If i = 2 Then
hotel_chk.Text = "酒店:" & dtrow.Item(i).ToString
hotel_chk.Tag = dtrow.Item(1).ToString
End If
Next
Next
End If
End Sub
Private Sub Firmware_cbo_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles Firmware_cbo.SelectionChangeCommitted
If Firmware_cbo.SelectedItem.Equals("Hex_Code") Then
SetAPP_FOR_CodevTrue
SetLauncher_cbointem(ApplicableModels_cbo, "tbl_rcu_model_list", "RCU_Model_Name")
Else
SetAPP_FOR_CodevFalse
Roon_chk.Tag = ""
hotel_chk.Tag = ""
Roon_chk.Text = "房型:"
hotel_chk.Text = "酒店:"
End If
End Sub
Public Function SetLauncher_cbointem(cbo As ComboBox, tabname As String, clunm As String, Optional col As String = "", Optional hotel As Integer = 0) As Dictionary(Of String, String)
cbo.Items.Clear()
Dim udt As DataTable
Dim dickey As String = ""
Dim dicval As String = ""
Dim dic As New Dictionary(Of String, String)
Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, FrmMain.DbConnString)
db.Open()
If hotel <> 0 Then
udt = db.ExecuteDataTable(db.CmdHelper.SearchAll(tabname, $"`HOTEL_OLD_ID`='{hotel}'"))
Else
udt = db.ExecuteDataTable(db.CmdHelper.SearchAll(tabname))
End If
db.Close()
End Using
If IsNothing(udt) Then
Return Nothing
Else
For Each dtrow As DataRow In udt.Rows
For i As Integer = 0 To udt.Columns.Count - 1
If udt.Columns(i).ColumnName.Equals(clunm) Then
dickey = dtrow.Item(i).ToString
ElseIf udt.Columns(i).ColumnName.Equals(col) Then
dicval = dtrow.Item(i).ToString
Else
Continue For
End If
Next
If String.IsNullOrWhiteSpace(dicval) Then
dickey = dickey
Else
dickey = dicval & "_" & dickey
End If
If dic.ContainsKey(dickey) Then
Continue For
End If
dic.Add(dickey, dicval)
Next
cbo.Items.AddRange(dic.Keys.ToArray)
End If
Return dic
End Function
Private Sub SelectFile_btn_Click(sender As Object, e As EventArgs) Handles SelectFile_btn.Click
SafeFileName = GetfilePathtext(FirmwarePath_txt, "L2")
FileName = FirmwarePath_txt.Text
End Sub
Private Sub SelectFileV4_btn_Click(sender As Object, e As EventArgs) Handles SelectFileV4_btn.Click
SafeFileNameV4 = GetfilePathtext(FirmwarePathV4_txt, "L4")
FileNameV4 = FirmwarePathV4_txt.Text
End Sub
Public Function GetStringMd5(filePath As String) As String
Dim dataFile() As Byte = File.ReadAllBytes(filePath)
Dim databuff As Byte() = MD5.Create().ComputeHash(dataFile)
Dim MD5str As String = BitConverter.ToString(databuff)
' Console.WriteLine($"md5-1:{MD5str}")
Return MD5str.Replace("-", "")
End Function
Private Sub Ok_btn_Click(sender As Object, e As EventArgs) Handles Ok_btn.Click
InsertFirmware.Clear()
If Not Firmware_cbo.Text.Length > 0 Then
MsgBox("未选择上传固件类型")
Return
End If
If Not FirmwarePath_txt.Text.Length > 0 AndAlso Not FirmwarePathV4_txt.Text.Length > 0 Then
MsgBox("未选择上传LV2固件")
Return
End If
If Not FirmwareVer_txt.Text.Length > 0 Then
MsgBox("未添加上传固件版本")
Return
End If
'If Not Launcher_cbo.Text.Length > 0 Then
' MsgBox("上传固件Launcher")
' Return
'End If
If Firmware_cbo.SelectedItem.Equals("Hex_Code") Then
If Not ApplicableModels_cbo.Text.Length > 0 Then
MsgBox("未添加固件适用机型")
Return
Else
InsertFirmware.Add("AppForModel", ApplicableModels_cbo.Text)
End If
Dim tag As String = hotel_chk.Tag
If hotel_chk.Checked AndAlso tag.Length > 0 Then
InsertFirmware.Add("HOTEL_ID", hotel_chk.Tag)
Else
MsgBox("未确认酒店")
Return
End If
tag = Roon_chk.Tag
If Roon_chk.Checked AndAlso tag.Length > 0 Then
InsertFirmware.Add("ROOM_TYPE_ID", Roon_chk.Tag)
Else
MsgBox("未确认房型")
Return
End If
End If
If Not Remark_txt.Text.Length > 0 Then
MsgBox("未添加备注")
Return
End If
Dim filepath As String = FirmwarePath_txt.Text
Dim filepathV4 As String = FirmwarePathV4_txt.Text
Dim md5 As String = ""
Dim v4md5 As String = ""
InsertFirmware.Add("AppType", Firmware_cbo.Text)
If Not String.IsNullOrEmpty(FileName) Then
InsertFirmware.Add("FileName", SafeFileName)
md5 = GetStringMd5(filepath)
End If
InsertFirmware.Add("MD5Val", md5)
InsertFirmware.Add("Ver", FirmwareVer_txt.Text)
InsertFirmware.Add("Luncher_Ver", "C1_L2")
InsertFirmware.Add("Remark", Remark_txt.Text)
InsertFirmware.Add("DateTime", Now.ToString("yyyy-MM-dd HH:mm:ss.fff"))
InsertFirmware.Add("FilePath", "\Data\Firmware\".Replace("\", "\\"))
InsertFirmware.Add("IsValid", "1")
For Each index In InsertFirmware
InsertFirmwareV4.Add(index.Key, index.Value)
Next
If InsertFirmwareV4.ContainsKey("FileName") Then
If Not String.IsNullOrEmpty(filepathV4) Then
InsertFirmwareV4.Item("FileName") = SafeFileNameV4
v4md5 = GetStringMd5(filepathV4)
Else
InsertFirmwareV4.Remove("FileName")
End If
Else
If Not String.IsNullOrEmpty(filepathV4) Then
InsertFirmwareV4.Add("FileName", SafeFileNameV4)
v4md5 = GetStringMd5(filepathV4)
End If
End If
InsertFirmwareV4.Item("MD5Val") = v4md5
InsertFirmwareV4.Item("Luncher_Ver") = "C1_L4"
'InsertFirmwarev4.Item("Ver")= FirmwareV4_txt.Text
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Return
End Sub
Private Sub No_btn_Click(sender As Object, e As EventArgs) Handles No_btn.Click
Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
Return
End Sub
Private Sub Firmware_cbo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles Firmware_cbo.SelectedIndexChanged
FirmwarePath_txt.Text = ""
FirmwarePathV4_txt.Text = ""
End Sub
End Class