”В жизни всегда
есть место
порту”
Тестовая
программа
для СОМ-порта,
ибо "..если
б верить
бизнес-планам,
я б летал
аэропланом"
Адрес
документа. |
http://shabronov_s2.dyn-dns.ru/doc_sh/test_com_mini_v1/test_com_mini_v1.doc инд: |
Скачать
тест. |
http://shabronov_s2.dyn-dns.ru/doc_sh/test_com_mini_v1/versuhi/acompkz1.zip |
Скачать
«создателя
теста». |
http://shabronov_s2.dyn-dns.ru/doc_sh/test_com_mini_v1/versuhi/test_monsys_all.zip |
От
автора:
Окна теста:
|
|
|
|
|
|
Эта
фраза
знакома
многим
родителям, и
она радует,
т.к. родной
ребенок уже
вырос и все в
порядке. А до
этого?
Приходиться
много-много
раз
подбегать и
щупать сухо
ли там.
Мой
знакомый
папа-инженер
нашел выход –
собрал схему.
Рисунок ниже.
И рядом
другие варианты
данной схемы.
Данные
изделия
имеет один
существенный
недостаток.
Изделие с
ребенком, а
папа в соседней
комнате. Звук
можно и не
услышать. Тем
более, что
закрывается
дверь, что бы
не
беспокоить
своим шумом
«любимое
дитятко».
Т.е.
сигнализация
должна быть,
но МАЛОШУМНОЙ
и УДАЛЕННОЙ. И
желательно
не очень
дорогой, как
на крайнем
справа
рисунке.
Вариант
решения
данной
задачи через
последовательный
сом-порт rs-232 – подключить
датчик
влажности и
контролировать
по программе.
Намок
датчик,
компьютер в
соседней
комнате
сообщит:
«запикает»,
или включит специальную
заставку.
На
что надо
обратить
внимание при
реализации
=мокрой
сигнализации=:
·
Техника
безопасности,
прежде всего!
Исключить возможность
попадания
посторонних
высоких
напряжений
на провода.
Например,
сетевого
провода на
линию связи.
·
Непосредственно
на самих
вывода
сом-порта напряжение не
более 12 вольт,
а вот
относительно
других металлических
предметов в
комнате напряжение
может быть
разным. И даже
опасным!
·
Датчик
сигнализации
– это
пластина из
стеклотекстолита
с
«дорожками»,
которые подключены
к выводам 7 и 8
разъема
сом-порта rs-232.
Варианты
подключения
к сом-порту
зависят от
настройки
программы.
·
Конструкция
датчика не
критичная.
Важно обратить
внимание на
травмобезопасность,
и чтобы не
скушал
изделие
голодный
ребенок. Шутка. Схема
подключения
и некоторые
варианты
датчиков
представлены
ниже:
После
создания
датчика или его
покупки,
обязательно
проверить
возможность
безопасного
отключения. Самому
намочить
руки (можно и
«корневым
словом» от
глагола, но гигиеничнее
водой) и прикасаться
к выводам во
включенном
состоянии.
Никаких
ощущений
быть не
должно.
Напоминаю
ситуацию: «Стой!
Стрелять
буду! - Стою! -
Стреляю!»
Важно,
не
анекдотичность
ситуации, а
ответные
действия. Ведь,
что
получается в
реальности,
кто быстрее
среагировал,
тот и победил.
Итак,
ограбление -
преступление,
состоящее в
присвоении
чужой
собственности
с
применением
угроз, насилия;
Нужна
тревожная
кнопка или
другой
способ сообщить
о беде.
Вариант
решения
данной
задачи через
последовательный
сом-порт rs-232 – подключить
тревожные
кнопки и
контролировать
их по
программе.
Преимущества:
·
Готовая
удаленная
сигнализация,
если компьютер
включен в
«Интернет»
или в
локальную
сеть;
·
Маскировка
сигнализации если,
например,
кнопку
подвести к
принтеру, где
находиться
компьютер.
Получиться,
как бы кнопка
на принтере;
·
Цена
вопроса
сигнализации
значительно
снижается;
·
Часто
бывает и
разная
степень
тревоги, и значит
надо
несколько
кнопок;
Предусмотрено
5 кнопок
тревоги для
предоставляемой
программы. Схема
представлена
ниже на рисунке.
А
если он
упадет? А
если коляску
расшатает и
перевернется?
Требуется
знать, есть
ли вибрация
или нет?
Предлагается
использовать
в качестве датчика
удара ЗП-1,3,22
– звонковый
преобразователь.
Ниже их фото.
Вариант
решения
данной
задачи через
последовательный
сом-порт rs-232 – подключить
датчики
удара и
контролировать
их по
программе.
Свойство
звонковых
преобразователей,
это наличие
обратного
эффекта. При ударе
или
постукиванию
по ним,
на выводах
появиться
напряжение.
Это
напряжение, в
зависимости
от силы
удара, может
достигать 3..5
вольт и
длительностью
до 100
миллисекунд.
Для
приема
информации
по
последовательному
СОМ-порту rs-232, уровня
и
длительности
напряжения вполне
хватает.
Схема
подключения
представлена
ниже на рисунке.
\ файл
инициализации
режимов
работы от
кнопок
СОМ-порта - test_kz_com_v2c.f \ \
Вступительная
часть: \ \ - данный
файл
текстового
формата и
может редактироваться
любым
редактором
для текстов.
Например,
БЛОКНОТОМ; \ - с
начала
строки, все
что после
наклонной черты
c пробелом -
представляет
собой
комментарий
и
допускается
любой текст;
\
наклонная
черта может
начинаться
и не с начала
строки \ - имеется
вариант
комментарии записывать
в круглых
скобках. Но
обязательно
парно ( и ) (
это тоже
комментарий
пояснений
по файлу
инициализации
) \ - файл
инициализации
воспринимается
программой
как текст
для
выполнения. \ -
используется
формат
текста кодировка
Win страница 1215 -
аnsi - кирилица \ - для
редактора
БЛОКНОТ
подходит
шрифт Times New Roman и
символы
кирилица.
Шрифты
можно
устанавливать
любые, по
своему
вкусу. \ - длинна
строки с
текстом и
комментарием
до 4096 символов
или в 16сс = 0x1000 \ \
Назначение
файла
инициализации \ \ Файл
выполняет
настройки
Ваших
действий при
замыкании
кнопок, на
выводах
используемого
COM порта. \ Кнопки
обозначены
на схеме SK_1 ... SK_5 \
Приведенные
примеры
настроек
выполнены на
авторском
компьютер и
возможно на
Вашем
компьютере
работать не
будут. \ Но это и
понятно, т.к.
пользователи
индивидуально
настраивают
под себя
компьютеры. \ по
пословице... В
чужой
компьютер
со своими
настройками
не лезут. \ Важно,
что
программа
работает с
=железом= , это
устройство
называется
последовательный
порт. \ Эта
=железка=
должны быть
доступна
программе, и
только в
этом случае
можно
получить от
=железки=
информацию. \ Но
программа
работает и
без =железки=,
и в этом
случае не
ждите от
программы
=чуда=. \ Анекдот
по теме: ...
товарищ
прапорщик, а
можно я
посмотрю
телевизор? -
Можно,
рядовой
Иванов,
смотрите,
только не включайте!... \ Программа
предназначена
для
тестирования
порта,
возможного
применения
порта, и порт
должен быть
в работе. \ \ \
Пояснения
по
написанию
опций
настройки \ \
Возможно, Вы
уже что то
программировали
и имеете
навыки. Это
хорошо но и
плохо. Т.к. Вы будет
искать
аналогии. \ Должен
предупредить что
тут по англицки
- =Tastes differ=
или по
русски - =На
вкус и цвет
товарищей
нет= \
Программа и
опции
файлов настроек
написаны на
языке FORTH (Форт)
версия spf4 автор
Черезов.А.
http://www.forth.org.ru/ \
Пользуясь
случаем
Выражаю ему
большую благодарность
за столь
выдающийся
труд. \ Другие
ресурсы по
языку FORTH
программирования
смотрите в
интернете. \
Конкретная,
для spf4,
помощь
имеется по
адресу
http://spf.sourceforge.net/docs/intro.ru.html#forget \
Предлагается
воспользоваться
двумя правилами:
непонял -
записывай. \ Не
можешь
записывать,
сохраняй сканы
экрана. \ Следует
предупредить,
что любой
знак или набор
символов
без
комментариев
- это =ЧТО-ТО=. И
действия
могут быть
очень
разные. \ Но у Вас
есть
возможность
все
восстановить,
и опять
начать
работу. \ По сути,
это
небольшие
форт-определения.
Они
компилируются
и
выполняются. \ И так
приступим к
пояснению опций
и их
выполнению. \ \ опции,
которые
задают
Выбранный COM-
порт \ Порт с
которым Вы
работает
можно
задать по
командной
строке, а
можно и
записав номер
порта в
переменную
и \ затем
выполнить
=слово=
отвечающее
за установку
порта 5 COM_BN
!
IZM_UST_P_DIN2_N_NO_TYPE ( --
установка
порта )
\
если
выполнить файл
инициализации
только с
этой
строчкой -
то порт
проинициализируется
на 5-ый
а если 50 то
соответственно
на 50-ый. \ Пример
работы -
удалите все
что дальше
после этой
строки. И
выполните
инициализацию.
Установится
порт 5 и будет
сообщение
ок или error \ \
Настройка
действий по
нажатию
кнопок SK1...SK5 \
Предлагается
несколько
вариантов. \ Вариант
1 - Нажал
кнопку и пока
она нажата
идет
звуковой
пик и на
экране
выдается
сообщение
нажатии
соответстующей
кнопки. \
Требуется
записать
значение 1 в соответствующие
переменные
кнопок. 1 SK_1
! 1 SK_2 ! 1 SK_3 ! 1 SK_4 ! 1 SK_5 ! \ Вариант
2 -
нажал
кнопку и при
разовом
нажатии
проигрывается
мелодия формата
kar или mid.
\ Новое
нажатие
функционирует
только после
8 секунд,
значение
которого
записано в
переменную SK_TIME_MID \
дополнительно
выдается
номер
кнопки с пометкой
mid. \ Мелодия
или звучит
до своего
окончания
или если
нажать
после 8
секунд останавливается. \
Повторно,
кнопка
принимает
сигнал
через 8 секунд \ Можно
поменять
время,
записав в
данную переменную
свое
значение,
как
показано
ниже. 8
SK_TIME_MID ! (
записано
число 8 - но Вы
то
понимаете,
что это
связано с
комментарием
и запишете свое
значение ) \ значния
допустимы
минимально
от 1 секунды.
Верхнее
значение не
ограничено. \ Данная
опция
работает по
принципу ИЛИ
для кнопок
SK1..SK_5.
Выбираете
кнопку и
записываете
туда
значение 2 \
Использоваться
может
только одна
кнопка остальные
будут в
=игноре= 2 SK_4
! (
работает
только кнопка
SK_4 выводы
сом-порта 7 и 8 ) \ Вариант
3 - нажал
кнопку и
открывается
требуемый
сайт или
требуемая
программа,
если она у
Вас
установлена. \
Повторное
открытие
выполняется
через время
заданное в
опции в
секундах. 3 SK_1 ! S"
mspaint.exe"
5 SK_1_VAR3 (
открытие
файла pait -
графический
редактор
повторное
открытие
через 5 секунд
) 3 SK_2 ! S"
msinfo32.exe"
3 SK_2_VAR3 (
открытие
сведений о
системе
повторное
открытие
через 3 секунд
) 3 SK_3 ! S"
https://mail.ngs.ru/"
8 SK_3_VAR3 (
открыть
сайт почты
автора ) 3 SK_4 ! S" http://90.189.213.191:4422/poteha/muz_valsok_v1/"
2 SK_4_VAR3 (
открыть
сайт автора
с
музыкальной
темой ) 3 SK_5 ! S" C:\Program
Files (x86)\Total Commander\Plugins\exe\AkelPad.exe" 8
SK_5_VAR3 (
открыть
текстовый
редактор,
альтернатива
БЛОКНОТУ
расположен
в указаном месте
на
авторском
компьютере ) \ а
дальше, Вы
можете сами
вписать
любую программу,
которую
желаете
вызвать при
нажатии \
Внимание! \
Приведенные
варианты
записаны
без ремарок,
но это
означает
что в работе
будет использоваться
ПОСЛЕДНИЙ
т.е. вариант 3 \
Поставьте
косую черту,
т.е.
=заремьте=
варианты 2 и 3
и будет
работать 1й
вариант \ а так же
можно
повторно
указать вариант
работы, как
сделано
ниже для
кнопки SK_5, что
бы не
вызывать
редактор
текста. 1 SK_5
! \ опция
бонус
или
лозунг =А МОЯ
МОРКОВКА
СЛАЩЕ !!!=
\ \ Автор в
разделе
помощи ввел
случайный
вызов своих
авторских
тем с
музыкальным
содержанием. \
Предусмотрено,
заменить
эти темы на
другие,
записью в
ини файле. \
Наберите
свои темы по
ниже приведенному
примеру и
они будут
вызываться
вместо
авторских,
так же
случайным
образом. \ Всего
можно
ввести до 255
сайтов. \ Автор
предупреждает,
что
авторский
сайт не
имеет
категории
=высшей
защиты= по
питанию и
резервирования
каналов
интернета, \ и
поэтому,
иногда
доступ к
музыкальным
темам может отсутствовать.
\ Сайт
работает на
домашнем
компьютере,
а иногда
случаются в
нашей
деревне
обрывы электропитания
и «кабелюк». \
Альтернативой
предлагается
послушать музыку
формата mid и kar.
Это
синтезатор
электронной
музыки. \
Предлагаемые
далее
сайты
=заремлены=, но
ничто не
мешает Вам
заменить их
на свои \ и
=разремлить=
т.е. убрать
косую черту и
проверить
работу. \ S" http://meandr.org/" NEW_ADR_WWW \ S"
http://www.decoder.ru/list/all_1/tag_112_1/topic_40/" NEW_ADR_WWW \ S"
http://www.interntv.ru/index.php?name=View&idtv=3069&Fcountry=Russian%20federation&Fcategory=&Sort=id_tv&chname=&findch=0&page=&page=1" NEW_ADR_WWW \ S"
https://www.yandex.ru/"
NEW_ADR_WWW \ S"
http://www.hub.ru/library" NEW_ADR_WWW \ S"
http://news.cqham.ru/articles/detail.phtml?id=361" NEW_ADR_WWW \ S" http://www.iga1.ru/" NEW_ADR_WWW \ == и так
далее до 255
строк \EOF ( это
тоже
команда,
которая означает,
что дальше
компиляция и
выполнение
прекращается
) Далее,
можно
писать
комментарии
и тексты без
наклонной
черты Более
наглядную
документацию
читайте на сайте
описания
данной
программы http://90.189.213.191:4422/doc_sh/test_com_mini_v1/ редакция
ини файла 21:35 15.01.17 |
Пример
файла
инициализации
для работы по
теме 1, датчик
влажности на
выводах 7 и 8
подключен
сом-порт 17. При
замыкании
датчика
начинает
играть музыка
варианта mid, и
программа
после старта
«прячется» в
трей. Файл
инициализации
ниже в
таблице и оставлены
только опции
команд.
17
COM_BN !
IZM_UST_P_DIN2_N_NO_TYPE ( --
установка порта 17 ) 1 SK_1 ! 1 SK_2 ! 1 SK_3 ! 2 SK_4 ! 1 SK_5 ! (
работает кнопка
SK_4 выводы
сом-порта 7 и 8 для
режима играть
музыку
формата mid остальные
в режиме 1) |
Включение
программы
осуществляется
по кнопкам 1 7 e или по
командной строке,
где указать
те же кнопки: \\acompkz1.exe 1 7 e <enter> или
сформировать
файл ярлыка и
в опциях указать
кнопки,
показано
ниже на рисунке.
-
n 121 – установка
при старте порта
с номером 121
-
1 – перейти в
раздел
помощи;
-
7 – перейти в
раздел
управления;
-
3 – принять
данные из
файла
настроек и
перейти к
управлению;
-
средняя
кнопка –
эквивалент
клавиши ESC –
вернуться на
предыдущий
экран;
-
правая
кнопка
- эквивалент
клавиши ПРОБЕЛ,
- обновить
экран;
-
левая кнопка
– выбор
пункта меню и
переход на
него;
1. Инициализируем
порт, если ок
– то к п.2 если нет
сообщение о
ошибке
инициализации
и выход.
2. Даем
сигнал логического
=0= на вывод O. Запоминаем
сигнал на
выводе I. Он рядом
и доступен
для
короткого
замыкания.
Например,
выводы
7 и 6.
3. Даем
сигнал логической
=1= на вывод O. Запоминаем
сигнал на
выводе I. Это вывод
из п2.
4. Проверяем,
если был в
начале 0,
затем 1 ,
принимаем
решение, что вывод O замкнут
с выводом I и
отображаем это на
экране.
5. Переходим
к следующему
выводу
доступных
комбинаций и
возвращаемся
к пункту 2.
6. Если
все выводы
проверены,
проверяем
нет ли
прерывания
от
клавиатуры
или мышки о
окончании
работы и если
нет
возвращаемся
к п.2 иначе
останов
теста;
: TEST_KZ_COM_START ( стартовое
слово 1й
экран )
|| APZctrl PZ1 || ( локальные
переменные )
S" 1234" DROP ->
APZctrl APZctrl 0!
STARTLOG ( ВКЛЮЧИТЬ
ФАЙЛ ОТЧЕТА SPF.LOG
) \ ENDLOG (
выключить
файл отчета )
0x500 PZK DUP DUP 4+ 4
CMOVE ! ( первоначальная
установка
курсора ) OPTIONS2
( -> ) (
интерпретировать
командную
строку )
TIB-K ( K -->
код знака в
командной
строке ) DUP
[CHAR] N = OVER [CHAR] n = OR
IF ( K -- первый
код N т.е. дальше
номер порта
для
проверки )
DROP ( - убрали и
читаем
цифру
следующего
кода )
TIB-N (
ПРЕОБРАЗОВАНИЕ
ИЗ ТИБА В
НОМЕР - xx -
ВВЕДЕНЫЙ
ПОРТ )
DUP 0> OVER 0x100 < AND IF
COM_BN ! THEN
IZM_UST_P_DIN2_N_NO_TYPE ( установка порта )
TIB-K ( K -->
код
знака в ком
строке т/е
после N xx
)
ELSE (
ставим по
умолчанию
порт 2 для первого
входа )
2 COM_BN !
IZM_UST_P_DIN2_N_NO_TYPE (
установка порта
)
THEN
\
--------------------------------------------------------
RANDOMIZE (
генерация
случайности
по случайному
запуску
компьютерной
программы )
MEM_WWW_RND ( -
подготовка
памяти и данных
для www_rnd )
MENU_KZ_COM_V1 (
МЕНЮ
ПРОГРАММЫ
ПЕРВОЕ )
MENU_P1_NCOM ( -- ВЫДАЧА
НОМЕРА СОМ
ПОРТА
УСТАНОВЛЕННОГО
) BEGIN \
------------------------------------------------------------------------------
0x001 OUT_TIME_DIN2_N1 ( M -- время
на экран
выдаем в
место М=0
строка 1-й
знак ) WORKS_PZK_V1 ( K -- K'
по данным PZK
работа
сдвиг в
право и вниз
по колесику,
левая
кнопка
мышки
меняем
вертикаль-горизонталь )
['] MENU_KZ_COM_V1 ( Aex -- ) exSTRELKI_MENU_DIN2 @ EXECUTE (
К Aex -- K'
тут
отображение стрелок
и если они
есть то код
меняется
работа с
планшетником
)
\ --------------------------------------
0x049 OUT_CURSOR_DIN2_P1 (
M --> место
показания
курсора DIN2 )
0x249 WORKS_CWET_FNZN_DIN2
( M --
установки и
измения по
цвету
сразу
графику
выдаем )
0x449 FIX_DIN2 S" Mесто = " TYPE_DIN2 ModuleName TYPE_DIN2
0x549 FIX_DIN2 S" Размер файла=" TYPE_DIN2
DECIMAL SZ @ V2_RDIN2 ( N
--- РИСУЕМ КОЛ-ВО БАЙТ разбивку делаем ) S" байт."
TYPE_DIN2
0x649 FIX_DIN2 S" Дата версии:" MR_DATA2 S++ TYPE_DIN2
0x749 OUT_CURSOR2_DIN2
( M --- на
входе место показали
размер и
место x0 y0 окна DIN2 в
строку )
\ ---- ИМЯ
КОМЕЬЮТЕРА
и
пользователя
0x849 FIX_DIN2 =2(
Связное имя:
" GETCOMPUTERNAME_V1 ( --
adr n ) TYPE_DIN2 (
ПО ЭТОМУ
ИМЕНИ
ОБРАЩАТЬСЯ
ЧЕРЕЗ РАДМИН
Т.Е. ЭТО ИМЯ
ДОСТУПА И ПК
В СЕТИ И
РАВНО ИМЕНИ
IP-TCP )
0x949 FIX_DIN2 =2(
Работает: " GETUSERNAME ( -- adr
n ) TYPE_DIN2 (
имя пользователя
выдаем )
0xA49 FIX_DIN2
GETProcessorType TYPE_DIN2
( пишем тип
процессора ) \
----------------------------------------------------------------------------- ( K --> на
стеке код
нажатия
клавиши ) APZctrl 0xE00 KOD_START_F2_5_DIN2 (
K APZctrl M1 -- k'
проверка и
выполнение по
f1-Экран а f2..5 те.
нажать ctrl и потом
f2..5 для
выполнения M1 -
место
индинкации
для
отображения
)
DUP 0x20 = ?KEY1_DIN2 8+ @ 2 = OR IF ?KEY1_DIN2_0! MENU_KZ_COM_V1 (
обновить
экран =2
правая
кнопка мыши ) MENU_P1_NCOM ( --
ВЫДАЧА
НОМЕРА СОМ
ПОРТА
УСТАНОВЛЕННОГО
) THEN
\
--------------------------------------------------------------------------------------------------- DUP [CHAR] 1
0x501
KOD_KM_DIN2 IF ?KEY1_DIN2_0! TEST_KZ_COM_V2 ( помощь
Тест 2
) MENU_SBROS_V1 (
пересброс
экрана что
бы убрать
заставки ) THEN
\
------------------------------------------------------------------------------------------ DUP [CHAR] 2
0x601
KOD_KM_DIN2 IF ?KEY1_DIN2_0!
COM_BN DUP 1+! DUP @ 0xFF > IF 0xFF SWAP ! ELSE
DROP THEN MENU_P1_NCOM -1 ->
PZ1 THEN DUP [CHAR] w
0x603
KOD_KM_DIN2 OVER [CHAR] W
= OR IF ?KEY1_DIN2_0! -1 COM_BN
+! COM_BN @ 1 < IF BEEP2 1 COM_BN ! THEN MENU_P1_NCOM -1 -> PZ1 THEN DUP [CHAR] s
0x605
KOD_KM_DIN2 OVER [CHAR] S
= OR IF ?KEY1_DIN2_0! 0xA
COM_BN +! COM_BN DUP @ 0xFF > IF 0xFF SWAP !
ELSE DROP THEN MENU_P1_NCOM -1
-> PZ1
THEN
DUP [CHAR] x
0x607
KOD_KM_DIN2 OVER [CHAR] X
= OR IF ?KEY1_DIN2_0! 0xA NEGATE
COM_BN +! COM_BN @ 1 < IF BEEP2 1 COM_BN ! THEN MENU_P1_NCOM -1 -> PZ1 THEN PZ1 IF 0 ->
PZ1 IZM_UST_P_DIN2_N_NO_TYPE MENU_P1_NCOM THEN \ делаем тест DUP [CHAR] 3
0x701
KOD_KM_DIN2 IF ?KEY1_DIN2_0! KNT_COM_DIN2 (
ОТДЕЛЬНАЯ
ПРОВЕРКА
СОМ ПОРТА ) MENU_SBROS_V1
(
пересброс
экрана что
бы убрать
заставки ) THEN DUP [CHAR] e
0x703 KOD_KM_DIN2 OVER [CHAR] e = OR IF ?KEY1_DIN2_0! DISPETCHER_PK ( -
вызвать диспетчера
устройств
компьютера )
BEEP_M1 THEN DUP [CHAR] 4
0x801
KOD_KM_DIN2 IF ?KEY1_DIN2_0! ( ВСЕ
ПОРТЫ )
0x1100
KNT_IZM_UST_P3 ( M1 -->
место
выдача
быстрая
наличия
сом-портв ) THEN
\ вариант
проверки
портов на 1ом
окне по
ответу
порта
TMP1 @ IF ( порт в
наличии запускаем
тест ) KNT_COM_DIN2_V1 ( на DIN2
ПРОВЕРКА
СОМ ПОРТА
ТОЛЬКО
ОТОБРАЖЕНИЕ
КЗ ВЫВОДОВ И
ЗВУК ) THEN
0x91A test_kz_com_v2_db9_v1.bmp S"
12341234"
WORKS_EXE_BMP_DIN2_V1 ( M1
AIN Ap n- --- подгрузка
и отображение
фото
сом-порта )
\
--------------------------------------------------------------------------------------------------- \
опрос
клавиатуры
и мышки.
Повтор в начало
цикла
или выход =======================================
DROP
?KEY1_DIN2 @ ( K --> ) DUP 0x1B = ?KEY1_DIN2 8+ @ 3 = OR ( ecs то
выходим или средняя
кнопка мыши )
UNTIL DROP ?KEY1_DIN2_0! PZK DUP 4+
SWAP 4 CMOVE (
сохранение курсора
по старому
значению ) ; |
: TEST_KZ_COM_START ( стартовое
слово 1й
экран )
---------------
BEGIN
\--------------
( ТУТ
СЛОВА
ПРОВЕРЯЮЩИЕ
ДЕЙСТВИЯ
ПОЛЬЗОВАТЕЛЯ
НА
ПЕРВОМ
ЭКРАНЕ )
( ЧТО
НАЖМЕТ ТУДА И
ПЕРЕХОДИМ )
(
НАЖМЕТ
КЛАВИШУ 3
–ПЕРЕЙДЕМ НА
СЛОВО KNT_COM_DIN2 )
(
НАЖМЕТ
КЛАВИШУ 1 –
ПЕРЕЙДЕТ НА
СЛОВО TEST_KZ_COM_V2 )
\ ------------
UNTIL
;
: TEST_KZ_COM_V2 ( помощь
по
программе ) || APZctrl || (
локальные
переменные
для
служебной
клавиш )
S" 1234" DROP -> APZctrl APZctrl 0!
0x400 PZK DUP DUP 4+ 4
CMOVE ! (
выход состояния
курсора сохранили
и новое дали
)
TIB-K ( K -->
код
слова в ком
строке т.е.
второй знак ) MENU_TEST_KZ_COM_V2 ( меню
экрана
помощи ) BEGIN \
----------------------------------------------------------------------------------------------
0x45E
test_kz_com_v2_sha_zast1.bmp S" 12341234" WORKS_EXE_BMP_DIN2_V1 ( заставка ШАА )
0x001 OUT_TIME_DIN2_N1 ( M – время
на экран
выдается )
WORKS_PZK_V1 ( K -- K' по
данным PZK
работа
сдвиг в
право для
планшета и
если крутить
колесико то
вниз
)
[']
MENU_TEST_KZ_COM_V2
( Aex -- )
exSTRELKI_MENU_DIN2 @ EXECUTE ( К Aex -- K' тут
отображение
стрелок и
если они
есть то код меняется
работа с
планшетником
)
0x051 OUT_CURSOR_DIN2_P1 (
M --> место
показания
курсора DIN2 )
0x25C WORKS_CWET_FNZN_DIN2
( M --
установки и
измения по
цвету )
\
----------------------------------------------------------------------------------------
( K -->
на стеке код
нажатия
клавиши )
APZctrl 0xC00
KOD_START_F2_5_DIN2 ( K APZctrl M1 -- k'
проверка и
выполнение по
f1-Экран а f2..5 те.
нажать ctrl и
потом f2..5 для
выполнения M1 -
место индикации
для
отображения
)
( K --> на
стеке код
нажатия
клавиши ) DUP 0x20 = ?KEY1_DIN2 8+ @ 2 = OR ( прав клавиша ) IF ?KEY1_DIN2_0!
MENU_TEST_KZ_COM_V2 ( обновить экран ) THEN DUP [CHAR] 1
0x401
KOD_KM_DIN2 IF ?KEY1_DIN2_0! FORMIR_CMD_FILE_TEST_KZ_COM ( формируем файл смд для быстрого запуска до пунктов ) THEN DUP [CHAR] 2
0x501 KOD_KM_DIN2 IF ?KEY1_DIN2_0! YURNAL_SOBYTIY_V1 ( - открыть
консоль управление
компьютером
) THEN DUP [CHAR] 3
0x601
KOD_KM_DIN2 IF ?KEY1_DIN2_0! w_TEST_KZ_COM START_link_clik ( An n – открыть сайт с описанием ) BEEP_M1 THEN DUP [CHAR] 4 0x701 KOD_KM_DIN2 IF ?KEY1_DIN2_0! SMENA_CMD_TEST_KZ_COM ( СМЕНА РЕЖИМА С СМД ИЛИ БЕЗ ) THEN
DUP [CHAR] 5
0x801
KOD_KM_DIN2 IF ?KEY1_DIN2_0! START_WWW_RND ( -- запуск страниц
музыкальных
тем в случайном
порядке ) THEN
\ управление мид файлами DUP [CHAR] 6
0x901
KOD_KM_DIN2 IF ?KEY1_DIN2_0! DATE_Nimuz
4+ 0! 0xA11 BEEP3_MIDI_DIN2 ( M1 -- в окне
DIN2
формируется
и
выполняется
музыкальная
пазуа MIDI ) THEN DUP [CHAR] y
0x903 KOD_KM_DIN2
OVER [CHAR] Y = OR IF
?KEY1_DIN2_0! 1
DATE_Nimuz 4+ ! (
ставим
признак ) 0xA11 BEEP3_MIDI_DIN2 ( M1 -- в
окне DIN2
формируется
и выполняется
музыкальная
пазуа MIDI +1 от
предыдущей ) THEN
DUP [CHAR] h
0x905 KOD_KM_DIN2
OVER [CHAR] H = OR IF
?KEY1_DIN2_0! 2
DATE_Nimuz 4+ ! (
ставим
признак ) 0xA11 BEEP3_MIDI_DIN2 ( M1 -- в
окне DIN2
формируется
и выполняется
музыкальная
пазуа MIDI -1 от
предыдущей ) THEN
DUP [CHAR] n
0x907 KOD_KM_DIN2
OVER [CHAR] N = OR IF
?KEY1_DIN2_0!
BEEP3_MIDI_POST_PZ1
DUP @ 0= IF DATE_Nimuz 4+ 0!
0xA11 BEEP3_MIDI_DIN2 -1 ELSE 0 THEN SWAP !
MENU_TEST_P4 ( меню постоянная
музыка или нет
)
THEN \ A11 –
место
строки с
номером
файла мид и его
названием при
проигрывании DUP [CHAR] 7
0xB01
KOD_KM_DIN2 IF ?KEY1_DIN2_0! UPRAVLENIE_OT_COM_PORTA ( --
раздел
управления
от замыкания
выводов на
сом-порту )
MENU_TEST_KZ_COM_V2
0x45E test_kz_com_v2_sha_zast1.bmp S"
12341234"
WORKS_EXE_BMP_DIN2_V1 (
заставка
ШАА )
THEN
BEEP3_MIDI_POST ( - работа
по
проигрыванию
музыки
постоянно если
была нажата
клавиша n )
\ =======================================
DROP
?KEY1_DIN2 @ ( K --> ) DUP 0x1B = ?KEY1_DIN2 8+ @ 3 = OR ( ecs или
средняя клавиша
)
UNTIL DROP ?KEY1_DIN2_0!
PZK DUP 4+ SWAP 4 CMOVE (
выход в
главный экран
по старому
значению оставленного
курсора ) ; |
1. Автор
ввел
большое
количество
комментариев
по каждому forth-слову. Но
вероятно, эти
комментарии
для многих
программистов
«темный лес».
2. Базовые
слова
приведены в
описании
языка. Вот
некоторые из
них: DUP 0! OR DROP =
[CHAR] S” любой
текст”
3. Другие forth-слова
определены
ранее, и их
необходимо
найти. А
программа
при выполнении
находит их
сама и
выполняет.
4. Текст
программы
можно
перевести в
код и заранее
и во время
работы
программы.
5. Исполняется
код. Поэтому
если в ини
файле указать
«кракозябру»
программа
«вылетит»
·
Более
подробно о
написании
программ на
языке forth смотрите
в интернете. Язык
имеет много
преимуществ,
но и имеет
недостатки.
·
Одно
из самых
главных
недостатков
– понятия
языка сложны
для усвоения
программистами,
уже имеющие опыт
написания
программ. Им преимущества
не видны.
·
Приведем
пример.
Использование
библиотек DLL. Вот кто
из
программистов
задумывался
о том, что DLL
библиотеки
могут быть не
совместимы с
новыми
версиями
операционной
среды? Вспомните,
сколько
программ
перестало работать,
когда
появилась
вместо Windows XP Windows_7 ? Есть
вариант –
обратиться к
разработчику,
что бы дал
новую DLL,
а второй
вариант? Писать
программу
только с
такой DLL,
которую в
принципе
нельзя
менять. Вот в
данном
случае это
ядро kernel32.dll Есть
и третий
вариант,
написать самому
DLL для
новой
операционной
системы. Вот
какой
вариант Вы
предпочтете?
Данная
тестовая
программа
предназначена
для
мониторинга
параметров сом-порта
rs-232 и имеет дополнительный
функционал -
возможность программировать
звуки и
действия на
компьютере при замыкании
выводов
порта.
Особенности
программы:
·
Имеет
упрощенный
«оконный»
интерфейс.
·
Программа
не
устанавливается,
не прописывается
в системные
библиотеки,
·
Программа
содержит в
своем «теле» файл настроек
для
возможной
модификации
программного
отклика и
звуков.
·
Программа
работает под
операционными
системами WINDOWS 95/98/NT/2000/XP/Vista/Win7/8/10 и
использует
только
функции api- ядра
системы –
файл kernel32.dll
·
Программа
написана на
языке Форт
версия
spf4.exe – автор А.
Черезов http://www.forth.org.ru
·
Программа
доступна для
использования,
изучения и
модификации
всем
желающим и их
родственникам.
·
За
модифицированный тест
отвечает сам
модификатор.
Автор может,
при наличии
времени,
только кратко
провести
консультацию
по
используемым
им forth-словам.
·
Автор
оставляет за
собой право
на модификацию
и улучшение
теста, т.к.
периодически
тестирует
последовательные
СОМ-порты rs-232 и
получает
замечания и
информацию
от реальных
пользователей.
·
В
связи
возможными
нарушениями
работы сервера
автора, нет
резервной
линии и нет
гарантированного
питания в
нашей
деревне,
имеется резервное
хранилище
тестов по
адресу: https://cloud.mail.ru/public/28U5/vBGK7mK19
---------------------------------------------------------------------------------------------------------------------------------
Автор -
Шабронов
Андрей
Анатольевич
Тс.
+7 913-905-8839
e_mail - shabronov@ngs.ru
ред. 17-1-2017 .
Успехов и
здоровья!