Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 12

Dim FrmHabdle As Long

Dim ComAdr As Byte


Dim fCmdRet As Long
Dim fdminfre As Single
Dim fdmaxfre As Single
Dim fIsInventoryScan As Boolean
Dim fcloseApp As Boolean
Const DEFAULT_BAUD_RATE As Integer = 9600
Const DEFAULT_COM_PORT As String = "COM5"

Private Sub Check3_Click()


If Check3.Value = 1 Then
Combo7.ListIndex = Combo6.ListIndex
End If
End Sub

Private Sub Command1_Click()


Dim Port As Long
Dim Baud As Byte
Dim str As String
Dim TrType(2) As Byte
Dim VersionInfo(2) As Byte
Dim ReaderType, ScanTime, dmaxfre, dminfre, PowerDbm, FreBand, Accuracy As Byte
ComAdr = &HFF
Port = Combo1.ListIndex + 1
Baud = Combo2.ListIndex
If Baud > 2 Then
Baud = Baud + 2
End If
FrmHandle = -1
Label18.Caption = ""
Combo4.Clear
fCmdRet = OpenComPort(Port, ComAdr, Baud, FrmHabdle)
If (fCmdRet = 0) Then
fCmdRet = GetReaderInformation(ComAdr, VersionInfo(0), ReaderType, TrType(0), dmaxfre, dminfre,
PowerDbm, ScanTime, FrmHabdle)
If (fCmdRet = 0) Then
Text3.Text = GetValue(VersionInfo(0)) + "." + GetValue(VersionInfo(1))
If (VersionInfo(1) >= 30) Then
For i = 0 To 30
str = Val(i)
Combo4.AddItem (str)
Next i
Combo4.ListIndex = 30
Else
For i = 0 To 18
str = Val(i)
Combo4.AddItem (str)
Next i
Combo4.ListIndex = 18
End If
Text4.Text = GetHexValue(ComAdr)
Text8.Text = GetHexValue(ComAdr)
str = GetValue(ScanTime)
Text9.Text = str + "*100ms"
index = ScanTime - 3
Combo5.ListIndex = index
str = Val(PowerDbm)
Text5.Text = str
Combo4.ListIndex = PowerDbm
FreBand = ((dmaxfre And &HC0) / 16) Or (dminfre / 64)
Select Case FreBand
Case 0
Option1.Value = True
fdminfre = 902.6 + (dminfre And &H3F) * 0.4
fdmaxfre = 902.6 + (dmaxfre And &H3F) * 0.4
Case 1
Option2.Value = True
fdminfre = 920.125 + (dminfre And &H3F) * 0.25
fdmaxfre = 920.125 + (dmaxfre And &H3F) * 0.25
Case 2
Option3.Value = True
fdminfre = 902.75 + (dminfre And &H3F) * 0.5
fdmaxfre = 902.75 + (dmaxfre And &H3F) * 0.5
Case 3
Option4.Value = True
fdminfre = 917.1 + (dminfre And &H3F) * 0.2
fdmaxfre = 917.1 + (dmaxfre And &H3F) * 0.2
Case 4
Option5.Value = True
fdminfre = 865.1 + (dminfre And &H3F) * 0.2
fdmaxfre = 865.1 + (dmaxfre And &H3F) * 0.2
End Select
Text6.Text = CStr(fdminfre) + "MHz"
Text7.Text = CStr(fdmaxfre) + "MHz"
If fdmaxfre <> fdminfre Then
Check3.Value = 0
End If
' Combo6.ListIndex = dminfre And &H3F
'Combo7.ListIndex = dmaxfre And &H3F
Select Case ReaderType
Case 6
Text2.Text = ""
Case 3
Text2.Text = ""
Case 9
Text2.Text = "UHFReader18"
End Select
If (TrType(0) And &H2) = &H2 Then
Check1.Value = 1
Check2.Value = 1
Else
Check1.Value = 0
Check2.Value = 0
End If
Label18.Caption = "GetReaderInformation success!"
End If
Command3.Enabled = True
Command4.Enabled = True
Command7.Enabled = True
Command8.Enabled = True
Command9.Enabled = True
Label18.Caption = "OpenComPort Success"
Else
Label18.Caption = "OpenComPort Failed"
End If

