This shows you the differences between two versions of the page.
— |
sdk:scripts:modbus-rtu-master [2015/05/05 15:04] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== SDK Script modbus-rtu-master.are ====== | ||
+ | <code c modbus-rtu-master.are> | ||
+ | /* DESC: This script can be used to read messages from the serial port. | ||
+ | * Copyright (C) 2015 NetModule AG, Switzerland | ||
+ | */ | ||
+ | |||
+ | DEV = "SERIAL1"; | ||
+ | SLAVEID = 1; | ||
+ | |||
+ | /* check serial port config */ | ||
+ | st = nb_config_get("serial.0.status"); | ||
+ | if (st != "2") { | ||
+ | nb_syslog("Serial port is not enabled for us"); | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | /* set attributes */ | ||
+ | ret = nb_serial_setattr(DEV, 115200, 8, 1, 0, 0); | ||
+ | |||
+ | if (ret != 0) { | ||
+ | printf("Could not set serial attributes: %i \n",ret); | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | /* open serial port */ | ||
+ | fd = nb_serial_open(DEV); | ||
+ | if (fd < 0) { | ||
+ | printf("Unable to open %s\n", DEV); | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | /* register fd for modbus functions */ | ||
+ | if (nb_modbus_register(fd, MODBUS_TYPE_RTU) < 0) { | ||
+ | printf("Unable to register to modbus\n"); | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | /* set slave id */ | ||
+ | if (nb_modbus_set_slave(fd, SLAVEID) < 0) { | ||
+ | printf("Unable to set slave identifier\n"); | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | /* write 3 registers start at address 0*/ | ||
+ | data = mkarray(0, 1, 2); | ||
+ | nb_modbus_write_regs(fd, 0, length(data), data); | ||
+ | |||
+ | /* read 5 registers from address 0*/ | ||
+ | data = nb_modbus_read_regs(fd, 5, 5); | ||
+ | |||
+ | /* print data */ | ||
+ | dump(data); | ||
+ | |||
+ | /* unregister, close fd and exit */ | ||
+ | nb_modbus_unregister(fd); | ||
+ | |||
+ | close(fd); | ||
+ | exit(0); | ||
+ | |||
+ | </code> | ||