2015-01-31 7 views
-1

두 개의 rfid 리더 (RDM 630)를 Arduino Mega 2560에서 실행하려고합니다. 한 명의 독자 만 읽고 다른 한 명은 읽지 않는 이유를 알 수 없습니다 습관. (독자는 모두 기능적입니다.)두 명의 RFID 리더와 ARDUINO MEGA, 한 명의 독자 만 읽음

#include <SoftwareSerial.h> 
SoftwareSerial Reader1(50, 51); 
SoftwareSerial Reader2(52, 53);// RX and TX 

int rfid, i; 
char newtag[14]; 

void setup() 
{ 
    Reader1.begin(9600); // start serial to RFID reader 
    Reader2.begin(9600); 
    Serial.begin(9600); // start serial to PC 
} 

void loop() 
{ 

    if (Reader1.available() > 0) 
    { 
    Serial.println(); 
    Serial.println(); 
    Serial.println("Reading RFID Tag..."); 
    delay(100); 

    for (i=0; i < 13; i++) 
     { 
      rfid = Reader1.read(); 
      newtag[i]=rfid; 
     } 
    Reader1.flush(); 
    Serial.print("RFID Tag No:"); 
    Serial.print(newtag); 

    } 

    if (Reader2.available() > 0) 
    { 
    Serial.println(); 
    Serial.println(); 
    Serial.println("Reading RFID Tag..."); 
    delay(100); 

    for (i=0; i < 13; i++) 
     { 
      rfid = Reader2.read(); 
      newtag[i]=rfid; 
     } 
    Reader2.flush(); 
    Serial.print("RFID Tag No:"); 
    Serial.print(newtag); 

    } 
} 

답변

0

SofwareSerial은 공유 리소스를 가지고 있으므로 구현에 대해 조금 더 생각해야합니다. 장치를 초기화 할 때 청취 장치입니다. 다른 장치를 초기화하면 청취 장치가 변경됩니다. 다음을 입력해야합니다.

Reader1.listen(); 

Reader1 코드를 작성하기 전에 Reader2 코드를 다시 전환하십시오. 코드 예 : http://arduino.cc/en/Tutorial/TwoPortReceive

그러나 당신은 메가가 있다고 말합니다. 선상에있는 여러 개의 연재물을 왜 사용하지 않습니까? 코드베이스가 작아지고 코딩이 더 깨끗합니다. http://arduino.cc/en/Tutorial/MultiSerialMega

+0

정말 고마워요 !! – Dayz

+0

문제 없습니다. 그것으로 재미있게 지내십시오! – djUniversal

+0

에는 여전히 문제가 있습니다. 태그를 스 와이프 할 때마다 직렬 모니터에 태그가 표시되고 다른 'yyyyyyyyy'가 표시됩니다. 코드에 문제가 있습니까? ** 시리얼 모니터 : ** '읽기 RFID 태그 ... RFID 태그 번호 : 76002C409389 읽기 RFID 태그 ... RFID 태그 번호 : 읽기 RFID 태그 ÿÿÿÿÿÿÿÿÿÿÿÿ ... RFID 태그 번호 : 76002C408D97 RFID 태그 읽는 중 ... RFID 태그 번호 : ÿÿÿÿÿÿÿÿÿÿ – Dayz