Class: ModBus::Slave

Inherits:
Object
  • Object
show all
Defined in:
ext/modbus4r.c

Direct Known Subclasses

RTUSlave, TCPSlave

Instance Method Summary collapse

Instance Method Details

#coil_statusObject



119
120
121
122
123
124
125
# File 'ext/slave.c', line 119

VALUE mb_sl_get_coil_status(VALUE self)
{
    modbus_slave_t *mb_slave;
    Data_Get_Struct(self, modbus_slave_t, mb_slave);

    return mb_slave->coil_status;
}

#coil_status=(value) ⇒ Object



127
128
129
130
131
132
133
134
135
136
# File 'ext/slave.c', line 127

VALUE mb_sl_set_coil_status(VALUE self, VALUE value)
{
    modbus_slave_t *mb_slave;
    Data_Get_Struct(self, modbus_slave_t, mb_slave);

    value = rb_funcall(value, rb_intern("to_a"), 0);
    mb_slave->coil_status = rb_ary_dup(value);
    
    return mb_slave->coil_status;
}

#holding_registersObject



157
158
159
160
161
162
163
# File 'ext/slave.c', line 157

VALUE mb_sl_get_holding_registers(VALUE self)
{
    modbus_slave_t *mb_slave;
    Data_Get_Struct(self, modbus_slave_t, mb_slave);

    return mb_slave->holding_registers;
}

#holding_registers=(value) ⇒ Object



165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
# File 'ext/slave.c', line 165

VALUE mb_sl_set_holding_registers(VALUE self, VALUE value)
{
    modbus_slave_t *mb_slave;
    Data_Get_Struct(self, modbus_slave_t, mb_slave);

    value = rb_funcall(value, rb_intern("to_a"), 0);
    mb_slave->holding_registers = rb_ary_dup(value);
    VALUE *reg = RARRAY_PTR(mb_slave->holding_registers);
    
    int i;
    for (i = 0; i < RARRAY_LEN(mb_slave->holding_registers); i++) {
         *reg = rb_funcall(*reg, rb_intern("to_i"), 0);
    }
        
    return mb_slave->holding_registers;
}

#input_registersObject



182
183
184
185
186
187
188
# File 'ext/slave.c', line 182

VALUE mb_sl_get_input_registers(VALUE self)
{
    modbus_slave_t *mb_slave;
    Data_Get_Struct(self, modbus_slave_t, mb_slave);

    return mb_slave->input_registers;
}

#input_registers=(value) ⇒ Object



190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# File 'ext/slave.c', line 190

VALUE mb_sl_set_input_registers(VALUE self, VALUE value)
{
    modbus_slave_t *mb_slave;
    Data_Get_Struct(self, modbus_slave_t, mb_slave);

    value = rb_funcall(value, rb_intern("to_a"), 0);
    mb_slave->input_registers = rb_ary_dup(value);
    VALUE *reg = RARRAY_PTR(mb_slave->input_registers);
    
    int i;
    for (i = 0; i < RARRAY_LEN(mb_slave->input_registers); i++) {
         *reg = rb_funcall(*reg, rb_intern("to_i"), 0);
    }
        
    return mb_slave->input_registers;
}

#input_statusObject



138
139
140
141
142
143
144
# File 'ext/slave.c', line 138

VALUE mb_sl_get_input_status(VALUE self)
{
    modbus_slave_t *mb_slave;
    Data_Get_Struct(self, modbus_slave_t, mb_slave);

    return mb_slave->input_status;
}

#input_status=(value) ⇒ Object



146
147
148
149
150
151
152
153
154
155
# File 'ext/slave.c', line 146

VALUE mb_sl_set_input_status(VALUE self, VALUE value)
{
    modbus_slave_t *mb_slave;
    Data_Get_Struct(self, modbus_slave_t, mb_slave);

    value = rb_funcall(value, rb_intern("to_a"), 0);
    mb_slave->input_status = rb_ary_dup(value);
        
    return mb_slave->input_status;
}

#joinObject



207
208
209
210
211
212
213
214
215
# File 'ext/slave.c', line 207

VALUE mb_sl_join(VALUE self)
{
    modbus_slave_t *mb_slave;
    Data_Get_Struct(self, modbus_slave_t, mb_slave);

    pthread_join(mb_slave->tid, NULL);

    return self;
}

#stoped?Boolean

Returns:

  • (Boolean)


107
108
109
110
111
112
113
114
115
116
117
# File 'ext/slave.c', line 107

VALUE mb_sl_is_stoped(VALUE self)
{
    modbus_slave_t *mb_slave;
    Data_Get_Struct(self, modbus_slave_t, mb_slave);

    if (read(mb_slave->listen_sock, NULL, 0) 
            || mb_slave->listen_sock == 0) { 
        return Qtrue;
    }
    return Qfalse;
}