// change baud rate 2400 to 9600
#define DE_RE_PIN 18      // DE and RE pins linked to GPIO 4
#define MODE_SEND HIGH   // HIGH for transmitting
#define MODE_RECV LOW    // LOW for receiving
byte ByteArray[250];int ByteData[20];

unsigned long rawValue = 0;
float finalValue;
float voltage;

void set_address_dds6619() {
  
  uint8_t buff[] = {

    0x09, // device address
    0x10, // Write Multiple holding register
	//---------- register address 0x0000
    0x00,  
    0x00,  
	//----------- quantity   
    0x00,  
    0x02, 
	//----------- byte count
    0x04,
	//------------ data 0x46160000 = baud rate 9600
    0x46,
    0x16,
    0x00,
    0x00,
	//------------- crc byte high(0x2d) crc byte low (0x43)
    0x2d,
    0x43
     
  };

  digitalWrite(DE_RE_PIN, MODE_SEND); // Enable transmission
  Serial2.write(buff, sizeof(buff));   // Send the command via Serial2
  delay(5);
  Serial2.flush();                     // Wait for send to complete
  digitalWrite(DE_RE_PIN, MODE_RECV);  // Enable reception

  int a = 0;

  while(Serial2.available()){
    ByteArray[a] = Serial2.read();
    a++;
  }

  int b=0;
  String Register;
  Serial.println("Receiving Data...");
  for(b=0;b<a;b++){
    Serial.print("[");
    Serial.print(b);
    Serial.print("]");
    Serial.print("=");

    Register = String(ByteArray[b],HEX);
    Serial.print(Register);
    Serial.print(" ");
    
   }
  //}


  Serial.println();


}

void setup() {
  pinMode(DE_RE_PIN, OUTPUT);
  digitalWrite(DE_RE_PIN, MODE_RECV); // Start in receive mode
  Serial.begin(115200);               // Serial monitor output
  Serial2.begin(2400, SERIAL_8N1, 19, 21); // Initialize Serial2  original baud rate
  Serial2.setTimeout(200);            // Set a timeout for response
 
  set_address_dds6619();

  while(1);
}

void loop() {
 
//delay(1000);
}
