UART (Universal Asynchronous Receiver/Transmitter) — универсальный асинхронный приёмопередатчик, интерфейс для связи цифровых устройств, предназначенный для передачи данных в последовательной форме. Очень распространён и весьма востребован, имеет аппаратную реализацию во многих микроконтроллерах (Wiki).
Pi4J предоставляет возможность работы с UART из Java. Все классы и интерфейсы для инициализации и работы с последовательным портом находятся в пакете com.pi4j.io.serial.*;
.
Если вы ещё не установили Pi4J переходите на страницу Установка Pi4J на Raspberry Pi и Orange Pi, Banana Pi.
Внимание:
Всегда помните, что логические уровни сигнала шины GPIO составляет 3.3 В и использование сигналов с уровнем 5 В недопустимо!
- 1 Настройка UART на Raspberry Pi
- 2 Настройка UART на Orange Pi под Armbian
- 3 Интерфейс Serial
- 3.1 open(String, int, int, int, int, int)
- 3.2 open(String, int)
- 3.3 open(String, Baud, DataBits, Parity, StopBits, FlowControl)
- 3.4 open(SerialConfig)
- 3.5 close()
- 3.6 isOpen()
- 3.7 isClosed()
- 3.8 flush()
- 3.9 discardInput()
- 3.10 discardOutput()
- 3.11 discardAll()
- 3.12 sendBreak()
- 3.13 sendBreak(int)
- 3.14 setBreak(boolean)
- 3.15 setRTS(boolean)
- 3.16 setDTR(boolean)
- 3.17 getRTS()
- 3.18 getDTR()
- 3.19 getCTS()
- 3.20 getDSR()
- 3.21 getRI()
- 3.22 getCD()
- 3.23 addListener(SerialDataEventListener…)
- 3.24 removeListener(SerialDataEventListener…)
- 3.25 getFileDescriptor()
- 3.26 getInputStream()
- 3.27 getOutputStream()
- 3.28 isBufferingDataReceived()
- 3.29 setBufferingDataReceived(boolean)
- 4 Интерфейс SerialDataReader
- 5 Интерфейс SerialDataWriter
- 6 Подключение PL2303 к Orange Pi One
- 7 Похожие записи
Настройка UART на Raspberry Pi
По умолчанию последовательный порт на Raspberry Pi настроен как консольный порт для связи с ОС Linux. Если вы хотите использовать этот последовательный порт, вы должны отключить ОС от использования этого порта.
В Raspberry Pi введите следующую команду в окне терминала, чтобы включить UART и отключить консоль на последовательный порт,
sudo raspi-config
Выберите «Interfacing Options»
После «Interfacing Options» выберите «Serial», чтобы включить UART
Затем выберите «No», чтобы отключить консоль на последовательный порт
В конце попросит включить аппаратный последовательный порт, выберите «Да»
Всё, UART включен, консоль отключена
Перезагрузите Raspberry Pi.
Настройка UART на Orange Pi под Armbian
Все модели Orange Pi на базе SoC Allwinner H3 имеют по 4 UART порта. Один отдельный (UART0), что используется как консольный порт для связи с ОС Linux, а остальные находятся на гребёнке GPIO (UART1, UART2 и UART3). По умолчанию включён только UART0. Чтобы использовать и остальные, для начала необходимо включить их. UART2 так-же можно использовать как JTAG, а UART3 как SPI.
Orange Pi Zero, Orange Pi Zero Plus, Orange Pi Zero Plus 2 и Orange Pi R1 имеют по 3 UART порта.
И так, для начала сделаем резервную копию script.bin
, чтобы, в случае чего, смогли вернуть обратно все настройки:
sudo cp /boot/script.bin /boot/script.bak
Чтобы редактировать бинарный файл script.bin
, нужно конвертировать в редактируемый файл fex
:
sudo bin2fex /boot/script.bin /boot/script.fex
Редактируем файл script.fex
с помощью утилиты nano:
sudo nano /boot/script.fex
Находим разделы [uart0] ... [uart3]
:
[uart0] uart_used = 1 uart_port = 0 uart_type = 2 uart_tx = port:PA04<2><1><default><default> uart_rx = port:PA05<2><1><default><default> [uart1] uart_used = 0 uart_port = 1 uart_type = 4 uart_tx = port:PG06<2><1><default><default> uart_rx = port:PG07<2><1><default><default> uart_rts = port:PG08<2><1><default><default> uart_cts = port:PG09<2><1><default><default> [uart2] uart_used = 0 uart_port = 2 uart_type = 4 uart_tx = port:PA00<2><1><default><default> uart_rx = port:PA01<2><1><default><default> uart_rts = port:PA02<2><1><default><default> uart_cts = port:PA03<2><1><default><default> [uart3] uart_used = 0 uart_port = 3 uart_type = 4 uart_tx = port:PA13<3><1><default><default> uart_rx = port:PA14<3><1><default><default> uart_rts = port:PA15<3><1><default><default> uart_cts = port:PA16<3><1><default><default>
Включаем нужный UART порт, для этого нужно установить параметр uart_used = 1
. Я включил все порты, но это не рекомендуется:
[uart0] uart_used = 1 uart_port = 0 uart_type = 2 uart_tx = port:PA04<2><1><default><default> uart_rx = port:PA05<2><1><default><default> [uart1] uart_used = 1 uart_port = 1 uart_type = 4 uart_tx = port:PG06<2><1><default><default> uart_rx = port:PG07<2><1><default><default> uart_rts = port:PG08<2><1><default><default> uart_cts = port:PG09<2><1><default><default> [uart2] uart_used = 1 uart_port = 2 uart_type = 4 uart_tx = port:PA00<2><1><default><default> uart_rx = port:PA01<2><1><default><default> uart_rts = port:PA02<2><1><default><default> uart_cts = port:PA03<2><1><default><default> [uart3] uart_used = 1 uart_port = 3 uart_type = 4 uart_tx = port:PA13<3><1><default><default> uart_rx = port:PA14<3><1><default><default> uart_rts = port:PA15<3><1><default><default> uart_cts = port:PA16<3><1><default><default>
Сохраняем и закрываем файл:
Ctrl X, Y (Yes), Enter
Конвертируем измененный файл script.fex
обратно в script.bin
:
sudo fex2bin /boot/script.fex /boot/script.bin
Перезагружаем ОС:
sudo reboot
Проверяем доступные последовательные порты под Linux:
setserial -g /dev/ttyS[0123]
Интерфейс Serial
Этот интерфейс предоставляет набор функций для настройки и инициализации последовательной связи. Ниже вы найдёте описание всех методов этого интерфейса.
public interface Serial extends SerialDataReader, SerialDataWriter, AutoCloseable {}
open(String, int, int, int, int, int)
Открывает и инициализирует последовательное соединение и устанавливает параметры связи.
public void open( String device, int baud, int dataBits, int parity, int stopBits, int flowControl) throws IOException;
Параметры
String device
— Адрес устройства последовательного порта. Вы можете использовать константу DEFAULT_COM_PORT
, если хотите получить доступ к последовательному порту по умолчанию. ВНИМАНИЕ: параметр device
может содержать не более 128 символов.
int baud
— Скорость передачи данных для последовательного порта. (Пользовательская скорость передачи не поддерживается).
int dataBits
— Биты данных. (5, 6, 7, 8).
int parity
— Параметр четности. (None, Event, Odd, Mark, Space).
int stopBits
— Стоповые биты. (1, 2).
int flowControl
— Управление потоком передачи данных. (none, hardware, software).
Бросает
IOException
— в случае какой-либо ошибки.
open(String, int)
Открывает и инициализирует последовательное соединение и устанавливает параметры связи. Этот метод будет использовать следующие параметры последовательной конфигурации по умолчанию:
- DATA BITS = 8
- PARITY = NONE
- STOP BITS = 1
- FLOW CONTROL = NONE
public void open(String device, int baud) throws IOException;
Параметры
String device
— Адрес устройства последовательного порта. Вы можете использовать константу DEFAULT_COM_PORT
, если хотите получить доступ к последовательному порту по умолчанию. ВНИМАНИЕ: параметр device
может содержать не более 128 символов.
int baud
— Скорость передачи данных для последовательного порта. (Пользовательская скорость передачи не поддерживается).
Бросает
IOException
— в случае какой-либо ошибки.
open(String, Baud, DataBits, Parity, StopBits, FlowControl)
Открывает и инициализирует последовательное соединение и устанавливает параметры связи.
public void open( String device, Baud baud, DataBits dataBits, Parity parity, StopBits stopBits, FlowControl flowControl) throws IOException;
Параметры
String device
— Адрес устройства последовательного порта. Вы можете использовать константу DEFAULT_COM_PORT
, если хотите получить доступ к последовательному порту по умолчанию. ВНИМАНИЕ: параметр device
может содержать не более 128 символов.
Baud baud
— Скорость передачи данных для последовательного порта. (Пользовательская скорость передачи не поддерживается).
DataBits dataBits
— Биты данных. (5, 6, 7, 8).
Parity parity
— Параметр четности. (None, Event, Odd, Mark, Space).
StopBits stopBits
— Стоповые биты. (1, 2).
FlowControl flowControl
— Управление потоком передачи данных. (none, hardware, software).
Бросает
IOException
— в случае какой-либо ошибки.
open(SerialConfig)
Открывает и инициализирует последовательное соединение и устанавливает параметры связи.
public void open(SerialConfig serialConfig) throws IOException;
Параметры
SerialConfig serialConfig
— Объект конфигурации последовательной связи, содержащий адрес устройства, скорость передачи данных, бит данных, контроль четности, стоп-биты и параметры управления потоком.
Бросает
IOException
— в случае какой-либо ошибки.
close()
Этот метод вызывается, чтобы закрыть текущий открытый последовательный порт.
public void close() throws IllegalStateException, IOException;
Бросает
IllegalStateException
— если последовательный порт еще не открыт.
IOException
— в случае какой-либо ошибки.
isOpen()
Этот метод вызывается, чтобы определить, если последовательный порт открыт.
public boolean isOpen();
Возвращает
значение true
, если последовательный порт уже открыт.
isClosed()
Этот метод вызывается, чтобы определить, если последовательный порт закрыт.
public boolean isClosed();
Возвращает
значение true
, если последовательный порт находится в закрытом состоянии.
flush()
Принудительная передача любых оставшихся данных в буфере передачи последовательного порт. Обратите внимание, что это не заставляет передавать данные, но отбрасывает их.
public void flush() throws IllegalStateException, IOException;
Бросает
IllegalStateException
— если последовательный порт еще не открыт.
IOException
— в случае какой-либо ошибки.
discardInput()
Отбрасывает любые данные в буфере последовательного приема (ввода).
public void discardInput() throws IllegalStateException, IOException;
Бросает
IllegalStateException
— если последовательный порт еще не открыт.
IOException
— в случае какой-либо ошибки.
discardOutput()
Отбрасывает любые данные в последовательном буфере передачи (вывода).
public void discardOutput() throws IllegalStateException, IOException;
Бросает
IllegalStateException
— если последовательный порт еще не открыт.
IOException
— в случае какой-либо ошибки.
discardAll()
Отбрасывает любые данные в буферах последовательного приема и передачи.
public void discardAll() throws IllegalStateException, IOException;
Бросает
IllegalStateException
— если последовательный порт еще не открыт.
IOException
— в случае какой-либо ошибки.
sendBreak()
Отправляет сигнал BREAK подключенному устройству не менее 0.25 секунды и не более 0.5 секунд
public void sendBreak() throws IllegalStateException, IOException;
Бросает
IllegalStateException
— если последовательный порт еще не открыт.
IOException
— в случае какой-либо ошибки.
sendBreak(int)
public void sendBreak(int duration) throws IllegalStateException, IOException;
Параметры
int duration
— Длительность (в миллисекундах) для отправки сигнала BREAK.
Бросает
IllegalStateException
— если последовательный порт еще не открыт.
IOException
— в случае какой-либо ошибки.
setBreak(boolean)
Отправляет постоянный сигнал BREAK на подключенное устройство. (включение/выключение сигнала BREAK) При включении будет посылать непрерывный поток нулевых битов, а передача других данных невозможна.
public void setBreak(boolean enabled) throws IllegalStateException, IOException;
Параметры
boolean enabled
— Состояние включения или выключения для управления сигналом BREAK.
Бросает
IllegalStateException
— если последовательный порт еще не открыт.
IOException
— в случае какой-либо ошибки.
setRTS(boolean)
Управляет состоянием контакта RTS (запрос-на-отправку). Когда включено, это приведет к тому, что вывод RTS будет находиться в состоянии HIGH.
public void setRTS(boolean enabled) throws IllegalStateException, IOException;
Параметры
boolean enabled
— Включить или отключить состояние, чтобы контролировать состояние контакта RTS.
Бросает
IllegalStateException
— если последовательный порт еще не открыт.
IOException
— в случае какой-либо ошибки.
setDTR(boolean)
Контролирует состояние вывода DTR (состояние готовности к передаче данных). При включении этого вывод DTR будет установлен в высокое состояние.
public void setDTR(boolean enabled) throws IllegalStateException, IOException;
Параметры
boolean enabled
— Включить или отключить состояние, чтобы контролировать состояние контакта RTS.
Бросает
IllegalStateException
— если последовательный порт еще не открыт.
IOException
— в случае какой-либо ошибки.
getRTS()
Возвращает состояние вывода RTS (запрос на отправку).
public boolean getRTS() throws IllegalStateException, IOException;
Бросает
IllegalStateException
— если последовательный порт еще не открыт.
IOException
— в случае какой-либо ошибки.
getDTR()
Возвращает состояние вывода DTR (состояние готовности к передаче данных).
public boolean getDTR() throws IllegalStateException, IOException;
Бросает
IllegalStateException
— если последовательный порт еще не открыт.
IOException
— в случае какой-либо ошибки.
getCTS()
Возвращает состояние вывода CTS (clean-to-send).
public boolean getCTS() throws IllegalStateException, IOException;
Бросает
IllegalStateException
— если последовательный порт еще не открыт.
IOException
— в случае какой-либо ошибки.
getDSR()
Возвращает состояние вывода DSR (data-set-ready).
public boolean getDSR() throws IllegalStateException, IOException;
Бросает
IllegalStateException
— если последовательный порт еще не открыт.
IOException
— в случае какой-либо ошибки.
getRI()
Возвращает состояние вывода RI (ring-indicator).
public boolean getRI() throws IllegalStateException, IOException;
Бросает
IllegalStateException
— если последовательный порт еще не открыт.
IOException
— в случае какой-либо ошибки.
getCD()
Возвращает состояние вывода CD (carrier-detect).
public boolean getCD() throws IllegalStateException, IOException;
Бросает
IllegalStateException
— если последовательный порт еще не открыт.
IOException
— в случае какой-либо ошибки.
addListener(SerialDataEventListener…)
Метод для регистрации слушателя для событий последовательных данных (приём данных).
public void addListener(SerialDataEventListener... listener);
Параметры
SerialDataEventListener... listener
— Экземпляр класса, который реализует интерфейс SerialListener.
removeListener(SerialDataEventListener…)
Метод для отмены регистрации слушателя для событий последовательных данных (приём данных).
public void removeListener(SerialDataEventListener... listener);
Параметры
SerialDataEventListener... listener
— Экземпляр класса, который реализует интерфейс SerialListener.
getFileDescriptor()
Этот метод возвращает дескриптор файла последовательного устройства
public int getFileDescriptor();
getInputStream()
Этот метод возвращает поток входных данных для буфера приема последовательного порта
public InputStream getInputStream();
getOutputStream()
Этот метод возвращает поток выходных данных для буфера передачи последовательного порта
public InputStream getOutputStream();
isBufferingDataReceived()
Этот метод возвращает состояние буферизации данных, полученных от последовательного устройства / порта.
public boolean isBufferingDataReceived();
Возвращает
true
, если включена буферизация; иначе false
setBufferingDataReceived(boolean)
Этот метод управляет состоянием буферизации данных, полученных от последовательного устройства / порта.
Если состояние буферизации включено, все байты данных, полученные от последовательного порта, будут скопированы в буфер приема данных. Вы можете использовать методы getInputStream()
или read()
для доступа к этим данным. Данные также будут доступны через событие SerialDataEvent
. Важно знать, что если вы используете буферизацию данных, данные будут продолжать скапливаться в памяти, пока ваша программа не освободит поток данных.
Если состояние буферизации отключено, то все байты данных, полученные от последовательного порта, НЕ будут скопированы в буфер приема данных, но будут включены в полезную нагрузку данных события SerialDataEvent
. Если ваша программа не использует данные, полученные от последовательного порта, тогда вы должны отключить состояние буферизации данных, чтобы предотвратить утечку памяти.
public void setBufferingDataReceived(boolean enabled);
Параметры
boolean enabled
— Устанавливает состояние поведения буферизации.
Интерфейс SerialDataReader
Интерфейс SerialDataReader
предоставляет набор функций для чтения данных из последовательного порта.
public int available() throws IllegalStateException, IOException; public void discardData() throws IllegalStateException, IOException; public byte[] read() throws IllegalStateException, IOException; public byte[] read(int length) throws IllegalStateException, IOException; public void read(ByteBuffer buffer) throws IllegalStateException, IOException; public void read(int length, ByteBuffer buffer) throws IllegalStateException, IOException; public void read(OutputStream stream) throws IllegalStateException, IOException; public void read(int length, OutputStream stream) throws IllegalStateException, IOException; public void read(Collection<ByteBuffer> collection) throws IllegalStateException, IOException; public void read(int length, Collection<ByteBuffer> collection) throws IllegalStateException, IOException; public CharBuffer read(Charset charset) throws IllegalStateException, IOException; public CharBuffer read(int length, Charset charset) throws IllegalStateException, IOException; public void read(Charset charset, Writer writer) throws IllegalStateException, IOException; public void read(int length, Charset charset, Writer writer) throws IllegalStateException, IOException;
Интерфейс SerialDataWriter
Интерфейс SerialDataWriter
предоставляет набор функций для записи данных в последовательный порт.
public void write(byte[] data, int offset, int length) throws IllegalStateException, IOException; public void write(byte ... data) throws IllegalStateException, IOException; public void write(byte[] ... data) throws IllegalStateException, IOException; public void write(ByteBuffer... data) throws IllegalStateException, IOException; public void write(InputStream input) throws IllegalStateException, IOException; public void write(Charset charset, char[] data, int offset, int length) throws IllegalStateException, IOException; public void write(Charset charset, char ... data) throws IllegalStateException, IOException; public void write(char ... data) throws IllegalStateException, IOException; public void write(Charset charset, CharBuffer... data) throws IllegalStateException, IOException; public void write(CharBuffer ... data) throws IllegalStateException, IOException; public void write(Charset charset, CharSequence ... data) throws IllegalStateException, IOException; public void write(CharSequence ... data) throws IllegalStateException, IOException; public void write(Charset charset, Collection<? extends CharSequence> data) throws IllegalStateException, IOException; public void write(Collection<? extends CharSequence> data) throws IllegalStateException, IOException; public void writeln(Charset charset, CharSequence ... data) throws IllegalStateException, IOException; public void writeln(CharSequence ... data) throws IllegalStateException, IOException; public void writeln(Charset charset, Collection<? extends CharSequence> data) throws IllegalStateException, IOException; public void writeln(Collection<? extends CharSequence> data) throws IllegalStateException, IOException;
Подключение PL2303 к Orange Pi One
Для начала нужно выбрать платформу, если у вас Raspberry Pi, тогда этого делать не надо.
PlatformManager.setPlatform(Platform.ORANGEPI);
Чтобы работать с последовательным портом нужно создать экземпляр класса Serial
с помощью утилиты SerialFactory
.
Serial serial = SerialFactory.createInstance();
Данные могут быть отправлены несколькими способами, самый простой способ — с использованием методов write(...)
и writeln(...)
. Также можно использовать и выходной поток OutputStream outputStream = serial.getOutputStream();
.
serial.write(data);
Прочесть полученные данные можно с помощью методов read(...)
, но в таком случае нужно постоянно проверять наличие данных в буффере. Лучще всего зарегистрировать слушатель SerialDataEventListener.
Слушатель SerialDataEventListener
— это уведомляемый о поступлении новых данных в последовательном пору объект. Чтобы слушатель смог реагировать на событие источника он должен быть им зарегистрирован, т.е. подключен к источнику. Listener
должен реализовывать метод dataReceived(...)
для получения и обработки уведомлений о событии.
Listener находится в постоянном ожидании, пока в источнике, в котором он зарегистрирован, не наступит соответствующее событие, при возникновении которого слушатель получает управление. Также слушателю передается объект события (Serial
который содержется в SerialDataEvent
), чтобы он смог правильно на него отреагировать. Таким образом, источник вызывает метод-обработчик события (public void dataReceived(SerialDataEvent event)
), определенный в классе, являющемся блоком прослушивания.
После обработки события слушатель возвращает управление. Таким образом, для обработки события вызываются только те слушатели, которые на него «подписались», т.е. были зарегистрированы источником.
serial.addListener(new SerialDataEventListener() { @Override public void dataReceived(SerialDataEvent event) { try { byte[] data = event.getSerial().read(); /* data - полученные данные */ } catch (IOException e) { e.printStackTrace(); } } });
Создаём объект конфигурации последовательной связи (SerialConfig
), содержащий адрес устройства, скорость передачи данных, бит данных, контроль четности, стоп-биты и параметры управления потоком.
SerialConfig config = new SerialConfig();
и задаём эти конфигурации.
config.device(OrangePiSerial.UART3_COM_PORT) .baud(Baud._9600) .dataBits(DataBits._8) .parity(Parity.NONE) .stopBits(StopBits._1) .flowControl(FlowControl.NONE);
С помощью метода open(...)
открываем UART порт.
serial.open(config);
Схема подключения
Чтобы проверить UART на Orange Pi, я подключил его к компьютеру через преобразователь PL2303. В этом случае используется порт UART3.
Пример программы
Эта программа получает по UART данные в виде текста и выводит данный текст в консоль, также выводит текст в шестнадцатеричном формате. Для отправки использовал Terminal v1.9b.
import com.pi4j.io.serial.Baud; import com.pi4j.io.serial.DataBits; import com.pi4j.io.serial.FlowControl; import com.pi4j.io.serial.OrangePiSerial; import com.pi4j.io.serial.Parity; import com.pi4j.io.serial.Serial; import com.pi4j.io.serial.SerialConfig; import com.pi4j.io.serial.SerialDataEvent; import com.pi4j.io.serial.SerialDataEventListener; import com.pi4j.io.serial.SerialFactory; import com.pi4j.io.serial.StopBits; import com.pi4j.platform.Platform; import com.pi4j.platform.PlatformManager; import com.pi4j.util.Console; public class PL2303OrangePiOne { public static void main(String args[]) { try { PlatformManager.setPlatform(Platform.ORANGEPI); Console console = new Console(); console.promptForExit(); Serial serial = SerialFactory.createInstance(); serial.addListener(new SerialDataEventListener() { @Override public void dataReceived(SerialDataEvent event) { try { console.println("[HEX DATA] " + event.getHexByteString("0x", " ", "")); console.println("[ASCII DATA] " + event.getAsciiString()); } catch (IOException e) { e.printStackTrace(); } } }); SerialConfig config = new SerialConfig(); config.device(OrangePiSerial.UART3_COM_PORT) .baud(Baud._9600) .dataBits(DataBits._8) .parity(Parity.NONE) .stopBits(StopBits._1) .flowControl(FlowControl.NONE); serial.open(config); console.waitForExit(); } catch (Exception e) { e.printStackTrace(); } } }
Проверяем код:
- создаём java файл и вставляем код;
nano PL2303OrangePiOne.java
- компилируем файл;
javac -classpath .:classes:/opt/pi4j/lib/'*' PL2303OrangePiOne.java
- запускаем программу.
sudo java -classpath .:classes:/opt/pi4j/lib/'*' PL2303OrangePiOne
Результат
Как мы видим данные получены и программа работает правильно.
В библиотеке pi4j, по крайней мере в той которая досталась мне, есть небольшой баг:
public static final java.lang.String UART0_COM_PORT = «/dev/ttyS0»;
public static final java.lang.String UART2_COM_PORT = «/dev/ttyS2»;
public static final java.lang.String UART3_COM_PORT = «/dev/ttyS3»;
public static final java.lang.String UART7_COM_PORT = «/dev/ttyS3»;
public static final java.lang.String DEFAULT_COM_PORT = «/dev/ttyS3»;
Соответственно либо исправлять схему подключения, либо переписывать библиотеку на /dev/ttyS1;
mostber http://mostbet1011.com.kg .
1win betting site http://1win11.com.ng .
мосбет казино https://www.mostbet1011.com.kg .
мостбет скачать андроид http://mostbet1004.com.kg .
1win nigeria https://www.1win11.com.ng .
1вин бет официальный сайт http://1win715.ru/ .
1вин сайт официальный 1вин сайт официальный .
1win бонус за приложение http://1win708.ru/ .
1вин официальный 1win114.com.kg .
мостбет скачать андроид http://www.mostbet781.ru .
Купить диплом любого университета!
Мы можем предложить документы учебных заведений, расположенных в любом регионе Российской Федерации.
diplomers.com/kupit-diplom-magistraturi-4
1вин регистрация https://1win705.ru/ .
mostbet casino mostbet casino .
mosbet http://www.mostbet781.ru .
мостбет зеркало мостбет зеркало .
1win кейсы https://www.agility.forum24.ru/?1-0-0-00000755-000-0-0-1742359870 .
jocuri de noroc online moldova jocuri de noroc online moldova .
1win мобильная версия сайта https://agility.forum24.ru/?1-0-0-00000755-000-0-0-1742359870 .
мостбет кыргызстан https://www.agility.forum24.ru/?1-0-0-00000756-000-0-0-1742360323 .
1win.com.ci 1win5002.ru .
Привет!
Для некоторых людей, приобрести диплом о высшем образовании — это острая необходимость, шанс получить достойную работу. Но для кого-то — это желание не терять огромное количество времени на учебу в ВУЗе. Что бы ни толкнуло вас на такой шаг, наша фирма готова помочь. Максимально быстро, профессионально и недорого сделаем диплом нового или старого образца на настоящих бланках со всеми необходимыми подписями и печатями.
Ключевая причина, почему люди прибегают к покупке документа, — получить определенную должность. Предположим, знания дают возможность кандидату устроиться на работу, однако документального подтверждения квалификации не имеется. При условии, что работодателю важно присутствие «корочки», риск потерять вакантное место достаточно высокий.
Заказать документ о получении высшего образования можно в нашем сервисе. Мы оказываем услуги по изготовлению и продаже документов об окончании любых ВУЗов Российской Федерации. Вы получите необходимый диплом по любым специальностям, включая документы СССР. Даем 100% гарантию, что при проверке документов работодателем, никаких подозрений не появится.
Ситуаций, которые вынуждают заказать диплом много. Кому-то срочно требуется работа, в итоге необходимо произвести хорошее впечатление на начальство на протяжении собеседования. Другие желают устроиться в престижную компанию, для того, чтобы повысить свой статус в социуме и в будущем начать собственное дело. Чтобы не тратить попусту годы жизни, а сразу начать удачную карьеру, используя врожденные таланты и приобретенные навыки, можно заказать диплом в онлайне. Вы станете полезным для социума, обретете финансовую стабильность в кратчайшие сроки- диплом о среднем образовании купить
1win войти 1win войти .
1win казино 1win казино .
казино онлайн kg http://ongame.forum24.ru/?1-18-0-00001219-000-0-0-1742360461/ .
программа 1с бухгалтерия цена программа 1с бухгалтерия цена .
масляные трансформаторы купить масляные трансформаторы купить .
перепланировка согласование перепланировка согласование .
1win сайт belbeer.borda.ru/?1-6-0-00001555-000-0-0-1742473542 .
1vin taksafonchik.borda.ru/?1-14-0-00002041-000-0-0 .
mosbet mosbet .
Заказ диплома через надежную фирму дарит ряд достоинств для покупателя. Это решение дает возможность сэкономить как личное время, так и существенные средства. Впрочем, плюсов значительно больше.Мы изготавливаем дипломы психологов, юристов, экономистов и любых других профессий. Дипломы производятся на подлинных бланках. Доступная стоимость сравнительно с серьезными затратами на обучение и проживание. Приобретение диплома об образовании из российского ВУЗа станет выгодным шагом.
Заказать диплом о высшем образовании: rusd-diplomj.ru/kupit-diplom-vuza-v-moskve-bistro-i-bezopasno/
1 win казино 1 win казино .
1vin 1vin .
служба поддержки мостбет номер телефона mostbet782.ru .
электрокарнизы для штор цена электрокарнизы для штор цена .
1win казино 1win823.ru .
мостбет казино войти https://www.mostbet783.ru .
1win официальный сайт http://www.1win810.ru .
вин 1 http://1win810.ru .
мост бет http://mostbet783.ru/ .
мостбет мобильная версия скачать http://mostbet784.ru .
Где купить диплом специалиста?
Купить диплом университета по выгодной цене можно, обратившись к надежной специализированной компании.: diplom5.com
скачать мостбет https://eisberg.forum24.ru/?1-0-0-00000327-000-0-0-1742579529 .
motbet http://www.taksafonchik.borda.ru/?1-14-0-00002042-000-0-0-1742473173 .
Приобрести документ ВУЗа вы можете в нашей компании в Москве. Мы предлагаем документы об окончании любых университетов Российской Федерации. Вы сможете получить диплом по любым специальностям, любого года выпуска, в том числе документы образца СССР. Даем 100% гарантию, что в случае проверки документа работодателем, каких-либо подозрений не появится. vodems.com/blogs/245/Купить-диплом-просто-быстро-доступно
скачат мостбет eisberg.forum24.ru/?1-0-0-00000327-000-0-0-1742579529 .
мостбет кыргызстан https://www.taksafonchik.borda.ru/?1-14-0-00002042-000-0-0-1742473173 .
Мы готовы предложить дипломы любой профессии по приятным ценам. Стараемся поддерживать для заказчиков адекватную ценовую политику. Для нас очень важно, чтобы дипломы были доступными для большого количества наших граждан.
Приобретение диплома, подтверждающего обучение в ВУЗе, — это выгодное решение. Приобрести диплом университета: diplomservis.com/kuplyu-diplom-13/
Мы изготавливаем дипломы психологов, юристов, экономистов и любых других профессий по доступным ценам. Всегда стараемся поддерживать для заказчиков адекватную ценовую политику. Для нас очень важно, чтобы документы были доступны для большинства граждан.
Заказ документа, подтверждающего обучение в университете, — это разумное решение. Приобрести диплом университета: diplompro.ru/kupit-diplom-texnikuma-nedorogo/
Где купить диплом по необходимой специальности?
Полученный диплом с необходимыми печатями и подписями отвечает стандартам, никто не сумеет отличить его от оригинала. Не откладывайте собственные мечты на несколько лет, реализуйте их с нами — отправьте заявку на изготовление диплома уже сегодня! Получить диплом о высшем образовании — легко! diplomh-40.ru/diplom-ob-obrazovanii-kupit-2/
Мы изготавливаем дипломы психологов, юристов, экономистов и любых других профессий по приятным ценам. Купить диплом геодезиста — kyc-diplom.com/diplomy-po-professii/kupit-diplom-geodezista.html
сайт 1win http://1win824.ru .
1win сайт вход https://1win825.ru/ .
1 win регистрация http://1win824.ru/ .
сайт 1win сайт 1win .
1win ru http://1win811.ru/ .
1win вход в личный кабинет https://1win826.ru/ .
игра 1вин http://1win812.ru .
мостбет скачать бесплатно https://mostbet785.ru/ .
1wi. 1win826.ru .
1win. http://www.1win812.ru .
Где приобрести диплом по нужной специальности?
Мы изготавливаем дипломы любой профессии по приятным ценам. Мы можем предложить документы техникумов, которые расположены на территории всей РФ. Вы имеете возможность заказать диплом за любой год, указав актуальную специальность и хорошие оценки за все дисциплины. Документы печатаются на бумаге высшего качества. Это дает возможность делать государственные дипломы, не отличимые от оригиналов. Документы будут заверены необходимыми печатями и подписями. Всегда стараемся поддерживать для заказчиков адекватную политику цен. Для нас очень важно, чтобы дипломы были доступны для большинства наших граждан. diplom-kuplu.ru/kupit-attestat-za-11-klass-8
Купить документ о получении высшего образования вы можете у нас. dip-lom-rus.ru/kupit-attestat-za-9-klass-4-3
1 вин войти https://www.1win827.ru .
cazinouri online moldova https://1win5003.ru/ .
mostbet.kg https://mostbet786.ru .
Для эффективного продвижения вверх по карьере понадобится наличие диплома университета. Заказать диплом института у проверенной фирмы: diplomservis.com/kupit-attestati-za-11-6/
Мы изготавливаем дипломы любой профессии по приятным ценам.— disce.eu/community-forum-from-the-netherlands-to-finland/#comment-36418
win 1 win 1 .
cod promoțional 1win http://1win5003.ru .
Приобрести диплом университета по невысокой цене возможно, обращаясь к надежной специализированной фирме. Мы можем предложить документы высших учебных заведений, которые расположены в любом регионе РФ. rusd-diplomj.ru/kupit-diplom-med-obrazovanie
баланс ван вин 1win6011.ru .
1 win.kg https://1win813.ru/ .
mostbest https://mostbet794.ru .
банкротство отзывы
1 win официальный сайт 1 win официальный сайт .
1win. https://www.1win813.ru .
1вин. https://pboarders.borda.ru/?1-11-0-00000929-000-0-0-1742818701 .
1win. pro https://pboarders.borda.ru/?1-11-0-00000929-000-0-0-1742818701/ .
мос бет http://shorts.borda.ru/?1-18-0-00000397-000-0-0/ .
1win партнерка вход http://boardwars.forum24.ru/?1-10-0-00000406-000-0-0/ .
1win online http://1win814.ru .
1win ставки официальный сайт http://1win6012.ru .
мостбет официальный сайт mostbet795.ru/ .
Приветствую!
Мы изготавливаем дипломы психологов, юристов, экономистов и прочих профессий по выгодным тарифам. Цена может зависеть от выбранной специальности, года получения и ВУЗа: diplomanc.com/
1 win регистрация http://www.boardwars.forum24.ru/?1-10-0-00000406-000-0-0 .
1win.online https://1win814.ru .
1win кыргызстан 1win6012.ru .
скачат мостбет http://tagilshops.forum24.ru/?1-4-0-00000205-000-0-0/ .
мостбет скачать мостбет скачать .
Купить диплом ВУЗа по невысокой цене возможно, обращаясь к надежной специализированной фирме. Мы оказываем услуги по продаже документов об окончании любых ВУЗов РФ. Приобрести диплом любого ВУЗа— diploma-groups24.ru/kupit-diplom-v-gorode/chelyabinsk.html
1 цшт https://www.1win815.ru .
партнёрка 1win http://www.1win6014.ru .
mostbets http://kharkovbynight.forum24.ru/?1-15-0-00003047-000-0-0-1742814422/ .
1 win официальный сайт [url=www.yamama.forum24.ru/?1-11-0-00000459-000-0-0-1742818616]www.yamama.forum24.ru/?1-11-0-00000459-000-0-0-1742818616[/url] .
мостбет кг [url=https://mostbet6001.ru/]https://mostbet6001.ru/[/url] .
Официальный сайт Нев Ретро Казино http://newretromirror.ru/ .
1вин http://1win815.ru/ .
1win прямой эфир http://www.1win6014.ru .
mostbet kg https://kharkovbynight.forum24.ru/?1-15-0-00003047-000-0-0-1742814422/ .
1 win официальный сайт вход https://yamama.forum24.ru/?1-11-0-00000459-000-0-0-1742818616/ .
1wln 1wln .
1win войти http://1win6015.ru/ .
мостбет казино http://maksipolinovtsu.forum24.ru/?1-1-0-00000194-000-0-0-1742815870 .
мостбет зеркало https://www.mostbet6002.ru .
1win ru 1win ru .
мостбет зеркало мостбет зеркало .
1 win kg http://www.mymoscow.forum24.ru/?1-6-0-00026928-000-0-0 .
mostbet официальный сайт mostbet официальный сайт .
Где приобрести диплом специалиста?
Наши специалисты предлагают максимально быстро заказать диплом, который выполняется на бланке ГОЗНАКа и заверен мокрыми печатями, штампами, подписями. Диплом пройдет любые проверки, даже с использованием профессиональных приборов. Достигайте свои цели быстро с нашими дипломами. Приобрести диплом о высшем образовании! or1gano.80lvl.ru/viewtopic.php?f=10&t=1896
1wi. [url=https://1win817.ru]https://1win817.ru[/url] .
1vin https://www.dogzz.forum24.ru/?1-10-0-00000155-000-0-0-1742818537 .
мостбет скачать андроид мостбет скачать андроид .
поддержка мостбет http://mostbet6003.ru/ .
1win pro http://www.1win817.ru .
1вин http://www.dogzz.forum24.ru/?1-10-0-00000155-000-0-0-1742818537 .
мосбет казино http://www.corgan.borda.ru/?1-0-0-00000265-000-0-0 .
1win http://www.1win6016.ru .
мостбет казино войти mostbet789.ru .
1win партнерская программа вход https://zdorovie.forum24.ru/?1-7-0-00000231-000-0-0-1742818050 .
1win сайт вход https://1win6016.ru .
мостбет казино войти мостбет казино войти .
мостбет кыргызстан http://ashapiter0.forum24.ru/?1-19-0-00001444-000-0-0-1742819001/ .
1win личный кабинет 1win личный кабинет .
порно порно .
1win kg скачать https://1win9109.ru/ .
1 win pro http://1win6013.ru/ .
1 вин официальный сайт https://knowledge.forum24.ru/?1-0-0-00000101-000-0-0-1742817704 .
Списание долгов по 127-ФЗ лучшее решение, когда у вас начались просрочки и уже нечем платить за кредиты https://bankrotstvo-v-moskve123.ru .
mosbet https://www.mostbet6004.ru .
Профессиональный сервисный центр по ремонту бытовой техники с выездом на дом.
Мы предлагаем:ремонт бытовой техники в мск
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
1 win kg http://www.1win6013.ru .
1win онлайн https://www.1win9109.ru .
игра ракета на деньги 1win belbeer.borda.ru/?1-6-0-00001583-000-0-0 .
mostbet скачать https://www.girikms.forum24.ru/?1-1-0-00000361-000-0-0-1742819287 .
мост бет http://kharkovbynight.forum24.ru/?1-15-0-00003047-000-0-0 .
mostbet kg скачать на андроид girikms.forum24.ru/?1-1-0-00000361-000-0-0-1742819287 .
Быстро заказать диплом института!
Мы изготавливаем дипломы любых профессий по доступным ценам— diplom-club.com/kupit-diplom-meditsinskij-bistro-i-nadezhno/
мостбет chrono https://mostbet6005.ru .
ванвин http://obmen.forum24.ru/?1-1-0-00004428-000-0-0-1742816292 .
1win pro http://1win6019.ru .
мостбет мобильная версия скачать http://hiend.borda.ru/?1-16-0-00000259-000-0-0-1743052953/ .
скачать мостбет скачать мостбет .
1с предприятие купить 1с предприятие купить .