End Sub
Function GetHexData(ByRef uBuff() As Byte, ByVal count As Long) As String
Dim GetData, GetBuff As String
Dim i As Long
GetData = ""
For i = 0 To count - 1
If uBuff(i) < 16 Then
GetBuff = "0" & Hex(uBuff(i))
Else
GetBuff = Hex(uBuff(i))
End If
GetData = GetData + GetBuff
Next i
GetHexData = GetData
End Function
Function GetHexValue(ByVal uBuff As Byte) As String
Dim GetData As String
Dim i As Long
If uBuff < 16 Then
GetData = "0" & Hex(uBuff)
Else
GetData = Hex(uBuff)
End If
GetHexValue = GetData
End Function
Function GetValue(ByVal uBuff As Byte) As String
Dim GetData As String
Dim i As Long
If uBuff < 10 Then
GetData = "0" & Val(uBuff)
Else
GetData = Val(uBuff)
End If
GetValue = GetData
End Function

Private Sub Command2_Click()


Timer1.Enabled = False
fCmdRet = CloseComPort()

If fCmdRet = 0 Then
Label18.Caption = "CloseComPort success!"
Label18.Caption = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text9.Text = ""
Check1.Value = 0
Check2.Value = 0
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Else
Label18.Caption = "CloseComPort Failed!"
End If
End Sub

Private Sub Command3_Click()


Dim TrType(2) As Byte
Dim VersionInfo(2) As Byte
Dim ReaderType, ScanTime, dmaxfre, dminfre, PowerDbm, FreBand, Accuracy As Byte
Dim str As String
Dim index As Long
Label18.Caption = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text9.Text = ""
Check1.Value = 0
Check2.Value = 0
Combo4.Clear
fCmdRet = GetReaderInformation(ComAdr, VersionInfo(0), ReaderType, TrType(0), dmaxfre, dminfre,
PowerDbm, ScanTime, FrmHabdle)
If (fCmdRet = 0) Then
Text3.Text = GetValue(VersionInfo(0)) + "." + GetValue(VersionInfo(1))
If (VersionInfo(1) >= 30) Then
For i = 0 To 30
str = Val(i)
Combo4.AddItem (str)
Next i
Combo4.ListIndex = 30
Else
For i = 0 To 18
str = Val(i)
Combo4.AddItem (str)
Next i
Combo4.ListIndex = 18
End If
Text4.Text = GetHexValue(ComAdr)
Text8.Text = GetHexValue(ComAdr)
str = GetValue(ScanTime)
Text9.Text = str + "*100ms"
index = ScanTime - 3
Combo5.ListIndex = index
str = Val(PowerDbm)
Text5.Text = str
Combo4.ListIndex = PowerDbm
FreBand = ((dmaxfre And &HC0) / 16) Or (dminfre / 64)
Select Case FreBand
Case 0
Option1.Value = True
fdminfre = 902.6 + (dminfre And &H3F) * 0.4
fdmaxfre = 902.6 + (dmaxfre And &H3F) * 0.4
Case 1
Option2.Value = True
fdminfre = 920.125 + (dminfre And &H3F) * 0.25
fdmaxfre = 920.125 + (dmaxfre And &H3F) * 0.25
Case 2
Option3.Value = True
fdminfre = 902.75 + (dminfre And &H3F) * 0.5
fdmaxfre = 902.75 + (dmaxfre And &H3F) * 0.5
Case 3
Option4.Value = True
fdminfre = 917.1 + (dminfre And &H3F) * 0.2
fdmaxfre = 917.1 + (dmaxfre And &H3F) * 0.2
Case 4
Option5.Value = True
fdminfre = 865.1 + (dminfre And &H3F) * 0.2
fdmaxfre = 865.1 + (dmaxfre And &H3F) * 0.2
End Select
Text6.Text = CStr(fdminfre) + "MHz"
Text7.Text = CStr(fdmaxfre) + "MHz"
If fdmaxfre <> fdminfre Then
Check3.Value = 0
End If
' Combo6.ListIndex = CByte(dminfre And &H3F)
' Combo7.ListIndex = CByte(dmaxfre And &H3F)
Select Case ReaderType
Case 6
Text2.Text = ""
Case 3
Text2.Text = ""
Case 9
Text2.Text = "UHFReader18"
End Select
If (TrType(0) And &H2) = &H2 Then
Check1.Value = 1
Check2.Value = 1
Else
Check1.Value = 0
Check2.Value = 0
End If
Label18.Caption = "GetReaderInformation success!"
End If
End Sub
Function Inventory() As Long
Dim CardNum As Long
Dim Totallen As Long
Dim AdrTID As Byte
Dim LenTID As Byte
Dim TIDFlag As Byte
Dim EPClen, m As Long
Dim EPC(5000) As Byte
Dim CardIndex As Long
Dim temps As String
Dim s, sEPC As String
Dim ScanModeData(5000) As Byte
Dim ValidDatalength As Long
Dim isonlistview As Boolean
Dim fileNum As Integer

