397 lines
14 KiB
VB.net
397 lines
14 KiB
VB.net
|
|
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_Codev(False)
|
|||
|
|
'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 CuttingFilePath(openFileDialog.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 = buff(3)
|
|||
|
|
If Firmware_cbo.SelectedItem.ToString.Equals("Hex_Code") Then
|
|||
|
|
Gethotleandroon(buff(5))
|
|||
|
|
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_Codev(True)
|
|||
|
|
SetLauncher_cbointem(ApplicableModels_cbo, "tbl_rcu_model_list", "RCU_Model_Name")
|
|||
|
|
Else
|
|||
|
|
SetAPP_FOR_Codev(False)
|
|||
|
|
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
|