jSSC — Работаем с COM-портом из Java на Raspberry Pi, Orange Pi, Banana Pi и тп

jSSC (Java Simple Serial Connector) — библиотека для работы с последовательными (COM) портами ПК. Библиотека создавалась как простая и надёжная замена уже имеющимся средствам. Своё официальное, публичное начало она берёт в 2010 году и распространяется под лицензией LGPL.

С помощью jSSC можно получать имена портов, читать и писать данные, получать ивенты о произошедших событиях ну и т.д. В отличии от javax.comm, с jSSC можно управлять линиями RTS и DTR. Библиотека разрабатывалась для работы в режиме 24/7 в многопоточных системах и на данный момент успешно используется в системах автоматизации, сбора и регистрации данных.

Библиотеку можно использовать на таких платформах, как:

  • Windows x86 и x64;
  • Linux x86, x64, armhf и armsf (т.е. Raspberry Pi, Orange Pi, Banana Pi, NanoPi и тп);
  • Solaris x86 и x64;
  • Mac OS X ppc, ppc64, x86 и x64.

jSSC можно разделить на несколько основных частей:

  • SerialNativeInterface – класс, который предоставляет доступ ко всем «нативным» методам jSSC.
  • SerialPort – класс, с помощью которого мы уже будем непосредственно работать с нужным нам портом.
  • SerialPortEventListener – интерфейс, который необходимо реализовать, если мы хотим использовать ивенты.

jSSC предоставляет следующий ряд возможностей:

  • Чтение и запись данных;
  • Управление линиями RTS, DTR;
  • Получение статуса линий CTS, DSR, RING, RLSD;
  • Получение количества байт в буферах;
  • Очистка буферов порта;
  • Отправка сигнала Break;
  • Управление потоком;
  • Получение списка com-портов в системе;

Где скачать jSSC

Последнюю версию скачать можно тут, на этой странице можно найти и исходный код. На данный момент доступна версия 2.8.0: jSSC-2.8.0-Release.zip, в архиве вы найдёте файл jssc.jar, его и добавьте в свои проекты. Если вам удобнее работать в Maven, тогда можете добавить следующую зависимость:

<!-- https://mvnrepository.com/artifact/org.scream3r/jssc -->
<dependency>
    <groupId>org.scream3r</groupId>
    <artifactId>jssc</artifactId>
    <version>2.8.0</version>
</dependency>

Примеры программ с jSSC

Получение имён последовательных портов

Получить список последовательных портов очень просто с помощью метода getPortNames(). Метод возвращает массив отсортированы строк.

import jssc.SerialPortList;

public class SerialPortListExample {
  public static void main(String[] args) {
    String[] portNames = SerialPortList.getPortNames();
    for (String portName : portNames) {
      System.out.println(portName);
    }
  }
}

Проверяем код:

  1. создаём java файл и вставляем код:
    nano SerialPortListExample.java
  2. компилируем файл:
    javac -classpath .:classes:jssc.jar SerialPortListExample.java
  3. запускаем программу:
    java -classpath .:classes:jssc.jar SerialPortListExample

Результат

Примеры программ с jSSC - Получение имён последовательных портов Orange Pi PC (Результат)

Запись строки

Записывать данные в последовательный порт можно при помощи следующих методов:

  • writeByte — Запись одного байта в порт;
    public boolean writeByte(byte singleByte)
  • writeBytes — Запись массива байтов в порт;
    public boolean writeBytes(byte[] buffer)
  • writeInt — Запись INT значение (в диапазоне от 0 до 255 (0x00 — 0xFF)) в порт;
    public boolean writeInt(int singleInt)
  • writeIntArray — Запись массива int (в диапазоне от 0 до 255 (0x00 — 0xFF)) в порт;
    public boolean writeIntArray(int[] buffer)
  • writeString — Запись строки в порт;
    public boolean writeString(String string)
    public boolean writeString(String string, String charsetName)

Ниже приведённый пример кода будет запускаться на Windows 10 x64 и будет передавать привет Orange Pi PC, который и будет принимать приветы.

import java.io.UnsupportedEncodingException;
import jssc.SerialPort;
import jssc.SerialPortException;

public class SerialTxExample {

