Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <nRF905.h>
- #include <SPI.h>
- #define RXADDR {0x58, 0x6F, 0x2E, 0x10} // Address of this device (4 bytes)
- #define TXADDR {0xFE, 0x4C, 0xA6, 0xE5} // Address of device to send to (4 bytes)
- String ENQ = "0x05";
- String ACK = "0x06";
- String reply;
- String frame;
- String okF = "0x120" ;
- String SOH = "0x01";
- String EOT = "0x04";
- void setup() {
- nRF905_init();
- byte addr[] = RXADDR;
- nRF905_setRXAddress(addr);
- byte addr1[] = TXADDR;
- nRF905_setTXAddress(addr1);
- nRF905_receive();
- Serial.begin(38400);
- }
- void loop() {
- /******************WAIT FOR ENQUIRY (RECEIVE)*******************/
- delay(100);
- reply = "\0";
- Serial.println("WAITING FOR ENQ");
- byte buffer[50] = {0};
- while (!nRF905_getData(buffer, sizeof(buffer)));
- nRF905_setData(buffer, sizeof(buffer));
- while (!nRF905_send());
- nRF905_receive();
- Serial.print(F("Data: "));
- Serial.write(buffer, sizeof(buffer));
- Serial.println();
- for (int i = 0; i < sizeof(buffer); i++) {
- if ((buffer[i] > 0) && (buffer[i] < 127) && (buffer[i] != 32))
- reply = reply + char(buffer[i]);
- }
- Serial.println(reply);
- delay(100);
- if (reply == ENQ) {
- ACKLoop:
- /******************SEND ACK (TRANSMIT)*******************/
- delay(100);
- byte replyH[50] = {0};
- ACK.getBytes(replyH, 50);
- nRF905_setData(replyH, sizeof(replyH));
- while (!nRF905_send());
- nRF905_receive();
- Serial.println("ACK SENT");
- Serial.write(replyH, sizeof(replyH));
- Serial.println();
- /*****************RECEIVE FRAME (RECEIVE)******************/
- frame = "\0";
- Serial.println("WAITING FOR FRAME");
- byte buffer[50] = {0};
- while (!nRF905_getData(buffer, sizeof(buffer)));
- nRF905_setData(buffer, sizeof(buffer));
- while (!nRF905_send());
- nRF905_receive();
- Serial.print(F("Data: "));
- Serial.write(buffer, sizeof(buffer));
- Serial.println();
- for (int i = 0; i < sizeof(buffer); i++) {
- if ((buffer[i] > 0) && (buffer[i] < 127) && (buffer[i] != 32))
- frame = frame + char(buffer[i]);
- }
- Serial.println(frame);
- Serial.println(frame.substring(0,4));
- /*****************SEND RECEIVE FRAME **********************/
- delay(100);
- if ((frame.substring(0, 4) == SOH)&&(frame.substring(n-4, n) == EOT)) {
- Serial.println("FRAME RECEIVED");
- delay(100);
- byte replyH[50] = {0};
- okF.getBytes(replyH, 50);
- nRF905_setData(replyH, sizeof(replyH));
- while (!nRF905_send());
- nRF905_receive();
- Serial.println("ACK SENT");
- Serial.write(replyH, sizeof(replyH));
- Serial.println();
- }
- else {
- /*****************NOT RECEIVE FRAME **********************/
- Serial.println("FRAME NOT RECEIVED");
- goto ACKLoop;
- }
- }
- else {
- Serial.println("Not Received");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement