0

I want to send RFID tag number to PHP page. So far I have sent a fixed string to php and it worked, now I am not getting data in string when i scan rfid tag. I want to store every RFID tag number in a string when it is scanned, so that I can send it to php page.

if (rfid.isCard()) { String rfid_uid = ""; if (rfid.readCardSerial()) { String rfid_uid = ""; for (int i = 0; i < 4; i++) { Serial.print(rfid.serNum[i], HEX); rfid_uid = rfid.serNum[i]; } Serial.println(); } //delay(7000); Serial.print("User ID \n"); Serial.println(rfid_uid); make_request(rfid_uid); } 

This is the path to php page

 String method = "GET /ethernet/data.php?rfid_uid="; 

2 Answers 2

2
String rfid_uid = ""; if (rfid.readCardSerial()) { String rfid_uid = ""; for (int i = 0; i < 4; i++) { Serial.print(rfid.serNum[i], HEX); rfid_uid = rfid.serNum[i]; } Serial.println(); } 

This code has multiple problems:

  • the variable rfid_uid is defined twice, they are overshadowing each other. The inner part only assigns a value to the rfid_uid delcared in the inside of the if statement, the outer rfid_uid will remain empty
  • As you can see with Serial.print(rfid.serNum[i], HEX);, the element rfid.serNum[i] is an integer, which is printed as hex. (e.g. 123 = 7B), in rfid_uid = rfid.serNum[i]; you however assign the direct numerical value, without converting it to hex

You can try the following, if you want the serial number as a 4 byte hex string:

String rfid_uid = ""; if (rfid.readCardSerial()) { for (int i = 0; i < 4; i++) { String uid_part = String(rfid.serNum[i], HEX); Serial.print(uid_part); rfid_uid += uid_part; } Serial.println(); } //rest as before 

This should construct a String object from the integer in HEX format and append (using the += operator it to the rfid_uid string). Thus, after 4 iterations, the String value is built up and can be used in the request.

1
0

do not use String

char url[64]; sprintf(url, "GET /ethernet/data.php?rfid_uid=%02x%02x%02x%02x", rfid[0], rfid[1], rfid[2], rfid[3]); 

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.