  public static void main(String[] args) {
    /*
     * Передаём в конструктор имя порта
     */
    SerialPort serialPort = new SerialPort("COM13");
    try {
      /*
       * Открываем порт
       */
      serialPort.openPort();
      /*
       * Выставляем параметры
       */
      serialPort.setParams(SerialPort.BAUDRATE_9600,
          SerialPort.DATABITS_8,
          SerialPort.STOPBITS_1,
          SerialPort.PARITY_NONE);
      /*
       * Передаём привет
       */
      serialPort.writeString("Привет", "UTF-8");
    } catch (SerialPortException ex) {
      ex.printStackTrace();
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }
  }
}

Чтение данных с использованием интерфейса SerialPortEventListener

Чтение данных из последовательного порта можно при помощи следующих методов:

public byte[] readBytes()
public byte[] readBytes(int byteCount)
public byte[] readBytes(int byteCount, int timeout)
public String readHexString()
public String readHexString(int byteCount)
public String readHexString(int byteCount, int timeout)
public String readHexString(int byteCount, String separator)
public String readHexString(int byteCount, String separator, int timeout)
public String readHexString(String separator)
public String[] readHexStringArray()
public String[] readHexStringArray(int byteCount)
public String[] readHexStringArray(int byteCount, int timeout)
public int[] readIntArray()
public int[] readIntArray(int byteCount)
public int[] readIntArray(int byteCount, int timeout)
public String readString()
public String readString(int byteCount)
public String readString(int byteCount, int timeout)

Ниже приведённый пример кода будет запускаться на Orange Pi PC и принимать приветы, отправленные через последовательный порт. Все сообщения будут выводиться в терминал.

import jssc.SerialPort;
import jssc.SerialPortEvent;
import jssc.SerialPortEventListener;
import jssc.SerialPortException;

public class SerialPorRxTxSerialPortEventListenerExample {

  public static void main(String[] args) {
    /*
     * Передаём в конструктор имя порта
     */
    SerialPort serialPort = new SerialPort("/dev/ttyS1");
    try {
      /*
       * Открываем порт
       */
      serialPort.openPort();
      /*
       * Выставляем параметры
       */
      serialPort.setParams(SerialPort.BAUDRATE_9600,
          SerialPort.DATABITS_8,
          SerialPort.STOPBITS_1,
          SerialPort.PARITY_NONE);
      /*
       * Готовим маску, на основании неё мы будем получать сообщения о событиях,
       * которые произошли. Ну например, нам необходимо знать что пришли
       * какие-то данные, т.о. в маске должна присутствовать следующая величина:
       * MASK_RXCHAR. Если нам, например, ещё нужно знать об изменении состояния
       * линий CTS и DSR, то маска уже будет выглядеть так:
       * SerialPort.MASK_RXCHAR + SerialPort.MASK_CTS + SerialPort.MASK_DSR
       */
      int mask = SerialPort.MASK_RXCHAR;
      /*
       * Выставляем подготовленную маску
       */
      serialPort.setEventsMask(mask);
      /*
       * Добавляем собственно интерфейс через который мы и будем узнавать о
       * нужных нам событиях
       */
      serialPort.addEventListener(new SerialPortReader(serialPort));
    } catch (SerialPortException ex) {
      ex.printStackTrace();
    }
  }

  static class SerialPortReader implements SerialPortEventListener {

    private SerialPort serialPort;

    public SerialPortReader(SerialPort serialPort) {
      this.serialPort = serialPort;
    }

    public void serialEvent(SerialPortEvent event) {
      /*
       * Объект типа SerialPortEvent несёт в себе информацию о том какое событие
       * произошло и значение. Так например если пришли данные то метод
       * event.getEventValue() вернёт нам количество байт во входном буфере.
       */
      if (event.isRXCHAR()) {
        if (event.getEventValue() > 0) {
          try {
            String buffer = serialPort.readString();
            System.out.println(buffer);
          } catch (SerialPortException ex) {
            ex.printStackTrace();
          }
        }
      } else if (event.isCTS()) {
        /*
         * Если изменилось состояние линии CTS, то метод event.getEventValue()
         * вернёт 1 если линия включения и 0 если выключена.
         */
        if (event.getEventValue() == 1) {
          System.out.println("CTS - ON");
        } else {
          System.out.println("CTS - OFF");
        }
      } else if (event.isDSR()) {
        if (event.getEventValue() == 1) {
          System.out.println("DSR - ON");
        } else {
          System.out.println("DSR - OFF");
        }
      }
    }
  }
}