' Inisialisasi variabel


AdrTID = 0
LenTID = 0
TIDFlag = 0

If (Combo8.ListIndex = 0) Then
fCmdRet = Inventory_G2(ComAdr, AdrTID, LenTID, TIDFlag, EPC(0), Totallen, CardNum,
FrmHabdle)
If ((fCmdRet = 1) Or (fCmdRet = 2) Or (fCmdRet = 3) Or (fCmdRet = 4) Or (fCmdRet = &HFB)) Then
temps = GetHexData(EPC, Totallen)
fInventory_EPC_List = temps
m=1

If (CardNum = 0) Then
fIsInventoryScan = False
Exit Function
End If

' Membersihkan Text10 sebelum menampilkan UID baru


Text10.Text = ""

For CardIndex = 0 To CardNum - 1


If (fcloseApp) Then
Exit For
End If
EPClen = EPC(m - 1)
sEPC = Mid(temps, m * 2 + 1, EPClen * 2)
m = m + EPClen + 1
If (Len(sEPC) <> EPClen * 2) Then
Exit Function
End If
List1.AddItem (sEPC)
Text10.Text = Text10.Text & sEPC & vbCrLf ' Menampilkan nilai UID pada Text10
Next CardIndex
End If
If (List1.ListCount > 0) Then
List1.ListIndex = List1.ListCount - 1
End If
Else
fCmdRet = ReadActiveModeData(ScanModeData(0), ValidDatalength, FrmHabdle)
If (ValidDatalength > 0) Then
temps = GetHexData(ScanModeData, ValidDatalength)
List1.AddItem (temps)
Text10.Text = Text10.Text & temps & vbCrLf ' Menampilkan nilai UID pada Text10
End If
If (List1.ListCount > 0) Then
List1.ListIndex = List1.ListCount - 1
End If
End If

fIsInventoryScan = False
If (fcloseApp) Then
Close
End If
End Function

Private Sub Command4_Click()


Timer1.Enabled = True
Command5.Enabled = True
Command4.Enabled = False
End Sub

Private Sub Command5_Click()


Dim fileNum As Integer
Dim uidData As String

' Menonaktifkan Timer1 dan mengubah status tombol


Timer1.Enabled = False
Command4.Enabled = True
Command5.Enabled = False

' Menyimpan data dari Text10 ke file uid.txt


fileNum = FreeFile ' Mendapatkan nomor file yang tersedia
Open "uid.txt" For Output As #fileNum ' Membuka atau membuat file uid.txt untuk ditulis

uidData = Text10.Text ' Mengambil data dari Text10


Print #fileNum, uidData ' Menulis data ke file

Close #fileNum ' Menutup file


End Sub

Private Sub Command6_Click()


List1.Clear
End Sub

Private Sub Command7_Click()


