>>>И кстати вопрос специалистам: в чем отличие AT+VTS и AT+CLDTMF?
>>>не могу добиться DTMF-тона через CLDTMF, только через VTS
AT+VTS - команда последней соте сгенерить DTMF принимающему звонок.
AT+CLDTMF - генерим DTMF сами себе "в ухо" - то есть на приемной стороне его и не будет
Кроме того операторы сами выставляют генерируюмую на последней соте длительность.
От ~80 до ~1000 мс - Киевстар, ~80мс до ~25с - МТС
AT+VTS не генерит сама DTMF, она только командует сгенерить последней соте. А там как оператор выставил, так и сгенерится.
Стандартом DTMF длительность только рекомендовано делать 250-300мс, но нет фиксированого значения.
И поэтому не все соблюдают. А значит работа пультов с "укороченым" DTMF при генерации командой AT+VTS становится невозможной. Ну а прием DTMF сгенерированого в аудиоканал это тоже лотерея. Фазовые искажения зачастую сводят достоверность к нулю.
Позволю себе цитату из документа Telit -
http://www.glyn.com.au/Resources_Telit_FAQ.htmQ - Can you clarify the performance of the GSM voice channel for custom DTMF signalling?
A - If I've understood well how the application works, the DTMF tone is sent through the voice channel from the microphone of the module and received on the speaker of the second module/phone like a voice signal. This could cause problems because the GSM vocoder cannot manage single or double tones (the voice is modulated) and sometime it can start modulating its amplitude with a variation from 0% to 100% depending on the frequency.
This is not a specific problem of Telit or other manufacturers’ modules but it is related to the GSM technology. Only constructed tones like the one generated by AT+VTS can be received without any problem because the tone is not sent on the voice channel as an analogue signal but as a digital one and regenerated by the DSP receiver.
И еще одна цитата - www.telit.com/module/infopool/download.php?id=900 - глава 11
The DTMF detection problem
The standard detection algorithms are not able to recognize the DTMF components sent through a GSM voice channel by the application of the customer.
Далее идет объяснение принципа генерации DTMF и в части 11.3. мы видим выводы
Suggestions
After these considerations we suggest the following:
* do not generate DTMF signal externally to send them through the voice channel
* send DTMF signal by the command AT+VTS
* set the SIDETONE OFF during DTMF signal sending
If you need to implement the second scenario, accepting the distortion due to voice channel compression, don’t forget that the maximum input lines level is: 1,03Vpp/365mVrms @ MicGain=0dB
In fact higher DTMF signal levels cause saturation of of the AFE amplifier stages, with further unwanted harmonic components generation.
Это как раз речь идет о общей проблеме сети, а не конкретного модуля.
То есть гарантировано будет распознаваться только то что сгенерил оператор. Но не поданое в аудиоканал.
Теперь по поводу длительности паузы. Вот как Simcom разъясняет работу AT+VTD совместно с AT+VTS
AT+VTD & AT+VTS
In fact, both in SIM300 and SIM900, this command is only can be used for setting the duration of pause between charaters, it can't set the duration of symbols. The duration of symbols is also network depended. You mentioned that customer can get the difference with AT+VTD=128 and AT+VTD=1 in SIM300. OK, here is the reason: the duration of one symbol is 300mS, and the duration of pause between characters is 100ms(AT+VTD=1), so the duration of symbol will be cut off. Then you will feel that it is different with AT+VTD=128. This is the problem of SIM300. But in SIM900, the 300mS duration of symbol won't be cut by the 100mS pause duration betwwen characters.