Skip to content
Maratonline edited this page Nov 19, 2020 · 9 revisions

Welcome to the Meter-Usb-Connector-Lib wiki!

Библиотека реализован протокол для общения с прибором учета Мер200 все методы для взаимодействия реализованы в классе CommandLogic данный класс имплементирует интерфейс IMercCon200 в котором всего три метода:

/**
 * Установить новый сетевой адрес счетчика по серийнику.
 * @param serial Серийный номер счетчика
 * @param serial Серийный номер счетчика
 * @return Результат выполнения
 */
Decryptor resetMercInetAddress(@NonNull String serial);

/** * Пытается соедениться с прибора * учета по номеру квартиры или серийному номеру. * В случаи успеха становить новый сетевой адрес счетчика. * @param serial Серийный номер счетчика * @param appartment Квартира * @return Результат выполнения */ Decryptor resetMercInetAddress(@Nullable String serial, @NonNull String appartment);

/**
 * Пытаеться соедениться с прибора
 * учета по конкретному сетевому адресу (подходить если известен сетевой адрес ПУ)ю
 * В случаи успеха становить новый сетевой адрес счетчика.
 * @param serial Серийный номер счетчика
 * @param appartment Квартира
 * @return Результат выполнения
 */
Decryptor resetMercInetAddressManual(@NonNull String inetAddress);

Объект Decryptor парсит ответ от прибора учета и содержит три основных метода:

/**
 * значения Enum:
 * CORRECT,
 * UNCORRECT,
 * NOT_CONNECTION,
 * @return Enum MeterAnswerStatus
 */
MeterAnswerStatus getAnswerStatus();

/**
 * Полученный серийный номер ПУ, с проверкой запроса.
 * @return -1 - если ответа нет, серийник - если все верно
 */
int getSerial();

/**
 * @return byte[] полный ответ от ПУ
 */
byte[] getFullAnswer();

Example:

	@Override
	protected Object doInBackground(Object[] objects) {
		IMercCon200 iMercCon200 = new CommandLogic(activity);
		decryptor = iMercCon200.resetMercInetAddress(serial, appartment);
		switch (decryptor.getAnswerStatus()){
			case CORRECT:{
				metersAnswer = String.valueOf(decryptor.getSerial());
				fullAnswer = bytesToHex(decryptor.getFullAnswer());
				Toast.makeText(this, "АДРЕС СЧЕТЧИКА ПЕРЕПРОГРАММИРОВАН ЕГО №" + metersAnswer, Toast.LENGTH_LONG).show();
				break;
			}
			case UNCORRECT:{
				fullAnswer = bytesToHex(decryptor.getFullAnswer());
				condition = 2;
				Toast.makeText(this, "АДРЕС СЧЕТЧИКА НЕ ПЕРЕПРОГРАММИРОВАН", Toast.LENGTH_LONG).show();
			}
			case NOT_CONNECTION:{
				Toast.makeText(this, "НЕ УДАЛОСЬ УСТАНОВИТЬ СОЕДИНЕНИЕ", Toast.LENGTH_LONG).show();
			}
		}
		return null;
	}

Clone this wiki locally