Имя: Пароль:
1C
1С v8
Воспроизведение звука при сканировании
0 dmitryada
 
24.05.18
16:58
Конфигурация УТ 11.4.3.144, Платформа 8.3.11.3034.

Ситуация: Необходимо воспроизводить звук при не успешном сканировании штрихкода. Использую стандартнейший код для воспроизведения звука:
--------------
&НаКлиенте
Процедура Команда(Команда)
   мФайл = "C:\1.wav";

   spVoice = Новый COMОбъект("SAPI.SpVoice");
   spfStream = Новый COMОбъект("SAPI.SpFileStream");

   spfStream.Open(мФайл);
   spVoice.SpeakStream(spfStream);

   spfStream.Close();
КонецПроцедуры
---------------
Но система при этом воспроизводит совершенно не тот звук, а проговаривает какие-то буквы.

Пробовал на 2х машинах: через RDP и локально - результат один и тот же.
Аудио-файлы тоже пробовал разные.

Если кто сталкивался, опишите, как боролись
1 Вафель
 
24.05.18
17:01
ты его пытаешься проговорить, а не воспроизвести
2 Вафель
 
24.05.18
17:02
юзай cmdmp3win.exe
3 Вафель
 
24.05.18
17:03
4 dmitryada
 
24.05.18
17:42
(1) То есть воспроизвести файл не получится через spVoice? И всё это развод?
5 dmitryada
 
24.05.18
17:43
(3) 404 ошибка на странице
6 dmitryada
 
24.05.18
17:45
(2) Блин для терминального сервера не особо наверное.
7 Вафель
 
24.05.18
18:09
(6) почему?
8 Базис
 
naïve
24.05.18
18:17
"стандартнейший код для воспроизведения звука" это всё же запуск файла средствами ОС.
9 Вафель
 
24.05.18
18:28
(8) у ос нет никаких средст для этого. только сторонние программы
10 dmitryada
 
24.05.18
18:50
(8) в том плане, что в каждой теме по звукам в 1С он приводится.
11 Базис
 
naïve
24.05.18
18:51
(9) ОК, под "ОС" называем мультимедийные комбайны "Виндус". Ассоциации сразу настроены, кодек для вавчика, Слава Богам, не нужен, винда это точно осилит.
12 Базис
 
naïve
24.05.18
18:51
Тебя слово "SpVoice" не настораживает?
13 Вафель
 
24.05.18
18:54
(11) лучше брать не комбайны. а минипроги (2)
14 dmitryada
 
24.05.18
19:00
(12) Меня нет :-) С 10 обсуждений видел, где у всех *.wav файлы таким методом якобы воспроизводит.
15 Сияющий в темноте
 
24.05.18
19:10
SpVoise прекрасно говорит голосом,и пользователь вполне поймет фразу Ne tot shtrih kod
а звук,это лишнее,т.к.1с его не умееи,а сторонние программы требуют аккуратного обращения
16 dmitryada
 
24.05.18
19:16
(15) Ну что-то похожее, как временное решение можно сделать. Просто при потоковом сканировании нужен адекватный положительный сигнал, что всё верно, и резкий отрицательный.

Так чтобы при тысячном повторении оператору не вынесло мозг типа "Ок", "Ок", "Ок".....
17 Злопчинский
 
24.05.18
20:28
(16) если железо ШК отсанировало правильно - далее отрабатывает программа. "ОК" это нужен когда ты не уверпен в собственном коде, который может сломатьяс в любом месте и не выйдет на воспроизведение звука тревоги.
.
а так - достаточно только звук тревоги, у меня при потоковм сканировании только звук тревоги и красный экран. если норм - то просто ждем дальнейшего сканировани яи все
18 dmitryada
 
24.05.18
20:50
(17) Круто! А звук тревоги-то как воспроизводите, поделитесь секретом :-)

В этом основной вопрос.
19 Злопчинский
 
25.05.18
02:45
(18) так как я работаю на 77 - то воспроизвожу без особых проблем. Formex, метод воспроизведения звуковых файлов. подсовываю ему соответствующий wav. а у одного клиента на приемке при сортировке товара по точкам по кросс-докингу - комп голосом говорит номер ячейки в которую кинуть товар. И все.
как на восьмерке - хз.
20 Сияющий в темноте
 
25.05.18
09:45
Если сканер с обратной связью,то можно пищать им самим,так пользователю удобнее.При при

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

у меня так инвентаризация алкоголя работала
21 тарам пам пам
 
25.05.18
11:04
Хм, у нас в конфе нормально все воспроизводится через SpVoice (файл именно проигрывается, не "зачитывается"), правда используется сразу SpVoice.Speak(), без создания промежуточного потока. Код такой:

Если Проигрыватель = Неопределено Тогда
    Проигрыватель = Новый COMОбъект("SAPI.SpVoice");
КонецЕсли;

SVSFlagsAsync = 1;
SVSFIsFilename = 4;
Flags = ?(Асинхронно, SVSFlagsAsync, 0) + SVSFIsFilename;
Проигрыватель.Speak(мФайл, Flags);
22 dmitryada
 
25.05.18
13:47
(21) Спасибо, попробовал. Но эффект тот же: как будто читает текст. А так тоже рабочий вариант. Видимо дело в самой SpVoice.
23 arsik
 
гуру
25.05.18
13:51
У меня вот так работает.

локЗвук = Неопределено;
локЗвук = Новый COMObject("SAPI.SpFileStream");

локДрайверЗвука = Неопределено;
локДрайверЗвука = Новый COMObject("SAPI.SpVoice");

локЗвук.Open(ФайлЗвука);
локДрайверЗвука.SpeakStream(локЗвук);
локЗвук.Close();
24 arsik
 
гуру
25.05.18
13:52
У тебя "1.wav" - точно *.wav. Может расширение одно а внутри мп3
25 dmitryada
 
26.05.18
11:06
(24) АААА!!!! ВЫ БОГ! реально дело в этом было!
Накачал звуков с расширением *.wav, а они ни грамма ни такие были!

Взял пропустил дорожку через конвертер и всё полетело!

arsik, спасибо!
26 dmitryada
 
26.05.18
11:10
(23) А Вы ФайлЗвука передаёте двоичными данными или адресом?
Закон Брукера: Даже маленькая практика стоит большой теории.