Я пытаюсь прочитать UID RFID и отправить его Netbeans, но когда я пытаюсь отобразить String, он отображает только последний бит. , например, когда я сканировал RFID, UID - C945AA2A, но при отображении на текстовом поле он показывает только 2A или иногда только A. что я должен сделать, чтобы отобразить полный uid в текстовом поле? и я хочу, чтобы Arduino посылать данные один раз и не будет посылать что-нибудь, даже если новый RFID сканируетсяsetText() display and serial communication (jSSC)
здесь является Arduino Код:
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9 // Configurable, see typical pin layout above
#define SS_PIN 10 // Configurable, see typical pin layout above
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance
void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522
//mfrc522.PCD_DumpVersionToSerial(); // Show details of PCD - MFRC522 Card Reader details
//Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks..."));
}
void loop() {
// Look for new cards
String code = "";
if (! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Select one of the cards
if (! mfrc522.PICC_ReadCardSerial()) {
return;
}
for (byte i = 0; i < mfrc522.uid.size; i++) {
code += String(mfrc522.uid.uidByte[i] < 0x10 ? "0" :"");
code += String(mfrc522.uid.uidByte[i], HEX);
}
code.toUpperCase();
Serial.println(code);
mfrc522.PICC_HaltA();
}
и вот код Netbeans:
public void detectPort(){
String ports = getPortNames();
SerialPort sPort = new SerialPort(ports);
try{
sPort.openPort();
sPort.setParams(SerialPort.BAUDRATE_9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
sPort.setEventsMask(MASK_RXCHAR);
sPort.addEventListener((SerialPortEvent serialPortEvent) -> {
if(serialPortEvent.isRXCHAR()){
try{
String st = sPort.readString();
jTextField1.setText(st);
jLabel2.setText(st);
}catch(SerialPortException ex){
Logger.getLogger(SerialTest.class.getName())
.log(Level.SEVERE, null, ex);
}
}
});
}catch(Exception e){
System.out.print(e);
}
}
public String getPortNames(){
String defport = "";
String[] ports = SerialPortList.getPortNames();
for(String name: ports){
for(int i = 0; i < ports.length; i++){
jLabel1.setText(ports[i]);
defport = ports[i];
}
}
return defport;
}
это сработало, спасибо – Xue