Слияние кода завершено, страница обновится автоматически
Attribute VB_Name = "OrdinaryFun"
'Ordinary Function
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMillSeconds As Long)
'毫秒delay
Public Sub DelayTimeMS(millseconds As Long)
DoEvents
Sleep (millseconds)
DoEvents
End Sub
'秒delay
Public Sub DelaySecond(ts As Integer)
Dim tStart
Dim tStop
tStart = Now
tStop = tStart
While Second(tStop - tStart) < ts
tStop = Now
DoEvents
Wend
End Sub
'全局变量初始化
Sub GlobalVarInit(TObj As Application, TBook As Workbook, TSheet As Worksheet)
Dim totalSum As Integer
Dim Section As Integer, Key As Integer, Count() As Integer
Dim Result As Integer
Dim i As Integer, j As Integer
On Error GoTo ExitCom
'com
tmp = ReadSingleStrExcel("接口配置", "A6")
If UCase(tmp) = "YES" Then
On Error GoTo CommErr:
MainForm.MSComm1.CommPort = CInt(ReadSingleStrExcel("接口配置", "B6"))
MainForm.MSComm1.Settings = ReadSingleStrExcel("接口配置", "C6")
MainForm.MSComm1.CommPort = CInt(ReadSingleStrExcel("接口配置", "B6"))
MainForm.MSComm1.InBufferCount = 0
MainForm.MSComm1.OutBufferCount = 0
MainForm.MSComm1.InputMode = comInputModeBinary
MainForm.MSComm1.InBufferSize = 1024
MainForm.MSComm1.OutBufferSize = 512
MainForm.MSComm1.InputLen = 0
MainForm.MSComm1.Settings = ReadSingleStrExcel("接口配置", "C6")
MainForm.MSComm1.RThreshold = 0
MainForm.MSComm1.SThreshold = 0
MainForm.MSComm1.PortOpen = True
MainForm.MSComm1.PortOpen = False
Else
MainForm.MSComm1 = Null
End If
On Error GoTo 0
tmp = ReadSingleStrExcel("接口配置", "A2")
If UCase(tmp) = "YES" Then
ServerData.ServerIP = ReadSingleStrExcel("接口配置", "B2")
ServerData.ServerUser = ReadSingleStrExcel("接口配置", "C2")
tmp = ReadSingleStrExcel("接口配置", "D2")
ServerData.ServerPassword = EnCodding(ReadSingleStrExcel("接口配置", "D2"))
End If
tmp = ReadSingleStrExcel("Product", "A6")
If UCase(tmp) = "YES" Then
Excel_Templete = ReadSingleStrExcel("Product", "B6")
Excel_TempleteShow = ReadSingleStrExcel("Product", "C6")
End If
Excel_Report = ReadSingleStrExcel("Product", "D6")
tmp = ReadSingleStrExcel("Product", "E6")
If UCase(tmp) = "TRUE" Then
ReportShow = True
Else
ReportShow = False
End If
'配置文件头信息
GetInformation
'数据
tmp = ReadSingleStrExcel("配置文件信息", "A2")
If tmp > 0 Then
ReDim DevConf(tmp - 1)
Else
ReDim DevConf(0)
End If
tmp = ReadSingleStrExcel("配置文件信息", "E2")
If tmp > 0 Then
ReDim DevResult(tmp - 1)
Else
ReDim DevResult(0)
End If
tmp = ReadSingleStrExcel("配置文件信息", "M2")
If tmp > 0 Then
ReDim DevExcel(tmp - 1)
Else
ReDim DevExcel(0)
End If
'section information
SectionInf.Count = ReadSingleStrExcel("配置文件信息", "D2")
ReDim SectionInf.Section(SectionInf.Count - 1)
ReDim SectionInf.Message(SectionInf.Count - 1)
'Excel Templete
'Excel Inter init
Set TSheet = TBook.Worksheets("Item")
TSheet.Select
TSheet.Range("D2").Select
For i = 0 To SectionInf.Count - 1
If Len(TObj.Selection.Value) = 0 Then
TObj.ActiveCell.End(xlDown).Select ' TSheet.Range(ActiveCell.Address).End(xlDown).Select
SectionInf.Section(i) = TObj.ActiveCell.Value
Else
SectionInf.Section(i) = TObj.ActiveCell.Value
End If
TObj.Selection.OffSet(1, 0).Select
Next i
TSheet.Range("C2").Select
For i = 0 To SectionInf.Count - 1
If Len(TObj.ActiveCell.Value) = 0 Then
TObj.ActiveCell.End(xlDown).Select 'TSheet.Range(ActiveCell.Address).End(xlDown).Select
SectionInf.Message(i) = TObj.ActiveCell.Value
Else
SectionInf.Message(i) = TObj.ActiveCell.Value
End If
TObj.Selection.OffSet(1, 0).Select
Next i
Call GetItemValue(SectionInf.Count, SectionInf.Section, TSheet)
Exit Sub
ExitCom:
CommErr:
MsgBox "串口打开错误!", vbCritical, "错误!"
End Sub
Sub GetInformation()
'配置文件头信息
TestInfor.Source = ReadSingleStrExcel("Product", "A2")
TestInfor.FunctionCode = ReadSingleStrExcel("Product", "B2")
TestInfor.Matrix_Switch = ReadSingleStrExcel("Product", "C2")
TestInfor.Product = ReadSingleStrExcel("Product", "D2")
TestInfor.Expiration = ReadSingleStrExcel("Product", "E2")
TestInfor.SNLong = ReadSingleStrExcel("Product", "F2")
TestInfor.SNShort = ReadSingleStrExcel("Product", "G2")
TestInfor.SNDel = ReadSingleStrExcel("Product", "H2")
TestInfor.SNSave = ReadSingleStrExcel("Product", "I2")
totalSum = ReadSingleStrExcel("配置文件信息", "L2")
ReDim TestInfor.SNCheck(totalSum - 1)
For i = 0 To totalSum - 1
TestInfor.SNCheck(i) = ReadSingleStrExcel("Product", "O" + CStr(i + 2))
If TestInfor.SNCheck(i) = """""" Then
TestInfor.SNCheck(i) = ""
End If
Next i
OrdinaryVar.DelayTime.ROMDelay = ReadSingleStrExcel("Product", "A11")
OrdinaryVar.DelayTime.ProcessDelay = ReadSingleStrExcel("Product", "B11")
OrdinaryVar.DelayTime.CommandDelay = ReadSingleStrExcel("Product", "C11")
OrdinaryVar.DelayTime.ProgramDelay = ReadSingleStrExcel("Product", "D11")
End Sub
'绑定仪器
Sub InstructionBuild(InstructionName As String)
If InstructionName = "ENA" Or InstructionName = "E5062A" Or InstructionName = "E5061B" Then
Dim NetworkAnalyzer As New E5062A
Else
'其他仪器
End If
End Sub
Private Function StringEnDeCodecn(strSource As String, MA) As String
'该函数只对中西文起到加密作用
'参数为:源文件,密码
On Error GoTo ErrEnDeCode
Dim X As Single, i
Dim CHARNUM As Long, RANDOMINTEGER As Integer
Dim SINGLECHAR As String * 1
Dim strTmp As String
If MA < 0 Then
MA = MA * (-1)
End If
X = Rnd(-MA)
For i = 1 To Len(strSource) Step 1 '取单字节内容
SINGLECHAR = Mid(strSource, i, 1)
CHARNUM = Asc(SINGLECHAR)
thisGo:
RANDOMINTEGER = Int(127 * Rnd)
If Not (RANDOMINTEGER >= 65 And RANDOMINTEGER <= 90 Or RANDOMINTEGER >= 97 And RANDOMINTEGER <= 122) Then GoTo thisGo
CHARNUM = CHARNUM Xor RANDOMINTEGER
strTmp = strTmp & Chr(CHARNUM)
Next i
StringEnDeCodecn = strTmp
Exit Function
ErrEnDeCode:
StringEnDeCodecn = ""
MsgBox Err.Number & "\" & Err.Description
End Function
'读测试(sum)\结果(sumR)\Excel变量(sumE)
Sub GetItemValue(Section As Integer, Count() As Integer, Sheet As Worksheet)
Dim i As Integer, j As Integer, sum As Integer, sumR As Integer, sumE As Integer
Dim tmp As String
Dim spl
sumE = 0
tmp = Sheet.Range("E" + CStr(sum + 2)).Value
While (Len(tmp) <> 0)
If sum = 26 Then
sum = sum
End If
DevConf(sum).ItemName = tmp
'-1表示无效
DevConf(sum).WrIndex = -1
DevConf(sum).StartF = Sheet.Range("F" + CStr(sum + 2)).Value
DevConf(sum).StopF = Sheet.Range("G" + CStr(sum + 2)).Value
DevConf(sum).MeasType = Sheet.Range("H" + CStr(sum + 2)).Value
DevConf(sum).ToBeTested = True
spl = Split(DevConf(sum).ItemName, "&")
If UBound(spl) = 1 Then
'Associate
DevConf(sum).Key = CInt(spl(1))
End If
'-------------------------DevResult---------------------------------
'WrIndex
tmp = Sheet.Range("N" + CStr(sum + 2)).Value
If Len(tmp) <> 0 Then
sumR = CInt(tmp) - 1
'变量位置,将DevConf的WrIndex记录着要记录结果的位置
'因此,在测试的时候,只要传入Devconf就可以了
DevConf(sum).WrIndex = sumR
'WrIndex
'DevResult(sumR).WrIndex = CInt(tmp)
'name
DevResult(sumR).TestName = DevConf(sum).ItemName
spl = Split(DevResult(sumR).TestName, "&")
If UBound(spl) = 1 Then
'Associate
'DevConf(sum).Key = CInt(spl(1))
DevResult(sumR).Associate = CInt(spl(1))
'key
DevResult(sumR).Key = SerchKey(DevResult(sumR).Associate, sum)
End If
If DevConf(sum).MeasType = Meas_Delay Or DevConf(sum).MeasType = Meas_DelayRipple Then
DevResult(sumR).Unit = "ns"
Else
DevResult(sumR).Unit = "dB"
End If
'highspec
tmp = Sheet.Range("I" + CStr(sum + 2)).Value
If Len(tmp) <> 0 Then
DevResult(sumR).HighSpec = CDbl(tmp)
Else
DevResult(sumR).HighSpec = "Null"
End If
'lowspec
tmp = Sheet.Range("J" + CStr(sum + 2)).Value
If Len(tmp) <> 0 Then
DevResult(sumR).LowSpec = CDbl(tmp)
Else
DevResult(sumR).LowSpec = "Null"
End If
DevResult(sumR).Export = CInt(Sheet.Range("Q" + CStr(sum + 2)).Value)
'image
DevResult(sumR).Image = Sheet.Range("R" + CStr(sum + 2)).Value
DevResult(sumR).SaveTemplete = Sheet.Range("S" + CStr(sum + 2)).Value
DevResult(sumR).ResultMax = "NULL"
DevResult(sumR).ResultMin = "NULL"
End If
'--------------------------
DevConf(sum).Sta = Sheet.Range("K" + CStr(sum + 2)).Value
DevConf(sum).ch = Sheet.Range("L" + CStr(sum + 2)).Value
DevConf(sum).Tr = Sheet.Range("M" + CStr(sum + 2)).Value
DevConf(sum).Command = Sheet.Range("O" + CStr(sum + 2)).Value
DevConf(sum).MeasPath = Sheet.Range("P" + CStr(sum + 2)).Value
'----------------------for Excel ------------------
tmp = Sheet.Range("S" + CStr(sum + 2)).Value
If Len(tmp) <> 0 Then
'location
DevExcel(sumE).Excel_Address = Sheet.Range("S" + CStr(sum + 2)).Value
DevConf(sum).KeyExcel = sumE
'export
tmp = Sheet.Range("Q" + CStr(sum + 2)).Value
If Len(tmp) <> 0 Then
DevExcel(sumE).Excel_Export = tmp
Else
DevExcel(sumE).Excel_Export = Null
End If
'key
DevExcel(sumE).Key = sum
sumE = sumE + 1
End If
'----------------------------------------------
sum = sum + 1
tmp = Sheet.Range("E" + CStr(sum + 2)).Value
Wend
End Sub
'解密
Function EnCodding(code As String) As String
Dim Key As String
Dim password As String
Key = "99411"
EnCodding = StringEnDeCodecn(code, Key)
End Function
Function SerchKey(loc As Integer, MaxSerch As Integer) As Integer
Dim Cnt As Integer
Dim i As Integer
SerchKey = 0
Cnt = UBound(DevResult)
For i = 0 To MaxSerch
'搜索到的测试项位置信息返回值
If loc = DevConf(i).Key Then
SerchKey = i
Exit For
End If
Next i
End Function
'SN Check
Function SNCheckFun(id As String, sn As String, SNCheck() As String) As Boolean
Dim objRegExp As New RegExp
Dim Lloc As Integer
Dim Hloc As Integer
Dim i As Integer
Lloc = LBound(SNCheck)
Hloc = UBound(SNCheck)
SNCheckFun = False
If Len(id) <> 6 Then
SNCheckFun = False
Exit Function
End If
If Len(sn) = 0 Then
SNCheckFun = False
Exit Function
End If
If Len(SNCheck(0)) = 0 Then
SNCheckFun = True
Exit Function
End If
objRegExp.IgnoreCase = True
objRegExp.Global = False
For i = Lloc To Hloc
If Len(SNCheck(i)) <> 0 Then
objRegExp.Pattern = "^" + SNCheck(i) + "$"
Else
objRegExp.Pattern = ""
End If
If objRegExp.Test(sn) = True Then
SNCheckFun = True
Exit Function
End If
Next i
End Function
Function SNHandle(TI As TestInformation, te As String) As Boolean
SNHandle = True
If Len(te) > TI.SNLong Or Len(te) < TI.SNShort Then
SNHandle = False
Exit Function
End If
End Function
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )