|
楼主 |
发表于 2013-6-9 11:15:57
|
显示全部楼层
~搏击长空 发表于 2013-6-8 19:46
大神,能给推荐一款可以远距离的读RFID的读卡器吗?·····尽量与Arduino兼容
Cottonwood: Long Range UHF RFID reader UART
范围:1-6米
接口: TTL Uart (RS232)
天线:5dBi or 8dBi directional antenna
- <!-- saved from url=(0063)[url=http://junetrading.com/soliddigi.com/upload/file/1309425930.pde]http://junetrading.com/soliddigi.com/upload/file/1309425930.pde[/url] -->
- <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">
- #include "WProgram.h"
- #include <NewSoftSerial.h>
- #include <string.h> //Used for string manipulations
- //global
- int ledPin = 13; // LED connected to digital pin 13
- unsigned char incomingByte;
- #define BYTE unsigned char
-
- //software serial debug_uart
- #define RXPIN 3//software serial
- #define TXPIN 4
- NewSoftSerial Debug_uart(RXPIN,TXPIN);
- //Create a 'fake' serial port. Pin 2 is the Rx pin, pin 3 is the Tx pin.
- //SoftwareSerial Debug_uart(3,4);//d3 int 1 as rx pin,d3 t0 as tx pin;
- #define DEBUG_TXBUF_SIZE 64
- #define DEBUG_RXBUF_SIZE 64
- enum command{hardware=0xf0,software,ssid};
- BYTE command_hardware[]={0x10,0x03,0x01};//const
- BYTE command_software[]={0x10,0x03,0x00};//const
- BYTE command_ssid[]={0x43,0x04,0x01,0xcd};//const
- static BYTE debug_txbuf[DEBUG_TXBUF_SIZE];
- static BYTE debug_txbuf_read=0;
- static BYTE debug_txbuf_write=0;
- //
- static BYTE debug_rxbuf[DEBUG_RXBUF_SIZE];
- static BYTE debug_rxbuf_read=0;
- static BYTE debug_rxbuf_write=0;
- //
- //treat serial_uart
- #define serial_RXBUF_SIZE 64
- #define serial_TXBUF_SIZE 64
- static BYTE serial_rxbuf[serial_RXBUF_SIZE];
- static BYTE serial_rxbuf_read=0;
- static BYTE serial_rxbuf_write=0;
- //static BYTE gprs_rxbuf_lineWrite;
- //
- static BYTE serial_txbuf[serial_TXBUF_SIZE];
- static BYTE serial_txbuf_read=0;
- static BYTE serial_txbuf_write=0;
- static unsigned char debug_rxBuf_Read( unsigned char *data)
- {
- if(debug_rxbuf_read == debug_rxbuf_write)
- return 0;
- *data = debug_rxbuf[debug_rxbuf_read++];
- debug_rxbuf_read %= DEBUG_RXBUF_SIZE;
- return 1;
- }
- extern unsigned char debug_rxBuf_readline(unsigned char *buf)
- {
- unsigned char len;
- for( len=0;;len++)
- {
- if(0==debug_rxBuf_Read(&buf[len]))
- break;
- }
- //buf[len]='\0';
- return len;
- }
- static void debug_rxBuf_Write(unsigned char *Buf,int len)
- {
- for(int i=0;i<len;i++)
- {
- debug_rxbuf[debug_rxbuf_write]=Buf[0];//Buf[i];
- debug_rxbuf_write++;
- debug_rxbuf_write %=DEBUG_RXBUF_SIZE;
- }
- }
- static void debug_SendData(unsigned char *P,unsigned char DataLength)
- {
- Debug_uart.print(*P);
- }
- static void debug_Send_bytes(void)
- {
- while(debug_txbuf_read != debug_txbuf_write)
- {
- if(debug_txbuf_read < debug_txbuf_write )
- {
- debug_SendData(&debug_txbuf[debug_txbuf_read],1);
- debug_txbuf_read++;
- debug_txbuf_read %= DEBUG_TXBUF_SIZE;
- }
- if(debug_txbuf_read > debug_txbuf_write)
- {
- debug_SendData(&debug_txbuf[debug_txbuf_read],1);
- debug_txbuf_read++;
- debug_txbuf_read %= DEBUG_TXBUF_SIZE;
- }
- }
- }
- extern void debug_write_txbuf( unsigned char *pcmd, unsigned char len)
- {
- for(int n=0;n<len;n++)
- {
- debug_txbuf[debug_txbuf_write] = pcmd[n];
-
- debug_txbuf_write++;
- debug_txbuf_write %= DEBUG_TXBUF_SIZE;
- }
- debug_Send_bytes();//start TX BYTES
- }
- //
- static void serial_rxBuf_Write(unsigned char *Buf,int len)
- {
- for(int i=0;i<len;i++)
- {
- serial_rxbuf[serial_rxbuf_write]=Buf[i];
- serial_rxbuf_write++;
- serial_rxbuf_write %=serial_RXBUF_SIZE;
- }
- }
- extern void serial_rxBuf_lineWrite(void)
- {
- //
- unsigned char tempbyte = 0xff;
- while(1)
- {
- incomingByte = Serial.read();
- if(incomingByte == 0xff)
- {
- incomingByte = Serial.read();
- if(incomingByte == 0xff)
- {
- break;
- }
- else
- {
- serial_rxBuf_Write(&tempbyte,1);//save 0xff;dont discard
- serial_rxBuf_Write(&incomingByte,1);
- }
-
- }
- else
- serial_rxBuf_Write(&incomingByte,1);
- }
- }
- static unsigned char serial_rxBuf_Read( unsigned char *data)
- {
- if(serial_rxbuf_read == serial_rxbuf_write)
- return 0;
- *data = serial_rxbuf[serial_rxbuf_read++];
- serial_rxbuf_read %= serial_RXBUF_SIZE;
- return 1;
- }
- extern unsigned char serial_rxBuf_readline(unsigned char *buf)
- {
- BYTE len;
- for( len=0;;len++)
- {
- if(0==serial_rxBuf_Read(&buf[len]))
- break;
- }
- //buf[len]='\0';
- return len;
- }
- static void serial_Send_bytes(void)
- {
- while(serial_txbuf_read != serial_txbuf_write )
- {
- Serial.print(serial_txbuf[serial_txbuf_read]);
- serial_txbuf_read++;
- serial_txbuf_read %= serial_TXBUF_SIZE;
- }
-
- }
- extern void serial_write_txbuf(unsigned char *pcmd,unsigned char len)
- {
- for(int n=0;n<len;n++)
- {
- serial_txbuf[serial_txbuf_write] = pcmd[n];
- serial_txbuf_write++;
- serial_txbuf_write %= serial_TXBUF_SIZE;
- }
- serial_Send_bytes();
- }
- void setup() // run once, when the sketch starts
- {
- delay(200); //wait for v is 5v
- pinMode(ledPin, OUTPUT); // sets the digital pin as output
- pinMode(TXPIN, OUTPUT); // sets the digital pin as output
- Serial.begin(115200);
- Debug_uart.begin(4800);
- }
- void loop() // run over and over again
- {
- while(Debug_uart.available())
- {
- incomingByte = Debug_uart.read();
- debug_rxBuf_Write(&incomingByte ,1);//only one byte lwm
- }
- unsigned char tempbuf[64];
- unsigned char templength;
- templength=debug_rxBuf_readline(tempbuf);
- serial_write_txbuf(tempbuf,templength);
- delay(1000);//wait for corresend
- if (Serial.available() > 0)
- {
- serial_rxBuf_lineWrite();
- }
- templength=serial_rxBuf_readline(tempbuf);
- debug_write_txbuf(tempbuf,templength);
-
- digitalWrite(ledPin, HIGH); // sets the LED on//lwm
- delay(100); // waits for a second former 1000 lwm
- digitalWrite(ledPin, LOW); // sets the LED off
- delay(100); // waits for a second former 1000 lwm
-
- }
- </pre></body></html>
复制代码
我没用过此RFID
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|