Dim aNewComAdr, PowerDbm, dminfre, dmaxfre, ScanTime, band As Byte
Dim fBaud As Byte
Dim returninfo As String
Dim returninfoDlg As String
Dim setinfo As String
setinfo = ""
returninfoDlg = ""
returninfo = ""
Label18.Caption = ""
If (Option1.Value = True) Then
band = 0
End If
If (Option2.Value = True) Then
band = 1
End If
If (Option3.Value = True) Then
band = 2
End If
If (Option4.Value = True) Then
band = 3
End If
If (Option5.Value = True) Then
band = 4
End If
If (Text8.Text = "") Then
Exit Sub
End If
dminfre = CByte(((band And 3) * 64) Or (Combo6.ListIndex And &H3F))
dmaxfre = CByte(((band And &HC) * 16) Or (Combo7.ListIndex And &H3F))
aNewComAdr = CByte(Text8.Text)
PowerDbm = CByte(Combo4.ListIndex)
fBaud = CByte(Combo3.ListIndex)
If (fBaud > 2) Then
fBaud = CByte(fBaud + 2)
End If
ScanTime = CByte(Combo5.ListIndex + 3)
setinfo = "Write"
fCmdRet = WriteComAdr(ComAdr, aNewComAdr, FrmHabdle)
If (fCmdRet = &H13) Then
fComAdr = aNewComAdr
End If
If (fCmdRet = 0) Then
fComAdr = aNewComAdr
returninfo = returninfo + setinfo + "Address Successfully"
ElseIf (fCmdRet = &HEE) Then
returninfo = returninfo + setinfo + "Address Response Command Error"
Else
returninfo = returninfo + setinfo + "Address Fail"
' returninfoDlg = returninfoDlg + setinfo + "Address Fail Command Response=0x" +
Cstr(fCmdRet) + "(" + GetReturnCodeDesc(fCmdRet) + ")"
End If
fCmdRet = SetPowerDbm(ComAdr, PowerDbm, FrmHabdle)
If (fCmdRet = 0) Then
returninfo = returninfo + ",Power Success"
ElseIf (fCmdRet = &HEE) Then
returninfo = returninfo + ",Power Response Command Error"
Else
returninfo = returninfo + ",Power Fail"
' returninfoDlg = returninfoDlg + " " + setinfo + "Power Fail Command Response=0x" +
Convert.ToString(fCmdRet) + "(" + GetReturnCodeDesc(fCmdRet) + ")"
End If

fCmdRet = Writedfre(ComAdr, dmaxfre, dminfre, FrmHabdle)


If (fCmdRet = 0) Then
returninfo = returninfo + ",Frequency Success"
ElseIf (fCmdRet = &HEE) Then
returninfo = returninfo + ",Frequency Response Command Error"
Else

returninfo = returninfo + ",Frequency Fail"


' returninfoDlg = returninfoDlg + " " + setinfo + "Frequency Fail Command Response=0x" +
Convert.ToString(fCmdRet) + "(" + GetReturnCodeDesc(fCmdRet) + ")"
End If

fCmdRet = Writebaud(ComAdr, fBaud, FrmHabdle)


If (fCmdRet = 0) Then
returninfo = returninfo + ",Baud Rate Success"
ElseIf (fCmdRet = &HEE) Then
returninfo = returninfo + ",Baud Rate Response Command Error"
Else

returninfo = returninfo + ",Baud Rate Fail"


' returninfoDlg = returninfoDlg + " " + setinfo + "Baud Rate Fail Command Response=0x" +
Convert.ToString(fCmdRet) + "(" + GetReturnCodeDesc(fCmdRet) + ")"
End If

fCmdRet = WriteScanTime(ComAdr, ScanTime, FrmHabdle)


If (fCmdRet = 0) Then
returninfo = returninfo + ",InventoryScanTime Success"
ElseIf (fCmdRet = &HEE) Then
returninfo = returninfo + ",InventoryScanTime Response Command Error"
Else
returninfo = returninfo + ",InventoryScanTime Fail"
' returninfoDlg = returninfoDlg + " " + setinfo + "InventoryScanTime Fail Command
Response=0x" + Convert.ToString(fCmdRet) + "(" + GetReturnCodeDesc(fCmdRet) + ")"
End If
Label18.Caption = returninfo
End Sub

Private Sub Command8_Click()


Dim Parameter(6) As Byte
Parameter(0) = CByte(Combo8.ListIndex)
Parameter(1) = 2
Parameter(2) = 1
Parameter(3) = 0
Parameter(4) = 1
Parameter(5) = 0
fCmdRet = SetWorkMode(ComAdr, Parameter(0), FrmHabdle)
If fCmdRet = 0 Then
Label18.Caption = "SetWorkMode success!"
Else
Label18.Caption = "SetWorkMode Failed!"
End If
End Sub

Private Sub Command9_Click()


Dim Parameter(20) As Byte
fCmdRet = GetWorkModeParameter(ComAdr, Parameter(0), FrmHabdle)
If fCmdRet = 0 Then
Combo8.ListIndex = Parameter(4)
Label18.Caption = "GetWorkModeParameter success!"
Else
Label18.Caption = "GetWorkModeParameter Failed!"
End If
End Sub

