Communicating with a UHF RFID Reader (Cottonwood UART)

Hi, I am working on a project using a UHF RFID Reader and an Arduino UNO.

Reader : https://store.linksprite.com/cottonwood-long-range-uhf-rfid-reader-uart-iso18000-6c-epc-g2/
Antenna : 5dBi PCB UHF RFID 902-928M Antenna 5cm x 5cm
Tag : http://store.linksprite.com/uhf-rfid-tag-for-flex-surface-tape-on-back-epc-gen2-900mhz/

So I want to communicate with the reader thought the Arduino UNO to read the tags and then use conditions like : if (TagID == X)… Serial.print(“Hello George”) / if (TagID == Y)… etc.

But first of all I have problems to get the real Tag ID with the Arduino.
With the same tag, I don’t always have the same id read. It’s similar, but not the same…
For example :
1°/ CE 1 B8 2 1 15 51 17 70 91 A2 40
2°/ 2 1 15 51 17 70 91 A2 40 55 A0 96
3°/ CE 0 B8 2 1 15 51 17 70 91 A8 D1
4°/ 12 4C 9 45 5D 70 91 1 0 A2 40 13
5°/ CE 99 0 B8 2 1 15 51 17 70 91 A2

Here is my code: (from https://www.soliddepot.com/forum/viewtopic.php?f=22&t=40335#p47710)

unsigned int status = 0;
unsigned char val,RSSI,I,Q;
unsigned int num=1;
unsigned char Tag_num;
unsigned int flag=0;
unsigned char SCMD = {0x43,0x03,0x01};
unsigned char Rcard[12];
unsigned char Freq[3];
int IdString[13];
int i;

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2,3);

void scanwithRSSI(void)
{
//delay(10);
while(mySerial.available() > 0) {
val = mySerial.read();

switch(status) {
case 0: // parse 0x44
if (val == 0x44)
{status = 1; /Serial.write(val);/}
break;
case 1: //parse 0x16
if (val == 0x16)
{status = 2; /Serial.write(val);/}
else if (val == 0x05)
//{Serial.print(“No Tag”); }
{status = 22; /Serial.write(val);/}
break;
case 2:
if (val > 0)
{status = 3; Tag_num = val; /Serial.write(val);/}
break;
case 3:
RSSI = val;
//I = (val&0x0F)*2; Q = (val>>4)*2;
//Serial.write(val);
//Serial.print(RSSI);
status = 4;
break;
case 4:
case 5:
case 6:
Freq[status - 4] = val;
status ++;
//Serial.write(val);
break;
case 7:
if (val == 0x0E)
{status = 8; /Serial.write(val);/}
break;
case 8:
if (val == 0x30)
{
status = 9; /Serial.write(val);/
}
break;
case 9:
if (val == 0x00)
{status = 10; /Serial.write(val);/}
break;
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
case 21:
Rcard[status - 10] = val;
if (status == 10) {Serial.print(num); Serial.print(’;’); Serial.print(’ ‘);}
status ++;
//Serial.write(val);
Serial.print(val,HEX);
Serial.print(’ ‘);
IdString[a] = val;
Serial.print("(");
Serial.print(IdString[a]);
Serial.print(")");
Serial.print(’ ‘);
a++;
if (status == 22)
{ status = 0; num++;
Serial.println(’ ');
if (Tag_num == 1)
num=1;
}
break;

case 22:
if (val == 0x00) {status = 23; /Serial.write(val);/}
break;
case 23:
if (val == 0x00) {status = 24; /Serial.write(val);/}
break;
case 24:
if (val == 0x00) {status = 0; /Serial.write(val);/
Serial.println(“No Tag”);
}
break;
default:
break;
}
}
}

void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
mySerial.write(SCMD,3);
}

void loop()
{
// if (status == 0)
// mySerial.write(SCMD,3);
scanwithRSSI();

//delay(1000);
mySerial.write(SCMD,3);
}

Pin 2 of Arduino UNO is connected to Cottonwood’s TX.
Pin 3 of Arduino UNO is connected to Cottonwood’s RX.
GND of Arduino UNO is connected to Cottonwood’s GND[pre][left][pre][/left][/pre][/pre]

High speed USB or TTL Uart (RS232) communicate with PC applications

I don't think they know what they are talking about. TTL and RS232 are not the same voltage levels OR meaning of 0s and 1s.

Before you fry your Arduino, you need to know what the voltage level on the TX pin is, when it is transmitting.