e novamente dll e mercado - página 14

 
Реter Konow:
Se um arquivo de som puder ser reproduzido da pasta Arquivos, onde é pré-gravado pelo consultor especializado, então a solução do problema será real, se o arquivo de som resultante for integral.
Não! A documentação diz que os arquivos de som devem ser armazenados na pasta Sounds.
https://www.mql5.com/ru/docs/common/playsound

Esta é uma questão crítica para o tema. Se o arquivo não for reproduzido da pasta Arquivos, então o PlaySound está fora de questão. Então, não há necessidade de devolver nada do servidor. Por quê? A menos que o PlaySound de repente deixe de trabalhar com o recurso interno da EA, o que duvido muito...
 
Alguém tente executar o .wav a partir da pasta Arquivos. Será que funciona)).
 
//+------------------------------------------------------------------+
//|                                                       Sounds.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   PlaySound("\\Files\\Sounds\\alert.wav");
   Sleep(1*1000);
   PlaySound("\\Files\\Sounds\\request.wav");
   Sleep(1*1000);
   PlaySound("\\Files\\Sounds\\email.wav");
  }
//+------------------------------------------------------------------+
Реter Konow
:

Alguém tente executar o .wav a partir da pasta Arquivos. Será que funciona)).

sim funciona eu copiei a pasta inteira

C:\Users\San\AppData\Roaming\MetaQuotes\Terminal\3 DE8A6E768D9369994F541727D733DE8\MQL5\Files\Sounds\
 
Alexsandr San:

sim funciona eu copiei a pasta inteira

Agora isso, essa é a esperança)).
 
Реter Konow:
Agora isso, isso é esperança)).

checou a canção e a executou novamente

   Sleep(1*1000);
   PlaySound("\\Files\\Sounds\\Kazka.wav");
https://yadi.sk/d/EGsTJGYBmDFnGg
 
Alexsandr San:

checou a canção novamente e a iniciou

https://yadi.sk/d/EGsTJGYBmDFnGg
Bem, então você nem sempre tem que acreditar na documentação))))

Agora, se o TC receber arquivos de áudio válidos do servidor, então regravados em um lugar e reproduzidos na hora, então a tarefa de solução universal para a locução de mensagens de texto para o usuário será resolvida.

ZS. O PlaySound também pode reproduzir o som dos recursos internos criados pela EA? Então, não há necessidade de escrever o arquivo em Arquivos. Salve imediatamente o arquivo no recurso e reproduza-o.
 
Реter Konow:
Bem, você nem sempre precisa acreditar na documentação))))

Agora, se o TC receber arquivos de som válidos do servidor, então regrave-os em um lugar e reproduza-os na hora, então o problema da solução universal de voz-off de mensagens de texto para o usuário será resolvido.

ZS. Talvez o PlaySound possa tocar o som a partir de recursos internos criados pela EA?

Não sei, em meu Conselheiro Especialista - onde há alguma ação, ela joga

                     ObjectsDeleteAll(0,InpObjDownNameG);
                     IndicatorDelete();
                     PlaySound("ok.wav");
                     if(InpChartInd && Obj_SELLChartInd())
                        return;

é claro que sua própria melodia ou som

 
Serhii Shevchuk:

Eu posso dar uma olhada, mas não antes de amanhã à noite. Se você ainda não tiver resolvido sozinho até lá.

Maxim Kuznetsov:

e você não vai :-)

por que você coloca as opções de comando de ondulação nos cabeçalhos HTTP?

Por que você ao menos não lê alguns livros, olha alguns exemplos... caso contrário, todos nós escreveremos um artigo para você

Então, onde posso obter um exemplo com a saída para um arquivo binário? ))

tentando descobrir, minimizei a sintaxe do próprio comando url


curl -X GET -u ^
apikey:GR1bb3zVMs9fcNKL6pA9-5 zj9ptWliCu6eh9oupUnpZB ^
--output hello_world.wav ^
https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST

eu o uso para baixar um arquivo wav com a palavra TESTE nele

então remova as opções

//+------------------------------------------------------------------+
//|                                                   WebRequest.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string cookie=NULL,headers;
   char   post[],result[];
   char cost_char_data[];
   string  result_headers;
   
   headers = "-u apikey:GR1bb3zVMs9fcNKL6pA9-5zj9ptWliCu6eh9oupUnpZB --output hello_world.wav";
   string url="https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST";
   ResetLastError();
   int res = WebRequest("GET",url,headers,1000,cost_char_data,result,result_headers);
   if(res==-1)
     {
      Print("Ошибка в WebRequest. Код ошибки  =",GetLastError());
      //--- возможно, URL отсутствует в списке, выводим сообщение о необходимости его добавления
      MessageBox("Необходимо добавить адрес '"+url+"' в список разрешенных URL во вкладке 'Советники'","Ошибка",MB_ICONINFORMATION);
     }
   else
     {
      if(res==200)
        {
         //--- успешная загрузка
         PrintFormat("Файл успешно загружен, размер %d байт.",ArraySize(result));
         //PrintFormat("Заголовки сервера: %s",headers);
         //--- сохраняем данные в файл
         int filehandle=FileOpen("output hello_world.wav",FILE_WRITE|FILE_BIN);
         if(filehandle!=INVALID_HANDLE)
           {
            //--- сохраняем содержимое массива result[] в файл
            FileWriteArray(filehandle,result,0,ArraySize(result));
            //--- закрываем файл
            FileClose(filehandle);
           }
         else
            Print("Ошибка в FileOpen. Код ошибки =",GetLastError());
        }
      else
         PrintFormat("Ошибка загрузки '%s', код %d",url,res);
     }
  }
//+------------------------------------------------------------------+


no cabeçalho agora é a opção de autorização -u, atrás da qual o servidor espera pela apikey. Parece fazer sentido, mas algo na sintaxe ainda está errado

O resultado da execução do código é"Webrequest4Voice (EURCHF,D1) Erro de carregamento 'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST', código 401".

Você pode me dar uma dica? ))

 
Nikolai Karetnikov:

Então, onde podemos obter um exemplo com saída para um arquivo binário!? ))

tentando descobrir, minimizei a sintaxe do próprio comando url


baixe um arquivo wav com a palavra TESTE nele

então remova as opções


no cabeçalho agora a opção de autorização -u atrás da qual o servidor espera pela apikey. Parece fazer sentido, mas algo na sintaxe ainda está errado

resultado do código -"Webrequest4Voice (EURCHF,D1) Erro de carregamento 'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST', código 401"

Você pode me dar uma dica? ))

O que significa erro 401?
 

Para traduzir uma solicitação HTTP das opções de enrolar para parâmetros WebRequest, você tem que fazê-lo:

1. em geral, veja a wikipedia para ver como o HTTP está estruturado

2. Verifique na documentação Curl para ver o que significam as opções e por que elas são usadas

3. Leia a ajuda do WebRequest e veja exemplos, mesmo neste tópico muitas vezes

4. você deve escrever o código estando ciente do que fez :-) o que, por que e por que é usado.

Você está obviamente esperando que todos os 4 pontos sejam feitos por você. Eu entendo que é fim de semana, o tempo é curto e você tem muitas idéias. Tem que ser rápido.

Mas você ainda tem que fazer isso você mesmo.