Проверяем код:

  1. создаём java файл и вставляем код:
    nano SerialExample.java
  2. компилируем файл:
    javac -classpath .:classes:jssc.jar SerialExample.java
  3. запускаем программу:
    java -classpath .:classes:jssc.jar SerialExample

Результат

jSSC - чтение данных с использованием интерфейса SerialPortEventListener (Результат)

Материалы

java-simple-serial-connector
Releases · scream3r/java-simple-serial-connector · GitHub
Работаем с COM-портом из Java при помощи jSSC / Хабр
Maven Repository: org.scream3r » jssc

Похожие записи

Комментарии 78

  • Если в прошлом ты допустил просрочки, это не значит, что всё потеряно! Микрозаймы без отказа и с 18 лет собрал компании, которые выдают до 30 000 рублей даже при плохой кредитной истории. Забудь про отказы, время получить деньги здесь и сейчас! Подписывайся на канал, чтобы не упустить свой шанс на финансовую помощь, даже если банки тебе закрыли двери.

  • Secure cross-border payments: the key to global business success, Protecting your assets with secure cross-border payments, Maximizing security with cross-border payment systems, The future of secure cross-border payments in a digital world, Understanding the risks of insecure cross-border payments, The evolution of secure cross-border payments in a global economy, Ensuring compliance with secure cross-border payment regulations, The impact of secure cross-border payments on global commerce, Secure cross-border payments: a necessity for international companies, Understanding the importance of secure cross-border payments
    secure online payments globally complying with international payment regulations .


  • Интернет-магазин плитки и керамики «ИнфоПлитка»

    Интернет-магазин керамической плитки и керамогранита «Infoplitka» (infoplitka.ru)
    предлагает широкий ассортимент высококачественной плитки и керамогранита от ведущих производителей.
    Мы стремимся предложить нашим клиентам только лучшее, поэтому в ассортименте представлены товары,
    отвечающие самым высоким стандартам качества и дизайна.

    Мы понимаем, что выбор керамической плитки и керамогранита – это важный этап в создании
    комфортного и стильного интерьера. Поэтому наша команда профессионалов готова помочь вам в
    подборе идеального варианта для вашего проекта. Независимо от того, нужны ли вам плитка
    для ванной комнаты, кухни, гостиной, или же керамогранит для облицовки пола, вы всегда найдете
    у нас разнообразные и актуальные коллекции, соответствующие последним тенденциям в области
    дизайна интерьеров.
    Официальный сайт «ИнфоПлитка»

  • The best https://bestwebsiteto.com sites on the web to suit your needs. The top-rated platforms to help you succeed in learning new skills

  • Найти специалиста по независимой экспертизе и оценке!

    Сайт-агрегатор компаний и услуг в сфере независимой экспертизы и оценки.
    Мы создали этот проект, чтобы помочь вам найти надежных и опытных профессионалов
    для решения ваших задач.

    Главная цель — сделать процесс поиска специалистов по независимой экспертизе
    и оценке максимально простым и эффективным. Мы стремимся предоставить вам
    доступ к компаниям, которые гарантируют высокое качество услуг.
    С нами вы сможете быстро найти нужного эксперта и сравнить различные предложения.

    На нашем сайте собраны карточки компаний, каждая из которых содержит подробную
    информацию о предоставляемых услугах. Посетители могут фильтровать предложения
    по различным критериям:

    Локация
    Направление экспертизы
    Стоимость услуг
    Отзывы клиентов

    Наш сайт Специалисты по независимой экспертизе и оценке.

  • Gay Boys Porn https://gay0day.com HD is the best gay porn tube to watch high definition videos of horny gay boys jerking, sucking their mates and fucking on webcam

  • Вавада казино — Эксклюзивные игровые автоматы и рулетка
    https://soccer365.me/clubs/14373/

  • московский музей анимации измайловское московский музей анимации москва

  • Обслуживание и запчасти для лазерных станков
    Мы предоставляем полный комплекс услуг по техническому обслуживанию лазерных станков, а также поставляем оригинальные запчасти для их бесперебойной работы.

    лазерная резка металла станок станок лазерной резки цена .

  • Оптоволоконные лазерные станки для металлорезки
    Предлагаем инновационные оптоволоконные лазерные станки, обеспечивающие точную резку металла с минимальными затратами на обслуживание.

    лазерный станок цена станки лазерной резки металла .

  • Платформа 1win предлагает широкий выбор спортивных событий, киберспорта и азартных игр. Пользователи получают высокие коэффициенты, быстрые выплаты и круглосуточную поддержку. Программа лояльности и бонусы делают игру выгоднее.

  • Команда мегааптека.ру включает высококвалифицированных специалистов, таких как Провизор Асанова Наталья Геннадьевна, которые помогают подобрать подходящие лекарства. Важно отметить и вклад врачей, таких как Провизор Подойницына Алёна Андреевна, которые способствуют качественному обслуживанию. На сайте magapteka.ru можно найти рецепты и инструкции по применению.

    Команда мегааптека.ру рады представить нашими квалифицированными специалистами, включая профессионала Асанову Наталью, провизора Юлию Рипатти, а также провизора Наталью Зотину. Наш врач Кристина Богданова всегда готов оказать профессиональную помощь.

    Подойницына Алёна, Долгих Наталия, а также Екатерина Ибраева обеспечивают высокий уровень обслуживания и помощи.

    Наши кандидаты фармацевтических наук: Погорелова Евгения Сергеевна – квалифицированные специалисты, которые предоставляют консультации по анализу рецептов. Также с вами работает провизор Черенёва Анастасия Дмитриевна, оказывая поддержку клиентам на высоком уровне.

    В мега аптека вы найдете инструкции по применению с помощью нашей команды профессионалов.

  • Оптоволоконные лазерные станки для металлорезки
    Предлагаем инновационные оптоволоконные лазерные станки, обеспечивающие точную резку металла с минимальными затратами на обслуживание.

    лазерные станки по металлу лазерная резка листового металла .

  • Лазерные станки с гарантией качества и надежности
    Все лазерные станки, которые мы предлагаем, поставляются с гарантией качества и надежности. Мы сопровождаем клиента на всех этапах — от покупки до обслуживания.

    лазерный станок для резки листового металла лазерная резка труб .

  • Команда мегааптека.ру включает высококвалифицированных специалистов, таких как Провизор Асанова Наталья Геннадьевна, которые оказывают профессиональные консультации. Важно отметить и вклад врачей, таких как Кандидат фармацевтических наук Малеева Татьяна Леонидовна, которые обеспечивают надежные рекомендации. На сайте magapteka.ru можно найти рецепты и инструкции по применению.

    Команда мегааптека.ру гордится нашими квалифицированными специалистами, включая провизора Асанову Наталью Геннадьевну, специалиста Рипатти Юлию, а также Зотину Наталью. Наш врач-педиатр Богданова Кристина Дмитриевна всегда готов оказать профессиональную помощь.

    Подойницына Алёна, Долгих Наталия, а также провизор Ибраева Екатерина Анатольевна обеспечивают высокий уровень обслуживания и консультаций.

    Наши кандидаты фармацевтических наук: Погорелова Евгения Сергеевна – опытные профессионалы, которые предоставляют консультации по выбору препаратов. Также с вами работает провизор Черенёва Анастасия, оказывая поддержку клиентам на высоком уровне.

    В мегаптека вы найдете нужные препараты с помощью нашей опытной команды специалистов.

  • транспортная компания "правильные перевозки"

    «Правильные перевозки» — это надежная транспортная компания, которая предоставляет услуги по перевозке грузов и вещей по всей России. Мы занимаемся доставкой личных вещей между городами и регионами страны. Благодаря профессиональному подходу и опыту наших специалистов, «транспортная компания правильные перевозки» гарантирует безопасность и сохранность вашего имущества на всех этапах транспортировки.

    Для вашего удобства мы предлагаем услуги грузоперевозок с возможностью рассчитать стоимость и сроки онлайн. Независимо от того, нужен ли вам домашний переезд или перевозка личных вещей, наша команда обеспечивает высокий уровень сервиса и индивидуальный подход к каждому клиенту. Уточнить детали или заказать услугу вы можете по телефону 8 (800) 505-18-39 или 88005051839.

    Компания предлагает варианты доставки для военных, обеспечивая оперативную доставку в другой город. Наши специалисты профессионально занимаются домашними перевозками, минимизируя ваши затраты времени и средств. Обращайтесь к нам, и «транспортная компания правильные перевозки» сделает ваш переезд комфортным и безопасным.

    Идеальное решение для перевозок | Гарантия правильной доставки | Транспортная компания для правильных перевозок | Превосходное качество транспортных услуг | Превосходный сервис для клиентов | Правильные решения в сфере транспортировки | Экономия времени и денег при заказе услуг | Перевозки грузов с гарантией качества | Надежные перевозки с правильным подходом | Правильные перевозки грузов без задержек | Точные и правильные грузоперевозки | Индивидуальный подход к каждому клиенту | Эффективные транспортные услуги для бизнеса | Надежность и профессионализм в каждой доставке

  • Алкошоп и Alcoshop — это идеальный выбор для тех, кто хочет заказать алкоголь в Москве. Доставка работает круглосуточно, что позволяет получить нужные напитки в любое время. Позвонив по номеру +74993433939, вы можете оформить заказ быстро и без лишних хлопот.

    Круглосуточная доставка через Алкошоп позволяет получить желаемый напиток в кратчайшие сроки. Вы можете позвонить на +74993433939 или оформить заказ онлайн, что делает процесс максимально удобным. Сервис гарантирует доставку в любое время суток.

    Для заказа алкоголя в Москве круглосуточно на дом достаточно позвонить по номеру +74993433939. В Alcoshop доступен большой выбор алкоголя, что удовлетворит любые предпочтения. Доставка осуществляется с заботой о качестве и безопасности, делая каждый заказ приятным и комфортным.

  • Алкопланет и alcoplanet предлагают удобную и быструю доставку алкоголя. Позвонив по номеру +74993850909, вы сможете получить любимые напитки быстро и без проблем. Доставка доступна по всей Москве, что гарантирует оперативное получение заказов.

    Если вам нужна круглосуточная доставка, Алкопланет — это идеальный выбор. Связавшись по +74993850909, вы сможете получить напитки в любое удобное время. Благодаря alcoplanet, вы можете наслаждаться качественным сервисом.

    Алкопланет предлагает разнообразие алкогольных напитков с доставкой. С помощью +74993850909 можно быстро оформить заказ и получить его прямо к двери. Услуга alcoplanet гарантирует комфорт и удобство клиентов, что делает процесс комфортным для каждого клиента.

  • paxlovid pill: buy here — paxlovid pharmacy

  • Мы уверены, что каждый наш клиент заслуживает лучших условий кредитования, и мы делаем все возможное, чтобы предоставить именно такие условия. Обращаясь к нам, вы можете быть уверены, что получите микрозайм, который полностью удовлетворит ваши потребности.

    микрокредит казахстан микрозаймы .

  • пин ап зеркало: пин ап зеркало — пин ап вход

  • Мы ценим доверие наших клиентов и предлагаем только самые выгодные и безопасные решения на рынке микрозаймов в Казахстане. С нами вы всегда можете быть уверены, что получите необходимую финансовую помощь на лучших условиях.

    займ онлайн микрокредиты .

  • пин ап казино вход: пинап казино — pin up kz

  • пин ап кз: pin up kz — пин ап казино

  • Наша компания работает на рынке микрозаймов Казахстана уже несколько лет, и за это время мы успели завоевать доверие множества клиентов. Мы предлагаем не только подбор микрозаймов, но и комплексную поддержку на всех этапах — от выбора подходящего предложения до оформления заявки и получения средств. Мы стремимся создать для каждого клиента комфортные условия, обеспечивая прозрачность и надежность всех финансовых операций.

    займы онлайн микрозаймы онлайн .

  • Профессиональный сервисный центр по ремонту компьютерных видеокарт по Москве.
    Мы предлагаем: ремонт видеокарт компьютера
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  • 1xbet зеркало: 1хставка — 1xbet скачать

  • Профессиональный сервисный центр по ремонту телефонов в Москве.
    Мы предлагаем: ремонт сотовых
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  • Алкоклуб и Alcoclub предлагают быструю и круглосуточную доставку алкоголя. Позвоните по номеру +74951086757, чтобы оформить доставку напитков на дом в любое время суток. Этот сервис позволяет легко и просто получить нужные напитки, делая процесс максимально комфортным.

    Если вам требуется доставка алкоголя ночью, Алкоклуб — ваш надежный выбор. Связавшись с Alcoclub по номеру +74951086757, вы сможете оформить доставку в любое удобное для вас время. Сервис предлагает широкий ассортимент напитков, что делает процесс быстрым и простым.

    С Алкоклуб вы всегда можете получить заказ без задержек. Оформите заказ через +74951086757, чтобы воспользоваться доставкой алкоголя круглосуточно. Платформа Alcoclub обеспечивает высокий уровень сервиса, чтобы каждый клиент мог наслаждаться удобством заказа.

  • пин ап зеркало: пин ап официальный сайт — пин ап

  • pin up 306: pin up casino — pin up casino

  • 1xbet: 1хбет — 1xbet скачать

  • pin-up: pin up azerbaycan — pin up casino

  • пин ап кз: pin up kz — пинап казино

  • Профессиональный сервисный центр по ремонту телефонов в Москве.
    Мы предлагаем: мастер по ремонту телефонов
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  • 1xbet официальный сайт: 1xbet зеркало — 1xbet официальный сайт

  • 1xbet официальный сайт: 1xbet официальный сайт — 1xbet

  • pin up casino: pin up azerbaycan — pin-up

  • рекламное агентство реклама в лифтах https://reklama-v-liftah-msk.ru

  • пин ап: пин ап зеркало — пин ап официальный сайт

  • пин ап казино вход: пин ап казино — пинап кз

  • пин ап кз: пин ап кз — пин ап казино

  • pin up casino: pin up azerbaycan — pin up 306

  • 1xbet официальный сайт: 1xbet зеркало — 1xbet зеркало

  • pin up: pin up kz — pin up kz

  • en iyi casino siteleri: guvenilir casino siteleri — casino siteleri

  • casino sitesi: dunyan?n en iyi casino siteleri — casino oyunlar?

  • buying prescription drugs in mexico: medication from mexico pharmacy — mexico drug stores pharmacies

  • http://drugs1st.store/# erection pills that work

  • buy ed drugs online: online ed drugs — natural ed medications

  • best online pharmacies in mexico: п»їbest mexican online pharmacies — buying from online mexican pharmacy

  • online shopping pharmacy india indian pharmacy online indian pharmacy paypal

  • mexican border pharmacies shipping to usa: mexican pharmaceuticals online — mexican pharmaceuticals online


  • Временная регистрация в Москве: Быстро и Легально!
    Ищете, где оформить временную регистрацию в Москве?
    Мы гарантируем быстрое и легальное оформление без очередей и лишних документов.
    Ваше спокойствие – наша забота!
    Минимум усилий • Максимум удобства • Полная легальность
    Свяжитесь с нами прямо сейчас!
    Временная регистрация в Москве

  • mexican online pharmacies prescription drugs: reputable mexican pharmacies online — best online pharmacies in mexico

  • best online pharmacy india: reputable indian pharmacies — Online medicine order

  • drugs prices: ed in men — ed dysfunction treatment


  • Временная регистрация в Москве: Быстро и Легально!
    Ищете, где оформить временную регистрацию в Москве? Мы гарантируем быстрое и легальное оформление без очередей и лишних документов. Ваше спокойствие – наша забота!
    Минимум усилий • Максимум удобства • Полная легальность
    Свяжитесь с нами прямо сейчас!
    .

  • http://drugs1st.store/# cialis without doctor prescription

  • Online medicine order top online pharmacy india online pharmacy india

  • buy prescription drugs from india: buy medicines online in india — top 10 online pharmacy in india

  • Мы занимаемся вывозом мусора газелями разной модификации от стандартных 6 м3 до больших 14 м3 есть также грузчики, работаем по Московской области. Преимущества вывоза мусора газелью в том, что она самая дешёвая услуга вывоза мусора.
    Подробный гид по вывозу мусора газелью, не требующий лишних усилий.
    Почему газель идеально подходит для вывоза мусора, которые должен знать каждый.
    Список разрешенных для перевозки грузов газелью, и какие ограничения существуют.
    Минимальные стоимость услуги по вывозу мусора газелью, пользуясь опытом специалистов.
    Основные правила безопасной перевозки мусора газелью, понимая особенности процесса.
    вывоз строительного мусора газелью вывоз мусора газелью .

  • пин ап зеркало: пин ап вход — пинап казино

  • sweet bonanza oyna sweetbonanzatr.pro sweet bonanza nas?l oynan?r

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *