TRACE、LoRaWan868、UHF

This commit is contained in:
Tinyu
2021-09-01 10:25:22 +08:00
parent 8c8085597c
commit 1069e4da1b
7 changed files with 271 additions and 462 deletions
+152 -152
View File
@@ -20,107 +20,107 @@ M5Canvas canvas(&display);
String waitRevice()
{
String recvStr;
do
{
recvStr = Serial2.readStringUntil('\n');
} while (recvStr.length() == 0);
canvas.println(recvStr);
return recvStr;
String recvStr;
do
{
recvStr = Serial2.readStringUntil('\n');
} while (recvStr.length() == 0);
canvas.println(recvStr);
return recvStr;
}
uint16_t ypos = 55;
void drawLineStr(String str, uint16_t color)
{
M5.Lcd.setTextColor(color);
M5.Lcd.drawString(str, 10, ypos, 4);
ypos += 32;
M5.Lcd.setTextColor(color);
M5.Lcd.drawString(str, 10, ypos, 4);
ypos += 32;
}
void sendATCMD(String cmdStr)
{
Serial2.print(cmdStr);
delay(100);
Serial2.print(cmdStr);
delay(100);
}
int sendATCMDAndRevice(String cmdStr)
{
Serial2.print(cmdStr);
delay(10);
waitRevice();
String recvStr = waitRevice();
if (recvStr.indexOf("OK") != -1)
{
return 0;
}
else
{
return -1;
}
Serial2.print(cmdStr);
delay(10);
waitRevice();
String recvStr = waitRevice();
if (recvStr.indexOf("OK") != -1)
{
return 0;
}
else
{
return -1;
}
}
void setup()
{
M5.begin();
Serial2.begin(115200, SERIAL_8N1, 16, 17);
Serial2.flush();
delay(100);
display.begin();
display.setTextSize(2);
canvas.setColorDepth(1); // mono color
canvas.createSprite(display.width(), display.height());
canvas.setTextSize((float)canvas.width() / 160);
canvas.setTextScroll(true);
M5.begin();
Serial2.begin(115200, SERIAL_8N1, 16, 17);
Serial2.flush();
delay(100);
display.begin();
display.setTextSize(2);
canvas.setColorDepth(1); // mono color
canvas.createSprite(display.width(), display.height());
canvas.setTextSize((float)canvas.width() / 160);
canvas.setTextScroll(true);
sendATCMD("AT?\r");
delay(100);
Serial2.flush();
sendATCMDAndRevice("AT+ILOGLVL=0\r");
sendATCMDAndRevice("AT+CSAVE\r");
sendATCMDAndRevice("AT+IREBOOT=0\r");
display.println("LoraWan Rebooting");
delay(2000);
display.println("LoraWan config");
sendATCMDAndRevice("AT+CJOINMODE=0\r");
sendATCMDAndRevice("AT+CDEVEUI=00BB9DA5B97ADDF6\r");
sendATCMDAndRevice("AT+CAPPEUI=70B3D57ED004247E\r");//70B3D57ED003B699
sendATCMDAndRevice("AT+CAPPKEY=27DFE264CA33AC1957C005EB48BA4723\r");
sendATCMDAndRevice("AT+CULDLMODE=2\r");
sendATCMDAndRevice("AT+CCLASS=2\r");
sendATCMDAndRevice("AT+CWORKMODE=2\r");
sendATCMDAndRevice("AT+CNBTRIALS=0,5\r");
sendATCMDAndRevice("AT+CNBTRIALS=1,5\r");
sendATCMD("AT?\r");
delay(100);
Serial2.flush();
sendATCMDAndRevice("AT+ILOGLVL=0\r");
sendATCMDAndRevice("AT+CSAVE\r");
sendATCMDAndRevice("AT+IREBOOT=0\r");
display.println("LoraWan Rebooting");
delay(2000);
display.println("LoraWan config");
sendATCMDAndRevice("AT+CJOINMODE=0\r");
sendATCMDAndRevice("AT+CDEVEUI=00BB9DA5B97ADDF6\r");
sendATCMDAndRevice("AT+CAPPEUI=70B3D57ED004247E\r");//70B3D57ED003B699
sendATCMDAndRevice("AT+CAPPKEY=27DFE264CA33AC1957C005EB48BA4723\r");
sendATCMDAndRevice("AT+CULDLMODE=2\r");
sendATCMDAndRevice("AT+CCLASS=2\r");
sendATCMDAndRevice("AT+CWORKMODE=2\r");
sendATCMDAndRevice("AT+CNBTRIALS=0,5\r");
sendATCMDAndRevice("AT+CNBTRIALS=1,5\r");
// TX Freq
// 868.1 - SF7BW125 to SF12BW125
// 868.3 - SF7BW125 to SF12BW125 and SF7BW250
// 868.5 - SF7BW125 to SF12BW125
// 867.1 - SF7BW125 to SF12BW125
// 867.3 - SF7BW125 to SF12BW125
// 867.5 - SF7BW125 to SF12BW125
// 867.7 - SF7BW125 to SF12BW125
// 867.9 - SF7BW125 to SF12BW125
// 868.8 - FSK
// TX Freq
// 868.1 - SF7BW125 to SF12BW125
// 868.3 - SF7BW125 to SF12BW125 and SF7BW250
// 868.5 - SF7BW125 to SF12BW125
// 867.1 - SF7BW125 to SF12BW125
// 867.3 - SF7BW125 to SF12BW125
// 867.5 - SF7BW125 to SF12BW125
// 867.7 - SF7BW125 to SF12BW125
// 867.9 - SF7BW125 to SF12BW125
// 868.8 - FSK
sendATCMDAndRevice("AT+CFREQBANDMASK=0001\r");
sendATCMDAndRevice("AT+CFREQBANDMASK=0001\r");
//869.525 - SF9BW125 (RX2) | 869525000
//sendATCMDAndRevice("AT+CRXP=0,0,869525000\r");
//869.525 - SF9BW125 (RX2) | 869525000
//sendATCMDAndRevice("AT+CRXP=0,0,869525000\r");
sendATCMDAndRevice("AT+CSAVE\r");
sendATCMDAndRevice("AT+CJOIN=1,0,10,8\r");
sendATCMDAndRevice("AT+CSAVE\r");
sendATCMDAndRevice("AT+CJOIN=1,0,10,8\r");
}
enum systemstate
{
kIdel = 0,
kJoined,
kSending,
kWaitSend,
kEnd,
kIdel = 0,
kJoined,
kSending,
kWaitSend,
kEnd,
};
int system_fsm = kIdel;
@@ -131,93 +131,93 @@ int loraWanupLinkReviceCNT = 0;
void loop()
{
String recvStr = waitRevice();
if (recvStr.indexOf("+CJOIN:") != -1)
String recvStr = waitRevice();
if (recvStr.indexOf("+CJOIN:") != -1)
{
if (recvStr.indexOf("OK") != -1)
{
if (recvStr.indexOf("OK") != -1)
{
canvas.println("[ INFO ] JOIN IN SUCCESSFUL");
system_fsm = kJoined;
}
else
{
canvas.println("[ INFO ] JOIN IN FAIL");
system_fsm = kIdel;
}
canvas.println("[ INFO ] JOIN IN SUCCESSFUL");
system_fsm = kJoined;
}
else if (recvStr.indexOf("OK+RECV") != -1)
else
{
if (system_fsm == kJoined)
{
system_fsm = kSending;
}
else if (system_fsm == kWaitSend)
{
system_fsm = kEnd;
char strbuff[128];
loraWanupLinkReviceCNT ++;
//if(( loraWanSendCNT < 5 )&&( loraWanSendNUM == 8 ))
//{
// loraWanupLinkReviceCNT ++;
// sprintf(strbuff,"SEND CNT: %d (%d/%d)",loraWanSendCNT,loraWanupLinkReviceCNT,loraWanupLinkCNT);
// M5.Lcd.fillRect(0,183,320,32,TFT_BLACK);
// M5.Lcd.setTextColor(TFT_GREEN);
// M5.Lcd.drawString(strbuff, 10, 183, 4);
// //drawLineStr(strbuff, TFT_GREEN);
//
//}
//else
//{
// sprintf(strbuff,"FAILD NUM:%d CNT:%d (%d/%d)",loraWanSendNUM,loraWanSendCNT,loraWanupLinkReviceCNT,loraWanupLinkCNT);
// M5.Lcd.fillRect(0,183,320,32,TFT_BLACK);
// M5.Lcd.setTextColor(TFT_RED);
// M5.Lcd.drawString(strbuff, 10, 183, 4);
// drawLineStr(strbuff, TFT_RED);
//}
delay(500);
system_fsm = kSending;
}
canvas.println("[ INFO ] JOIN IN FAIL");
system_fsm = kIdel;
}
else if(recvStr.indexOf("OK+SEND") != -1)
}
else if (recvStr.indexOf("OK+RECV") != -1)
{
if (system_fsm == kJoined)
{
String snednum = recvStr.substring(8);
canvas.printf(" [ INFO ] SEND NUM %s \r\n",snednum.c_str());
loraWanSendNUM = snednum.toInt();
}
else if(recvStr.indexOf("OK+SENT") != -1)
{
String snedcnt = recvStr.substring(8);
canvas.printf(" [ INFO ] SEND CNT %s \r\n",snedcnt.c_str());
loraWanSendCNT = snedcnt.toInt();
}
else if(recvStr.indexOf("ERR+SENT") != -1)
{
char strbuff[128];
String ErrorCodeStr = recvStr.substring(9);
sprintf(strbuff,"ERROR Code:%d (%d/%d)",ErrorCodeStr.toInt(),loraWanupLinkReviceCNT,loraWanupLinkCNT);
canvas.println(strbuff);
delay(500);
system_fsm = kSending;
}
else if(recvStr.indexOf("+CLINKCHECK:") != -1)
else if (system_fsm == kWaitSend)
{
String checkStr = recvStr.substring(String("+CLINKCHECK:").length());
char strbuff[128];
sprintf(strbuff,"%s (%d/%d)",checkStr.c_str(),loraWanupLinkReviceCNT,loraWanupLinkCNT);
canvas.println(strbuff);
system_fsm = kEnd;
char strbuff[128];
loraWanupLinkReviceCNT ++;
//if(( loraWanSendCNT < 5 )&&( loraWanSendNUM == 8 ))
//{
// loraWanupLinkReviceCNT ++;
// sprintf(strbuff,"SEND CNT: %d (%d/%d)",loraWanSendCNT,loraWanupLinkReviceCNT,loraWanupLinkCNT);
// M5.Lcd.fillRect(0,183,320,32,TFT_BLACK);
// M5.Lcd.setTextColor(TFT_GREEN);
// M5.Lcd.drawString(strbuff, 10, 183, 4);
// //drawLineStr(strbuff, TFT_GREEN);
//
//}
//else
//{
// sprintf(strbuff,"FAILD NUM:%d CNT:%d (%d/%d)",loraWanSendNUM,loraWanSendCNT,loraWanupLinkReviceCNT,loraWanupLinkCNT);
// M5.Lcd.fillRect(0,183,320,32,TFT_BLACK);
// M5.Lcd.setTextColor(TFT_RED);
// M5.Lcd.drawString(strbuff, 10, 183, 4);
// drawLineStr(strbuff, TFT_RED);
//}
delay(500);
system_fsm = kSending;
}
}
else if(recvStr.indexOf("OK+SEND") != -1)
{
String snednum = recvStr.substring(8);
canvas.printf(" [ INFO ] SEND NUM %s \r\n",snednum.c_str());
loraWanSendNUM = snednum.toInt();
}
else if(recvStr.indexOf("OK+SENT") != -1)
{
String snedcnt = recvStr.substring(8);
canvas.printf(" [ INFO ] SEND CNT %s \r\n",snedcnt.c_str());
loraWanSendCNT = snedcnt.toInt();
}
else if(recvStr.indexOf("ERR+SENT") != -1)
{
char strbuff[128];
String ErrorCodeStr = recvStr.substring(9);
sprintf(strbuff,"ERROR Code:%d (%d/%d)",ErrorCodeStr.toInt(),loraWanupLinkReviceCNT,loraWanupLinkCNT);
canvas.println(strbuff);
delay(500);
if (system_fsm == kSending)
{
canvas.println("LoraWan Sending");
sendATCMD("AT+CLINKCHECK=1\r");
loraWanupLinkCNT ++;
system_fsm = kWaitSend;
}
canvas.pushSprite(0, 0);
delay(10);
}
system_fsm = kSending;
}
else if(recvStr.indexOf("+CLINKCHECK:") != -1)
{
String checkStr = recvStr.substring(String("+CLINKCHECK:").length());
char strbuff[128];
sprintf(strbuff,"%s (%d/%d)",checkStr.c_str(),loraWanupLinkReviceCNT,loraWanupLinkCNT);
canvas.println(strbuff);
}
if (system_fsm == kSending)
{
canvas.println("LoraWan Sending");
sendATCMD("AT+CLINKCHECK=1\r");
loraWanupLinkCNT ++;
system_fsm = kWaitSend;
}
canvas.pushSprite(0, 0);
delay(10);
}
+49 -38
View File
@@ -1,5 +1,16 @@
/*
Description: Read the status of the four line-tracking sensors of TRACE Unit and output them through UART.
*******************************************************************************
* Copyright (c) 2021 by M5Stack
* Equipped with M5Core sample source code
* 配套 M5Core 示例源代码
* Visit the website for more informationhttps://docs.m5stack.com/en/unit/trace
* 获取更多资料请访问:https://docs.m5stack.com/zh_CN/unit/trace
*
* describe: TRACE.
* date2021/9/1
*******************************************************************************
Please connect to PORT-A, Read the status of the four line-tracking sensors of TRACE Unit and output them through UART.
请连接端口A,读取TRACE Unit四个线跟踪传感器的状态,并通过UART输出。
*/
#include <M5Stack.h>
@@ -9,44 +20,44 @@
uint8_t value;
int SensorArray[4] = {0};
void setup() {
m5.begin();
M5.Power.begin();
void SensorStatus(void){
Wire.beginTransmission(0x5a); //The data transfer to 0x5A begins. 开始向0x5a传输数据
Wire.write(0x00);
Wire.endTransmission(); //End the data transmission.结束数据传输
Wire.requestFrom(0x5a,1); //Request a byte from 0x5a. 向0x5a请求一个字节
while(Wire.available()){ //If data is received. 如果数据被接收到
value = Wire.read();
}
M5.Lcd.print(" value = ");
M5.Lcd.println(value, HEX);
#ifdef VALUE_SPLIT
SensorArray[3] = (value&0x08)>>3;
SensorArray[2] = (value&0x04)>>2;
SensorArray[1] = (value&0x02)>>1;
SensorArray[0] = (value&0x01)>>0;
M5.Lcd.println(" After splitting... ");
M5.Lcd.print(" SensorArray[0] = "); M5.Lcd.println(SensorArray[0]);
M5.Lcd.print(" SensorArray[1] = "); M5.Lcd.println(SensorArray[1]);
M5.Lcd.print(" SensorArray[2] = "); M5.Lcd.println(SensorArray[2]);
M5.Lcd.print(" SensorArray[3] = "); M5.Lcd.println(SensorArray[3]);
#endif
}
Serial.begin(115200);
Wire.begin();
M5.Lcd.clear(BLACK);
M5.Lcd.setTextColor(YELLOW);
M5.Lcd.setTextSize(2);
M5.Lcd.setCursor(80, 0);
M5.Lcd.println("TRACE example");
M5.Lcd.setTextColor(WHITE);
void setup() {
M5.begin();
M5.Power.begin();
Wire.begin();
M5.Lcd.setTextColor(YELLOW);
M5.Lcd.setTextSize(2);
M5.Lcd.setCursor(80, 0);
M5.Lcd.println("TRACE example");
M5.Lcd.setTextColor(WHITE);
}
void loop(){
SensorStatus();
delay(100);
}
void SensorStatus(void){
Wire.beginTransmission(0x5a);
Wire.write(0x00);
Wire.endTransmission();
Wire.requestFrom(0x5a,1);
while(Wire.available()){
value = Wire.read();
}
Serial.print(" value = ");Serial.println(value, HEX);
#ifdef VALUE_SPLIT
SensorArray[3] = (value&0x08)>>3;
SensorArray[2] = (value&0x04)>>2;
SensorArray[1] = (value&0x02)>>1;
SensorArray[0] = (value&0x01)>>0;
Serial.println("After splitting... ");
Serial.print("SensorArray[0] = ");Serial.print(SensorArray[0]);
Serial.print(" SensorArray[1] = ");Serial.print(SensorArray[1]);
Serial.print(" SensorArray[2] = ");Serial.print(SensorArray[2]);
Serial.print(" SensorArray[3] = ");Serial.print(SensorArray[3]);
Serial.println();
#endif
}
M5.Lcd.fillRect(0,20,320,180,BLACK);
M5.Lcd.setCursor(100,70);
SensorStatus();
delay(100);
}
@@ -1,4 +1,4 @@
#include <M5Stack.h>
#include <Arduino.h>
#include "RFID_command.h"
#include <string>
@@ -1,4 +1,4 @@
#include <M5Stack.h>
#include <Arduino.h>
#include "RFID_command.h"
#include <string>
@@ -1,162 +0,0 @@
#include "TFTTerminal.h"
TFTTerminal::TFTTerminal(TFT_eSprite *dis_buff_ptr)
{
_dis_buff_ptr = dis_buff_ptr;
memset(discharbuff, 0, 55 * 60);
}
TFTTerminal::~TFTTerminal()
{
}
void TFTTerminal::setcolor( uint16_t color, uint16_t bk_color )
{
_color = color;
_bkcolor = bk_color;
}
void TFTTerminal::setGeometry(uint16_t x, uint16_t y, uint16_t w, uint16_t h )
{
_win_x_pos = x;
_win_y_pos = y;
_win_w = w;
_win_h = h;
_line_x_limit = _win_w / _font_x_size;
_line_y_limit = _win_h / _font_y_size;
}
void TFTTerminal::setFontsize(uint8_t size)
{
size = ( size == 0 ) ? 1 : size;
_font_x_size = 5 * size ;
_font_y_size = 6 * size ;
_fontSize = size;
_line_x_limit = _win_w / _font_x_size;
_line_y_limit = _win_h / _font_y_size;
}
size_t TFTTerminal::write(uint8_t chardata)
{
bool flush_page_flag = false;
uint8_t dis_y_pos = 0;
if ((chardata == '\r') || (chardata == '\n'))
{
xpos = 0;
ypos++;
ypos = ypos % 60;
memset(discharbuff[ypos % 60], 0, 55);
return 1;
}
else if(xpos >= _line_x_limit)
{
xpos = 0;
ypos++;
ypos = ypos % 60;
memset(discharbuff[ypos % 60], 0, 55);
}
discharbuff[ypos][xpos] = chardata;
xpos++;
if ((dispos <= ypos) && ((ypos - dispos) > _line_y_limit))
{
dispos = ypos - _line_y_limit;
flush_page_flag = true;
}
else if ((dispos <= ypos) && ((ypos - dispos) <= _line_y_limit))
{
dis_y_pos = ypos - dispos;
flush_page_flag = false;
}
else if ((dispos > ypos) && ((60 - (dispos - ypos)) > _line_y_limit))
{
dispos = 60 - ( _line_y_limit - ypos );
flush_page_flag = true;
}
else if ((dispos > ypos) && ((60 - (dispos - ypos)) > _line_y_limit))
{
dis_y_pos = 60 - ( dispos - ypos );
flush_page_flag = false;
}
dispos = dispos % 60;
_dis_buff_ptr->setTextColor(_color);
_dis_buff_ptr->setTextSize(_fontSize);
if( flush_page_flag )
{
_dis_buff_ptr->fillSprite(_bkcolor);
for (size_t i = 0; i < _line_y_limit; i++)
{
_dis_buff_ptr->drawString((char *)discharbuff[(dispos + i) % 60], 0, i * _font_y_size);
}
}
else
{
_dis_buff_ptr->drawChar(chardata, ( xpos - 1 ) * _font_x_size, dis_y_pos * _font_y_size );
}
_dis_buff_ptr->pushSprite(_win_x_pos, _win_y_pos);
return 1;
}
size_t TFTTerminal::write(const uint8_t *buffer, size_t size)
{
while ((size != 0) && (*buffer != '\0'))
{
if ((*buffer == '\r') || (*buffer == '\n'))
{
xpos = 0;
ypos++;
ypos = ypos % 60;
memset(discharbuff[ypos % 60], 0, 55);
buffer++;
size--;
continue;
}
else if(xpos >= _line_x_limit)
{
xpos = 0;
ypos++;
ypos = ypos % 60;
memset(discharbuff[ypos % 60], 0, 55);
}
discharbuff[ypos][xpos] = *buffer;
xpos++;
buffer++;
size--;
}
if ((dispos <= ypos) && ((ypos - dispos) > _line_y_limit))
{
dispos = ypos - _line_y_limit;
}
else if ((dispos > ypos) && ((60 - (dispos - ypos)) > _line_y_limit))
{
dispos = 60- ( _line_y_limit - ypos );
}
dispos = dispos % 60;
_dis_buff_ptr->setTextColor(_color);
_dis_buff_ptr->setTextSize(_fontSize);
_dis_buff_ptr->fillSprite(_bkcolor);
//_dis_buff_ptr->fillRect(_win_x_pos, _win_y_pos, _win_w, _win_h, _bkcolor);
for (size_t i = 0; i < _line_y_limit; i++)
{
_dis_buff_ptr->drawString((char *)discharbuff[(dispos + i) % 60], 0, i * _font_y_size);
}
_dis_buff_ptr->pushSprite(_win_x_pos, _win_y_pos);
return 1;
}
@@ -1,35 +0,0 @@
#ifndef _TFTTERMINAL_H_
#define _TFTTERMINAL_H_
#include <M5Stack.h>
#include <Print.h>
class TFTTerminal : public Print
{
private:
TFT_eSprite *disptr;
char discharbuff[60][55];
uint32_t xpos = 0,ypos = 0, dispos = 0;
TFT_eSprite* _dis_buff_ptr = NULL;
uint16_t _bkcolor = TFT_BLACK;
uint16_t _color = TFT_GREEN;
uint16_t _win_x_pos = 0,_win_y_pos = 0,_win_w = 320,_win_h = 240;
uint16_t _font_x_size = 6,_font_y_size = 8;
uint8_t _fontSize = 0;
uint16_t _line_x_limit = 53,_line_y_limit = 30;
public:
TFTTerminal(TFT_eSprite *dis_buff_ptr);
~TFTTerminal();
void setcolor( uint16_t color, uint16_t bk_color );
void setGeometry(uint16_t x, uint16_t y, uint16_t w, uint16_t h );
void setFontsize(uint8_t size);
size_t write(uint8_t) ;
size_t write(const uint8_t *buffer, size_t size);
};
#endif
@@ -7,21 +7,18 @@
* 获取更多资料请访问:https://docs.m5stack.com/zh_CN/unit/uhf_rfid
*
* describe: uhf_rfid.
* date2021/8/30
* date2021/9/1
*******************************************************************************
Please connect to PORT-B,Press buttonA or buttonB to Send message if received message, screen will display
请连接端口B,按钮A或按钮B发送消息,如果收到消息,屏幕将显示
*/
#include <M5Stack.h>
#include "RFID_command.h"
#include <M5GFX.h>
#include "TFTTerminal.h"
TFT_eSprite TerminalBuff = TFT_eSprite(&M5.Lcd);
TFTTerminal terminal(&TerminalBuff);
M5GFX display;
M5Canvas canvas(&display);
UHF_RFID RFID;
String comd = " ";
CardpropertiesInfo card;
ManyInfo cards;
@@ -35,16 +32,18 @@ TestInfo Test;
void setup()
{
M5.begin();
display.begin();
display.setTextSize(2);
canvas.setColorDepth(1); // mono color
canvas.createSprite(display.width(), display.height());
canvas.setTextSize((float)canvas.width() / 160);
canvas.setTextScroll(true);
RFID._debug = 0;
Serial2.begin(115200, SERIAL_8N1, 16, 17);//16.17
if (RFID._debug == 1)Serial.begin(115200, SERIAL_8N1, 21, 22);
M5.Lcd.fillRect(0, 0, 340, 280, BLACK);
TerminalBuff.createSprite(280,200);
terminal.setGeometry(20,30,300,200);
terminal.setFontsize(1);
// UHF_RFID set UHF_RFID设置
RFID.Set_transmission_Power(2600);
RFID.Set_the_Select_mode();
@@ -53,7 +52,7 @@ void setup()
RFID.clean_data();
// Prompted to connect to UHF_RFID 提示连接UHF_RFID
terminal.println("Please connect UHF_RFID to Port C");
display.println("Please connect UHF_RFID to Port C");
// Determined whether to connect to UHF_RFID 判断是否连接UHF_RFID
String soft_version;
@@ -69,7 +68,7 @@ void setup()
}
// The prompt will be RFID card close 提示将RFID卡靠近
terminal.println("Please approach the RFID card you need to use");
display.println("Please approach the RFID card you need to use");
}
@@ -83,62 +82,58 @@ void loop()
// A read/write operation specifies a particular card 读写操作需指定某一张卡
// comd = RFID.Set_the_select_parameter_directive("30751FEB705C5904E3D50D70");
// terminal.println(comd);
// canvas.println(comd);
// RFID.clean_data();
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Query the card information once 查询一次卡的信息例子
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
card = RFID.A_single_poll_of_instructions();
if (card._ERROR.length() != 0)
{
Serial.print(card._ERROR);
}
else
{
if(card._EPC.length() == 24)
{
terminal.println("RSSI :" + card._RSSI);
terminal.println("PC :" + card._PC);
terminal.println("EPC :" + card._EPC);
terminal.println("CRC :" + card._CRC);
terminal.println(" ");
}
}
RFID.clean_data(); //Empty the data after using it 使用完数据后要将数据清空
if (card._ERROR.length() != 0){
Serial.println(card._ERROR);
}else{
if(card._EPC.length() == 24){
canvas.println("RSSI :" + card._RSSI);
canvas.println("PC :" + card._PC);
canvas.println("EPC :" + card._EPC);
canvas.println("CRC :" + card._CRC);
canvas.println(" ");
}
}
RFID.clean_data(); //Empty the data after using it 使用完数据后要将数据清空
/*Other feature usage examples 其他功能使用例子*/
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Read multiple RFID cards at once 一次读取多张RFID卡
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
// cards = RFID.Multiple_polling_instructions(6);
// for (size_t i = 0; i < cards.len; i++)
// {
// if(cards.card[i]._EPC.length() == 24)
// {
// terminal.println("RSSI :" + cards.card[i]._RSSI);
// terminal.println("PC :" + cards.card[i]._PC);
// terminal.println("EPC :" + cards.card[i]._EPC);
// terminal.println("CRC :" + cards.card[i]._CRC);
// }
// }
// terminal.println(" ");
// RFID.clean_data();
/* cards = RFID.Multiple_polling_instructions(6);
for (size_t i = 0; i < cards.len; i++)
{
if(cards.card[i]._EPC.length() == 24)
{
canvas.println("RSSI :" + cards.card[i]._RSSI);
canvas.println("PC :" + cards.card[i]._PC);
canvas.println("EPC :" + cards.card[i]._EPC);
canvas.println("CRC :" + cards.card[i]._CRC);
}
}
canvas.println(" ");
RFID.clean_data();
*/
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Used to get the SELECT parameter 用于获取Select参数
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
// Select = RFID.Get_the_select_parameter();
// if(Select.Mask.length() != 0)
// {
// terminal.println("Mask :" + Select.Mask);
// terminal.println("SelParam :" + Select.SelParam);
// terminal.println("Ptr :" + Select.Ptr);
// terminal.println("MaskLen :" + Select.MaskLen);
// terminal.println("Truncate :" + Select.Truncate);
// terminal.println(" ");
// canvas.println("Mask :" + Select.Mask);
// canvas.println("SelParam :" + Select.SelParam);
// canvas.println("Ptr :" + Select.Ptr);
// canvas.println("MaskLen :" + Select.MaskLen);
// canvas.println("Truncate :" + Select.Truncate);
// canvas.println(" ");
// }
// RFID.clean_data();
@@ -148,15 +143,15 @@ void loop()
// Cardinformation = RFID.NXP_Change_EAS(0x00000000);
// if(Cardinformation._UL.length() != 0)
// {
// terminal.println("UL :" + Cardinformation._UL);
// terminal.println("PC :" + Cardinformation._PC);
// terminal.println("EPC :" + Cardinformation._EPC);
// terminal.println("Parameter :" + Cardinformation._Parameter);
// terminal.println("ErrorCode :" + Cardinformation._ErrorCode);
// terminal.println("Error :" + Cardinformation._Error);
// terminal.println("Data :" + Cardinformation._Data);
// terminal.println("Successful :" + Cardinformation._Successful);
// terminal.println(" ");
// canvas.println("UL :" + Cardinformation._UL);
// canvas.println("PC :" + Cardinformation._PC);
// canvas.println("EPC :" + Cardinformation._EPC);
// canvas.println("Parameter :" + Cardinformation._Parameter);
// canvas.println("ErrorCode :" + Cardinformation._ErrorCode);
// canvas.println("Error :" + Cardinformation._Error);
// canvas.println("Data :" + Cardinformation._Data);
// canvas.println("Successful :" + Cardinformation._Successful);
// canvas.println(" ");
// }
// RFID.clean_data();
@@ -167,15 +162,15 @@ void loop()
// Query = RFID.Get_the_Query_parameter();
// if(Query.QueryParameter.length() != 0)
// {
// terminal.println("QueryParameter :" + Query.QueryParameter);
// terminal.println("DR :" + Query.DR);
// terminal.println("M :" + Query.M);
// terminal.println("TRext :" + Query.TRext);
// terminal.println("Sel :" + Query.Sel);
// terminal.println("Session :" + Query.Session);
// terminal.println("Targetta :" + Query.Target);
// terminal.println("Q :" + Query.Q);
// terminal.println(" ");
// canvas.println("QueryParameter :" + Query.QueryParameter);
// canvas.println("DR :" + Query.DR);
// canvas.println("M :" + Query.M);
// canvas.println("TRext :" + Query.TRext);
// canvas.println("Sel :" + Query.Sel);
// canvas.println("Session :" + Query.Session);
// canvas.println("Targetta :" + Query.Target);
// canvas.println("Q :" + Query.Q);
// canvas.println(" ");
// }
// RFID.clean_data();
@@ -186,10 +181,10 @@ void loop()
// Read = RFID.Read_receive_demodulator_parameters();
// if(Read.Mixer_G.length()!= 0)
// {
// terminal.println("Mixer_G :" + Read.Mixer_G);
// terminal.println("IF_G :" + Read.IF_G);
// terminal.println("Thrd :" + Read.Thrd);
// terminal.println(" ");
// canvas.println("Mixer_G :" + Read.Mixer_G);
// canvas.println("IF_G :" + Read.IF_G);
// canvas.println("Thrd :" + Read.Thrd);
// canvas.println(" ");
// }
// RFID.clean_data();
}