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);
代わりのテキストを設定し、あなたがトンに追加することもできます。私はあなたの問題がでていると思います
ありがとうございます – Xue