Click here to Skip to main content
15,887,821 members
Please Sign up or sign in to vote.
5.00/5 (1 vote)
See more:
Hi guys, am currently stuck while trying to connect an Omron V720 series RFID equipment to read and write tags. I've have it in source code on VB6 but i want to create it in Java. I am using RXTX to connect to the RFID equipment and send the codes, however, i failed to do it. Does anyone have any experience or idea on this topic?

I have manage to connect to the RFID equipment through com port but when i send the messages, the error light blinks and some jumbled up reply came back.

The read code is 00RDSAAA0001
The write code is 00WTSAAA0001

Thanks in advance guys!

Code in Java
<pre lang="cs">#
try {
#
char charTwo = 2;
#
char charThree = 3;
#
char charQ = 12;
#
String unicode = "00RDSAAA0001" + charThree;
#
byte[] bytes = unicode.getBytes("US-ASCII");
#
String line1 = charTwo + "00ST" + charThree + bytes;
#
String line2 = charTwo + "00RDSAAA0001" + charThree + bytes;
#
String line3 = charTwo + "00WTSAAA0001" + "HelloWorld" + charThree + bytes;
#
 
#
 
#
portList = CommPortIdentifier.getPortIdentifiers();
#
while (portList.hasMoreElements()) {
#
portId = (CommPortIdentifier) portList.nextElement();
#
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
#
System.out.println("RFID Testing........");
#
if (portId.getName().equals("COM1")) {
#
System.out.println("RFID Testing....Port Found");
#
try {
#
serialPort = (SerialPort) portId.open("SimpleWriteApp", 2000);
#
RFIDTest wr = new RFIDTest(serialPort);
#
} catch (PortInUseException e) {
#
System.out.println("Port In Use " + e);
#
}
#
try {
#
outputStream = serialPort.getOutputStream();
#
} catch (IOException e) {
#
System.out.println("Error writing to output stream " + e);
#
}
#
try {
#
serialPort.setSerialPortParams(38400, SerialPort.DATABITS_7, SerialPort.STOPBITS_2, SerialPort.PARITY_EVEN);
#
} catch (UnsupportedCommOperationException e) {
#
}
#
try {
#
outputStream.write(line1.getBytes());
#
outputStream.write(line2.getBytes());
#
outputStream.write(line2.getBytes());
#
 
#
} catch (IOException e) {
#
System.out.println("Error writing message " + e);
#
}
#
}
#
} catch (UnsupportedEncodingException ex) {
#
Logger.getLogger(RFIDTest.class.getName()).log(Level.SEVERE, null, ex);
#
}



Code in VB
VB
Private Sub Form_Load()
    CommCtrl.Settings = Brate & "," & Ptype & "," & DataBit & "," & StopBit
    CommCtrl.CommPort = PortNum
    
    CommCtrl.PortOpen = True
    SendData ("00ST")
    RecvData
    ClerData

End Sub

Private Sub Form_Load()
    CommCtrl.Settings = Brate & "," & Ptype & "," & DataBit & "," & StopBit
    CommCtrl.CommPort = PortNum
    
    CommCtrl.PortOpen = True
    SendData ("00ST")
    RecvData
    ClerData

End Sub

Private Sub Form_Unload(Cancel As Integer)
    SendData ("00ST")
    RecvData
    CommCtrl.PortOpen = False

End Sub

Public Function BCC(command) As String
    Dim LRC As Integer
    Dim i As Integer
    
    If (LenB(command) > 0) Then
        For i = 1 To LenB(StrConv(command, vbFromUnicode))
            LRC = LRC Xor AscB(MidB(StrConv(command, vbFromUnicode), i, 1))
        Next i
    End If
    BCC = Chr(LRC)
    
End Function

Public Function SendData(sData As String)
    CommCtrl.Output = Chr(2) & sData & Chr(3) & BCC(sData & Chr(3))
    
End Function

Public Function RecvData() As String
    Dim lcnt As Integer
    Dim indat As String
    Dim sts As Byte
    
    RecvData = ""
    lcnt = 0
    sts = 0
    Wait (25)
    Do
        Dim Dummy As Integer
        Dummy = DoEvents()
        If CommCtrl.InBufferCount <> 0 Then
            lcnt = 0
            indat = CommCtrl.Input
            Select Case sts
            Case 0
                If indat = Chr(2) Then
                    RecvData = ""       'ŽóMƒoƒbƒtƒ@‰Šú‰»
                    sts = 1
                End If
            Case 1
                If indat = Chr(3) Then
                    sts = 2
                Else
                    RecvData = RecvData + indat
                End If
            Case Else
                sts = 0
                If BCC(RecvData & Chr(3)) = indat Then
                    Exit Do
                End If
            End Select
        Else
            
            lcnt = lcnt + 1
            If lcnt > 200 Then      '200‰ñƒ‹[ƒv‚µ‚½‚çI—¹
                RecvData = "--"
                Exit Do
                'End Function
            End If
        End If
    Loop
    
End Function
Posted
Updated 11-Feb-10 5:23am
v2

1 solution

zeropulse wrote:
I have manage to connect to the RFID equipment through com port but when i send the messages, the error light blinks and some jumbled up reply came back.


I don't have any experience of this device but what you describe suggests a possible problem in the line settings. You are setting the line to 7E2; are you sure these values are correct? My experience of COM devices on PCs is that most operate best at 8N1. One way to check it out would be to use a simple terminal program like HyperTerm where you can capture the data in and out.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900