2017-02-21 8 views
1

RFIDのUIDを読み取り、Netbeansに送信しようとしていますが、文字列を表示しようとすると、最後のビットだけが表示されます。 たとえば、私がRFIDをスキャンしたとき、UIDはC945AA2Aですが、テキストフィールドに表示されたときには2Aまたは時にはAのみを表示します。テキストフィールドに完全なuidを表示するにはどうすればよいですか?setText()表示とシリアル通信(jSSC)

#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;     
} 
と私はここでArduinoのコードであるArduinoのは、一度データを送信すると、新しいRFIDが

をスキャンした場合であっても、何も送信しません

jTextField1.setText(st); 

代わりのテキストを設定し、あなたがトンに追加することもできます。私はあなたの問題がでていると思います

答えて

1

彼は存在するテキスト。

jTextField1.setText(jTextField1.getText()+st); 
+0

ありがとうございます – Xue