그리고 다시 dll과 시장 - 페이지 14

 
Реter Konow :
Expert Advisor가 이전에 녹음한 Files 폴더에서 사운드 파일을 재생할 수 있는 경우 수신된 사운드 파일이 완료되어야 문제 해결이 현실이 됩니다.
아니다! 설명서에는 사운드 파일이 사운드 폴더에 저장되어야 한다고 나와 있습니다.
https://www.mql5.com/ru/docs/common/playsound

이것은 주제에 대한 중요한 문제입니다. Files 폴더에서 파일을 재생하지 않으면 원칙적으로 PlaySound 가 사라집니다. 그러면 서버에서 아무 것도 반환할 필요가 없습니다. 무엇 때문에? 갑자기 PlaySound가 고문의 내부 리소스와 함께 작동하지 않는 한 저는 매우 의심스럽습니다...
 
누군가 Files 폴더에서 .wav를 실행해 보십시오. 흥미롭습니다. 갑자기 밝혀질 것입니다.))))
 
//+------------------------------------------------------------------+
//|                                                       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" );
  }
//+------------------------------------------------------------------+
피터 코노우:
누군가 Files 폴더에서 .wav를 실행해 보십시오. 흥미롭습니다. 갑자기 밝혀질 것입니다.))))

예, 작동합니다. 전체 폴더를 복사했습니다.

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

예 작동합니다. 전체 폴더를 복사했습니다.

그러나 이것은 이미 희망입니다.)))
 
Реter Konow :
그러나 이것은 이미 희망입니다.)))

런칭된 노래를 다시 한 번 확인했다

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

런칭된 노래를 다시 한 번 확인했다

https://yadi.sk/d/EGsTJGYBmDFnGg
글쎄, 그것은 당신이 항상 문서를 100% 신뢰할 필요는 없다는 것을 의미합니다)))

이제 차량이 서버에서 유효한 사운드 파일을 수신한 다음 한 곳에서 다시 녹음하고 이동 중에 재생하면 사용자에게 문자 메시지를 음성으로 전달하는 보편적인 솔루션의 작업이 해결됩니다.

추신. PlaySound 및 EA에서 만든 내부 리소스가 사운드를 재생할 수 있습니까? 그런 다음 파일에 파일을 쓸 필요가 없습니다. 즉시 리소스에 저장하고 플레이하세요.
 
Реter Konow :
글쎄, 그것은 당신이 항상 문서를 100% 신뢰할 필요는 없다는 것을 의미합니다)))

이제 차량이 서버에서 유효한 사운드 파일을 수신한 다음 한 곳에서 다시 녹음하고 이동 중에 재생하면 사용자에게 문자 메시지를 음성으로 전달하는 보편적인 솔루션의 작업이 해결됩니다.

추신. PlaySound 및 EA에서 만든 내부 리소스가 사운드를 재생할 수 있습니까?

나는 내 고문을 모른다-어디에서 어떤 행동이 일어나거나 잃는다.

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

자연스러운 멜로디나 사운드

 
Serhii Shevchuk :

볼 수는 있지만 내일 저녁 전에는 볼 수 없습니다. 그때까지 알아내지 못한다면.

막심 쿠즈네초프 :

작동하지 않습니다 :-)

왜 HTTP 헤더에 curl 명령 옵션을 전달합니까 ???

젠장, 글쎄, 적어도 책을 읽고, 예를 살펴보십시오 ... 그렇지 않으면 우리는 모든 카갈과 함께 당신을 위해 기사를 정말로 씁니다.

그래서 바이너리 파일로 출력하는 예제는 어디에서 얻을 수 있습니까!? ))

그것을 알아 내려고, 나는 명령 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

그것의 도움으로 TEST라는 단어가 포함된 wav 파일을 다운로드합니다.

옵션 제거

 //+------------------------------------------------------------------+
//|                                                   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);
     }
  }
//+------------------------------------------------------------------+


이제 헤더에 서버가 apikey를 기다리는 인증 옵션 -u가 있습니다. 모든 것이 논리적인 것처럼 보이지만 구문의 무언가가 여전히 잘못되었습니다.

코드 실행 결과 - " Webrequest4Voice (EURCHF,D1) 'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST' 로드 오류, 코드 401 "

말씀해 주시겠어요? ))

 
Nikolai Karetnikov :

그래서 바이너리 파일로 출력하는 예제는 어디에서 얻을 수 있습니까!? ))

그것을 알아 내려고, 나는 명령 url 자체의 구문을 최소화했습니다.


그것의 도움으로 TEST라는 단어가 포함된 wav 파일을 다운로드합니다.

옵션 제거


이제 헤더에 서버가 apikey를 기다리는 인증 옵션 -u가 있습니다. 모든 것이 논리적인 것처럼 보이지만 구문의 무언가가 여전히 잘못되었습니다.

코드 실행 결과 - " Webrequest4Voice (EURCHF,D1) 'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST' 로드 오류, 코드 401 "

말씀해 주시겠어요? ))

401 오류는 무엇을 의미합니까?
 

curl 옵션에서 WebRequest 옵션으로 HTTP 요청을 변환하려면:

1. 일반적으로 Wikipedia에서 HTTP가 작동하는 방식을 확인합니다.

2. Curl 문서에서 어떤 옵션이 무엇을 의미하며 왜 제공되는지 살펴보십시오.

3. WebRequest에 대한 도움말을 읽고 이 스레드에서도 많은 예를 확인하십시오.

4. 당신이 한 일을 깨닫고 코드를 작성하십시오 :-) 무엇, 왜, 왜가 대체되었습니다.

당신은 4가지 포인트가 모두 당신에게 도움이 될 것이라고 분명히 기대합니다. 나는 주말, 적은 시간, 많은 아이디어를 이해합니다. 빨리해야

그러나 여전히 스스로해야합니다.