Private Sub Form_Load()


Dim i As Integer
Dim str As String
Option1.Value = True
For i = 1 To 9
str = Val(i)
Combo1.AddItem ("COM" & str)
Next i
Combo1.ListIndex = 0
' Set Combo1 to COM5
For i = 0 To Combo1.ListCount - 1
If Combo1.List(i) = "COM5" Then
Combo1.ListIndex = i
Exit For
End If
Next i

Combo2.AddItem ("9600bps")
Combo2.AddItem ("19200bps")
Combo2.AddItem ("38400bps")
Combo2.AddItem ("57600bps")
Combo2.AddItem ("115200bps")
Combo2.ListIndex = 3

Combo3.AddItem ("9600bps")
Combo3.AddItem ("19200bps")
Combo3.AddItem ("38400bps")
Combo3.AddItem ("57600bps")
Combo3.AddItem ("115200bps")
Combo3.ListIndex = 3

For i = 3 To 255
str = Val(i)
Combo5.AddItem (str & "*100ms")
Next i
Combo5.ListIndex = 7

For i = 0 To 62
Combo6.AddItem (CStr(902.6 + i * 0.4) & " MHz")
Combo7.AddItem (CStr(902.6 + i * 0.4) & "MHz")
Next i
Combo6.ListIndex = 0
Combo7.ListIndex = 62
Combo4.ListIndex = 30
fIsInventoryScan = False
fcloseApp = False

Combo8.AddItem ("Answer mode")


Combo8.AddItem ("Active mode")
Combo8.AddItem ("Trigger mode(Low)")
Combo8.AddItem ("Trigger mode(High)")
Combo8.ListIndex = 0
End Sub

Private Sub Form_Unload(Cancel As Integer)


fcloseApp = True
End Sub

Private Sub Option1_Click()


Dim i As Integer
Combo6.Clear
Combo7.Clear
Check3.Value = 0
For i = 0 To 62
Combo6.AddItem (CStr(902.6 + i * 0.4) + " MHz")
Combo7.AddItem (CStr(902.6 + i * 0.4) + " MHz")
Next i
Combo6.ListIndex = 0
Combo7.ListIndex = 62
End Sub

Private Sub Option2_Click()


Dim i As Integer
Combo6.Clear
Combo7.Clear
Check3.Value = 0
For i = 0 To 19
Combo6.AddItem (CStr(920.125 + i * 0.25) + " MHz")
Combo7.AddItem (CStr(920.125 + i * 0.25) + " MHz")
Next i
Combo6.ListIndex = 0
Combo7.ListIndex = 19
End Sub

Private Sub Option3_Click()


Dim i As Integer
Combo6.Clear
Combo7.Clear
Check3.Value = 0
For i = 0 To 49
Combo6.AddItem (CStr(902.75 + i * 0.5) + " MHz")
Combo7.AddItem (CStr(902.75 + i * 0.5) + " MHz")
Next i
Combo6.ListIndex = 0
Combo7.ListIndex = 49
End Sub

Private Sub Option4_Click()


Dim i As Integer
Combo6.Clear
Combo7.Clear
Check3.Value = 0
For i = 0 To 31
Combo6.AddItem (CStr(917.1 + i * 0.2) + " MHz")
Combo7.AddItem (CStr(917.1 + i * 0.2) + " MHz")
Next i
Combo6.ListIndex = 0
Combo7.ListIndex = 31

End Sub

Private Sub Option5_Click()


Dim i As Integer
Combo6.Clear
Combo7.Clear
Check3.Value = 0
For i = 0 To 14
Combo6.AddItem (CStr(865.1 + i * 0.2) + " MHz")
Combo7.AddItem (CStr(865.1 + i * 0.2) + " MHz")
Next i
Combo6.ListIndex = 0
Combo7.ListIndex = 14
End Sub

Private Sub Text10_Change()

End Sub

Private Sub Timer1_Timer()


Dim i As Long
If (fIsInventoryScan) Then
Exit Sub
End If
fIsInventoryScan = True
b_flag = Inventory()
fIsInventoryScan = False
End Sub

You might also like