Задать вопрос

Как установить значения битов с помощью WriteMultipleCoilsRequest?

Использую программную среду Android Studio, библиотеку jamod, протокол Modbus. Не получается устанавливать значения несколько бит с помощью WriteMultipleCoilsRequest не могу понять, как для этого формировать и использовать BitVector. Например по 40 адресу у меня 8-ми битовый Coils, его биты нужно записать, подскажите как это сделать? текст программы:

public class My_WriteMultipleCoils extends AsyncTask<Void, Void, Void> {
private Exception exception;
BitVector bv = new BitVector(8);

protected Void doInBackground(Void... Params) {
    try {
        addr = InetAddress.getByName(MainActivity.str_adr);
        int port = Modbus.DEFAULT_PORT;
        con = new TCPMasterConnection(addr);
        con.setPort(port);
        con.connect();

        WriteMultipleCoilsRequest m_WriteMultipleCoilsRequest = new WriteMultipleCoilsRequest();
        ModbusTCPTransaction m_Transaction = new ModbusTCPTransaction(con);

        bv.setBit(0,false);
        bv.setBit(1,false);
        bv.setBit(2,false);
        bv.setBit(3,true);
        bv.setBit(4,true);
        bv.setBit(5,true);
        bv.setBit(6,true);
        bv.setBit(7,true);

        m_WriteMultipleCoilsRequest.setUnitID(15);
        m_WriteMultipleCoilsRequest.setReference(40);
        m_WriteMultipleCoilsRequest.setCoils(bv);
        m_Transaction.setRequest(m_WriteMultipleCoilsRequest);
        m_Transaction.execute();

        if (con.isConnected())
            con.close();

    } catch (Exception e) {
        Log.d("TAG.Log", e.toString());
        return null;
    }
    return null;
}
  • Вопрос задан
  • 28 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы