                        Блок для FLProg v 3.1
Основной блок служит для связи МК с ПК (только один в проекте)
Для передачи и приёма значений или команд в проект нужно добавить соответствующий блок:

Вход основного блока:
send_all_to_pc: отправляет все значения входов по верхнему уровню.

Выходы основного блока:
not_processed: не обработанные блоком данные
now_not_processed: новые данные на выходе not_processed

Блоки вывода:
PC_B: служит для вывода значений типа bool, импульсных кнопок или кнопок с зажатием.
PC_int: служит для вывода значений типа int.
PC_S: служит для вывода значений типа String.

Блоки ввода:
B_PC: служит для ввода значений типа bool.
int_PC: служит для ввода значений типа int.
S_PC: служит для ввода значений типа String.

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


                         Программа ПК v3.3
Установки не требует, поэтому сразу разместить в нужной папке (будет создавать файлы настроек)
При первом запуске откроется окно настройки подключения (подвисает на момент сканирования портов), по умолчанию установлен com port поэтому перед запуском подключить МК к компьютеру (или после подключения нажать кнопку возле списка портов для обновления).
Время опроса: Промежуток в секундах  с которым будут опрашиваться все блоки.
Пере подключение: если галочка установлена, то после потери связи программа через каждые 10-ть. секунд будет пытаться подключиться к порту до тех пор пока не нажать кнопку стоп (индикатор состояния сменит значение при паузах между попытками)



-------------------------
Главное окно:

Первая панель:
Кнопка "Старт\Стоп": подключается или отключается к выбранному порту а для TCP запускает и останавливает сервер с выбранным портом.
Кнопка "Настройки": вызывает окно настроек подключения.
Кнопка "Кнопки": по ЛКМ откроет окно с кнопками если было закрыто.
                По ПКМ (если после запуска программы было подключение к МК) откроет список доступных блоком, выбрав из списка нужный блок будет создана кнопка с предустановленными значениями и откроется редактор кнопки (описание редактора ниже).
Кнопка "Индикаторы": действия те же что и с кнопками только для индикаторов.
Кнопка "STR" отправляет строку МК которая будет выдана на выход не обработанных данных.
Кнопка RST: сброс контролера (DTR)
Индикатор: отображает состояние подключения, отправки, приёма данных, пере подключения или аварии подключения.
Кнопка "События": откроет окно с журналом и управления событиями.
------------------------
Вторая панель:
Предназначена для отображения значений   входов.
Изначально панель пустая и в неё нужно добавить строки, которые нужно отображать.

Добавление и редактирование строк:
    На панели нажимаем ПКМ и в контекстном меню выбираем добавить строку (пункт ативен если было подключение к МК) или редактировать уже созданную, откроется окно редактированния индикатора.
	
--------------------------------	
Окно редактирования индикаторов и строк главного окна:

    Надпись на элементе: строка которая будет добавлена перед выводимым значением (для главного окна) или название которое будет написано на самом индикаторе (для окна индикаторов).
	Ширина: ширина индикатора для строк не доступна.
    Блок: в этом поле выбираем из списка блок к которому будет привязан индикатор (строка).
	Значение: в этом поле вписываем значение при котором индикатор (строка) сменит цвет и начнёт мигать.
	Условие: (доступно только для блоков int, для bool и String будет подставлено =) условие сравнения полученного значения от МК с значение установленным в поле "значение".
	Озвучивать изменения: при установленной галочке будет звучать сигнал при срабатывание и сбросе условия.

-------------------------
Окно редактирования кнопок:
    Надпись на элементе, ширина и Блок: аналогично индикаторам.
	Значение: значение передаваемое МК.
	Тип кнопки:
		Импульсная: при нажатие - отправляет установленное значение выбранному блоку, при отпускание - нечего не происходит.
		Переключатель: при установки галочки отправляет установленное значение на выход блока, при снятие галочки отправляет "0".
		С зажатием: при нажатие - отправляет установленное значение, при отпускание - отправляет "0".
		Установка значения: элемент принимает вид строки с именем и установленным значением, по двойному клику ЛКМ принимает вид ввода значения, для применения нажать "enter"

		
--------------------------------
Окно событий:
Окно состоит из двух частей.
В верхней части расположен выпадающий список с созданными условиями, в котором детально описано само условие и выполняемое действие.
Кнопка Изменить: вызовет окно редактирования выбранного условия.

В нижней части расположен журнал в который заносятся время, имя, причина вызвавшая выполнение, значение на момент выполнения и действие.
Двойной клик на строке сделает выбор данного условия в списке (в верхней части).
Контекстное меню:
Редактировать: откроет редактор условия.
Фильтр по выбранному: отфильтрует весь список и покажет строки только выбранного события.
Добавить: откроет редактор для создания нового условия.
Все события: отобразит все события из памяти.

Редактор события:
Имя события: имя под которям будут отображатся и сортироваться записи в таблице.
Блок: блок в схеме к значениям которого привязывается условие.
Условие: и так понятно :)
Значение: значение с которым будет сравниватся текущее значение блока по выбранному условию.
Действие:
    Только запись: будет происходить только запись в журнал.
	Проиграть звук: выбрать звуковой файл (wav) который будет проигран в случае выполнения условия.
	Открыть файл: выбрать файл который будет запущен (окрыт в приложение для работы с этим файлом) в случае выполнения условия.
	Громкость ПК: выбрать уровень громкости ПК который будет установленн в случае выполнения условия.
	Отключить ПК: 
	Перезагрузить ПК:
	Заблокировать ПК: переведёт ПК в режим выбора пользователя (без выхода из текущего пользователя)
		
		
--------------------------------
Для создания элементов программа должна подключится к МК для получения списка доступных блоков.
При подключение к МК программа передаст значения с переключателей и кнопок с установкой значений.
В случае если настроить кнопку и после этого удалить из проекта блок к которому кнопка привязана, при попытке отправить данные не существующему блоку над пиктограммой программы в трее выведется сообщение о ошибке доставки.
Сортировка элементов в окнах происходит по порядку создания.
Размер, положение и видимость окон сохраняются, у каждого элемента есть всплывающая подсказка с информацией.
Настройки программы сохраняются в файлах:
config.ini  настройки соединения и данные о состояниях окон.
user_settings.ini  в этом файле хранятся все настройки элементов созданных пользователем.
Файлы настроек от версий 2.* и 1.* не совместимы с текущей версией, файлы от 3.* версии полностью совместимы.

В папке с программой приложил файл с настройками для работы с примером FLProg.
После пробы на примере мой файл можно удалить и создать свои настройки или отредактировать элементы в программе.

Работу графика пока не переделал поэтому убрал, потом возможно добавлю если будет необходимость.
В результате переделки программы мог пропустить и не исправить какие-то подсказки, если попадутся пишите, ну и естественно предложениям тоже буду рад.

