Как сохранить номер RFID-метки в строке
ethernet
cpp
Я хочу отправить номер RFID-метки на страницу PHP. До сих пор я отправлял фиксированную строку на php, и это работало, теперь я не получаю данные в строке, когда сканирую RFID-метку. Я хочу сохранить каждый номер RFID-метки в строке при ее сканировании, чтобы я мог отправить его на страницу PHP.
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);
}
Это путь к странице php
String method = "GET /ethernet/data.php?rfid_uid=";
@Salman Mahmood, 👍0
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();
}
В этом коде есть несколько проблем:
- переменная
rfid_uid
определена дважды, они затмевают друг друга. Внутренняя часть только присваивает значениеrfid_uid
, указанному внутри оператораif
, внешнийrfid_uid
останется пустым - Как вы можете видеть с помощью
Serial.print(rfid.serNum[i], HEX);
, элементrfid.serNum[i]
является целым числом, которое печатается как шестнадцатеричное. (например, 123 =7B
), вrfid_uid = rfid.serNum[i];
вы, однако, назначаете прямое числовое значение, не преобразуя его в шестнадцатеричное
Если вам нужен серийный номер в виде 4-байтовой шестнадцатеричной строки, попробуйте сделать следующее:
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();
}
//остальное как прежде
Это должно создать объект String
из целого числа в формате HEX
и добавить его (используя оператор +=
к строке rfid_uid
). Таким образом, после 4 итераций значение String
будет создано и может быть использовано в запросе.
,
@Maximilian Gerhardt
▲ 0
не используйте строку
char url[64];
sprintf(url, "GET /ethernet/data.php?rfid_uid=%02x%02x%02x%02x", rfid[0], rfid[1], rfid[2], rfid[3]);
,
@Juraj
Смотрите также:
- Как получить HTTPS на Arduino?
- Клиент MQTT на Arduino + SIM900
- Arduino Ethernet Shield при использовании контактов Arduino Mega
- Ethernet nodemcu
- Удаленная загрузка кода на плату Arduino через интернет
- Экран Ethernet не получает IP
- Где я могу найти лучшую схему выводов для платы «Arduino Ethernet»?
- Ошибка 'Serial' was not declared in this scope