Class: ModBus::Master
- Inherits:
-
Object
- Object
- ModBus::Master
- Defined in:
- ext/modbus4r.c
Instance Method Summary collapse
- #close ⇒ Object
- #closed? ⇒ Boolean
- #connect ⇒ Object
- #force_multiple_coils(start_addr, data) ⇒ Object
- #force_single_coil(coil_addr, state) ⇒ Object
- #preset_multiple_registers(start_addr, data) ⇒ Object
- #preset_single_register(reg_addr, value) ⇒ Object
- #read_coil_status(start_addr, nb) ⇒ Object
- #read_holding_registers(start_addr, nb) ⇒ Object
- #read_input_registers(start_addr, nb) ⇒ Object
- #read_input_status(start_addr, nb) ⇒ Object
Instance Method Details
#close ⇒ Object
47 48 49 50 51 52 53 54 55 |
# File 'ext/master.c', line 47 VALUE mb_mstr_close(VALUE self) { modbus_param_t *mb_param; Data_Get_Struct(self, modbus_param_t, mb_param); modbus_close(mb_param); return self; } |
#closed? ⇒ Boolean
25 26 27 28 29 30 31 32 33 34 |
# File 'ext/master.c', line 25 VALUE mb_mstr_is_closed(VALUE self) { modbus_param_t *mb_param; Data_Get_Struct(self, modbus_param_t, mb_param); if (read(mb_param->fd, NULL, 0) || mb_param->fd == 0) { return Qtrue; } return Qfalse; } |
#connect ⇒ Object
36 37 38 39 40 41 42 43 44 45 |
# File 'ext/master.c', line 36 VALUE mb_mstr_connect(VALUE self) { modbus_param_t *mb_param; Data_Get_Struct(self, modbus_param_t, mb_param); if (modbus_connect(mb_param)) { rb_raise(eModBusError, "Connection refused"); } return self; } |
#force_multiple_coils(start_addr, data) ⇒ Object
164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 |
# File 'ext/master.c', line 164 VALUE mb_mstr_force_multiple_coils(VALUE self, VALUE start_addr, VALUE data) { modbus_param_t *mb_param; Data_Get_Struct(self, modbus_param_t, mb_param); start_addr = rb_funcall(start_addr, rb_intern("to_i"), 0); data = rb_funcall(data, rb_intern("to_a"), 0); uint8_t buf[RARRAY_LEN(data)]; VALUE *ary = RARRAY_PTR(data); int i; for (i = 0; i < RARRAY_LEN(data); i++) { buf[i] = (*ary == Qfalse ? 0 : 1); ary++; } int status = force_multiple_coils(mb_param, FIX2INT(start_addr), RARRAY_LEN(data), buf); if (status < 0) { mb_raise_error(status); } return self; } |
#force_single_coil(coil_addr, state) ⇒ Object
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'ext/master.c', line 130 VALUE mb_mstr_force_single_coil(VALUE self, VALUE coil_addr, VALUE state) { modbus_param_t *mb_param; Data_Get_Struct(self, modbus_param_t, mb_param); coil_addr = rb_funcall(coil_addr, rb_intern("to_i"), 0); int status = force_single_coil(mb_param, FIX2INT(coil_addr), (state == Qfalse ? 0 : 1)); if (status < 0) { mb_raise_error(status); } return self; } |
#preset_multiple_registers(start_addr, data) ⇒ Object
190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'ext/master.c', line 190 VALUE mb_mstr_preset_multiple_registers(VALUE self, VALUE start_addr, VALUE data) { modbus_param_t *mb_param; Data_Get_Struct(self, modbus_param_t, mb_param); start_addr = rb_funcall(start_addr, rb_intern("to_i"), 0); data = rb_funcall(data, rb_intern("to_a"), 0); uint16_t buf[RARRAY_LEN(data)]; VALUE *ary = RARRAY_PTR(data); int i; for (i = 0; i < RARRAY_LEN(data); i++) { *ary = rb_funcall(*ary, rb_intern("to_i"), 0); buf[i] = FIX2INT(*ary); ary++; } int status = preset_multiple_registers(mb_param, FIX2INT(start_addr), RARRAY_LEN(data), buf); if (status < 0) { mb_raise_error(status); } return self; } |
#preset_single_register(reg_addr, value) ⇒ Object
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
# File 'ext/master.c', line 147 VALUE mb_mstr_preset_single_register(VALUE self, VALUE reg_addr, VALUE value) { modbus_param_t *mb_param; Data_Get_Struct(self, modbus_param_t, mb_param); reg_addr = rb_funcall(reg_addr, rb_intern("to_i"), 0); value = rb_funcall(value, rb_intern("to_i"), 0); int status = preset_single_register(mb_param, FIX2INT(reg_addr), FIX2INT(value)); if (status < 0) { mb_raise_error(status); } return self; } |
#read_coil_status(start_addr, nb) ⇒ Object
82 83 84 85 |
# File 'ext/master.c', line 82 VALUE mb_mstr_read_coil_status(VALUE self, VALUE start_addr, VALUE nb) { return mb_mstr_read_coil(self, start_addr, nb, read_coil_status); } |
#read_holding_registers(start_addr, nb) ⇒ Object
118 119 120 121 122 |
# File 'ext/master.c', line 118 VALUE mb_mstr_read_holding_registers(VALUE self, VALUE start_addr, VALUE nb) { return mb_mstr_read_registers(self, start_addr, nb, read_holding_registers); } |
#read_input_registers(start_addr, nb) ⇒ Object
124 125 126 127 128 |
# File 'ext/master.c', line 124 VALUE mb_mstr_read_input_registers(VALUE self, VALUE start_addr, VALUE nb) { return mb_mstr_read_registers(self, start_addr, nb, read_input_registers); } |
#read_input_status(start_addr, nb) ⇒ Object
87 88 89 90 |
# File 'ext/master.c', line 87 VALUE mb_mstr_read_input_status(VALUE self, VALUE start_addr, VALUE nb) { return mb_mstr_read_coil(self, start_addr, nb, read_input_status); } |