riverlet / simple-modbus

Automatically exported from code.google.com/p/simple-modbus

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

modbus_configure

GoogleCodeExporter opened this issue · comments

Hi.
I m just wondering if that is possible to define modbus_configure parameters in 
some other loop other then void setup().
I m planing to provide a menu for setup parameters thru LCD screen. Would that 
be possible?
Cheers



Original issue reported on code.google.com by fisher...@gmail.com on 9 Dec 2013 at 11:40

This is not a defect but a review.

I have attached the altered library and header file. I have tested it on the 
Deumilanove.

Original comment by bester.j...@gmail.com on 11 Dec 2013 at 12:42

  • Added labels: Type-Review
  • Removed labels: Type-Defect

Attachments:

Thanks, I ll test it.

Original comment by fisher...@gmail.com on 12 Dec 2013 at 11:36

Hi again,
No its not working that way I expected. Or may be I missed smthng.
I m using this code (simplified just to make i shorter). And expect modbus ID 
to be either 3 or 4 depend on which button I press but its not working this 
way. It looks like modbus is not initiated properly. Could you direct me what I 
did wrong?


#include <SimpleModbusSlave.h>
enum //Modbus declare
{     
  giHR_01,
  giHR_02,
  HOLDING_REGS_SIZE // leave this one
};
unsigned int holdingRegs[HOLDING_REGS_SIZE];
void setup()
{  
}
void loop()
{ 
 switch (key)               // depending on which button was pushed, we configure modbus
 {
  case btnRIGHT: {
     lcd.print("RIGHT ");
     modbus_configure(&Serial, 9600, SERIAL_8N1, 4, 0, HOLDING_REGS_SIZE, holdingRegs);
     break;
     }
   case btnLEFT: {
     lcd.print("LEFT   ");
     modbus_configure(&Serial, 9600, SERIAL_8N1, 3, 0, HOLDING_REGS_SIZE, holdingRegs);
     break;
     }
     break;
 }
 modbus_update();
}

Original comment by fisher...@gmail.com on 12 Dec 2013 at 1:02

I tested the code below and it works flawlessly:


#include <SimpleModbusSlave.h>
enum //Modbus declare
{     
  giHR_01,
  giHR_02,
  HOLDING_REGS_SIZE // leave this one
};
unsigned int holdingRegs[HOLDING_REGS_SIZE];
void setup()
{  
  modbus_configure(&Serial, 9600, SERIAL_8N1, 1, 2, HOLDING_REGS_SIZE, holdingRegs); // this has to be called at least once in setup
}
void loop()
{ 
 switch (key)               // depending on which button was pushed, we configure modbus
 {
  case btnRIGHT: {
     lcd.print("RIGHT ");
     modbus_config_comms(9600, SERIAL_8N1, 4);
     break;
     }
   case btnLEFT: {
     lcd.print("LEFT   ");
     modbus_config_comms(9600, SERIAL_8N1, 3);
     break;
     }
     break;
 }
 modbus_update();
}

Original comment by bester.j...@gmail.com on 18 Dec 2013 at 11:12

Hi.
Will check it tomorrow.
Thanks

Original comment by fisher...@gmail.com on 20 Dec 2013 at 2:15

Yes it works perfectly!
Thanks mate. Well done!

Original comment by fisher...@gmail.com on 22 Dec 2013 at 12:49