import threading,time,serial,sys
from random import randrange
 
port_snd=14
port_recv=2
recnt=0
ser_snd=serial.Serial(port_snd,115200,timeout=0)
ser_recv=serial.Serial(port_recv,115200,timeout=0)
con = threading.Condition()
flag=0
recv_rdd=[]
snd_rdd=[]
sndset=['0','1','2','3','4','5','6','7','8','9','A','B','C','D','*','#']
filename='log_dtmg_'
fid=open(filename+time.strftime('%m_%d_%H_%M')+'.log','w')
 
 
def recv_rd():
      ss =ser_recv.readlines()
      for ln in ss:
            print ln+'                                         <-Recv: '
            fid.write(ln+'\nLength of rd is '+str(len(ss))+'\n')
            fid.flush()
      return ss
def snd_rd():
      ss =ser_snd.readlines()
      for ln in ss:
            print ln+'                                        ->Snd'
            fid.write(ln+'\nLength of rd is'+str(len(ss))+'\n')
            fid.flush()
      return ss 
 
 
#recv
def recv():
      global flag,sndc
      if con.acquire():
            while True:
                  if flag%2==1:
                        print str(flag)+' '+'Recv...active...'
                        fid.write(str(flag)+' '+'Recv...active...\n')
                        recnt=0
                        while '+TONE:'+str(ord(sndc))+'\r\n' not in recv_rd():
                              recnt+=1
                              time.sleep(0.05)
                              if recnt>20:
                                    print str(flag)+' '+'                                                     <-Recv failed!!'
                                    flag+=1
                                    con.notify()
                                    break
                        else:
                              print str(flag)+' '+'                                                            <-Recv Success!!'
                              flag+=1
                              con.notify()
                        print recnt
                  #time.sleep(2)           
                  con.wait()   
#send
def snd():
      global flag,sndc
      if con.acquire():
            while True:
                  sndc=sndset[randrange(16)]
                  if flag%2==0:
                        ser_snd.write('at+vts='+sndc+'\r\n')
                        print str(flag)+' '+'Send...acttive....'
                        fid.write(str(flag)+' '+'Send...acttive....\n')
                        sndcnt=0
                        while 'OK\r\n' not in snd_rd():
                              time.sleep(0.05)
                              sndcnt+=1
                              if sndcnt>20:
                                    print str(flag)+' '+'Send failed!!'                                
                                    flag+=1
                                    con.notify()
                                    break
                        else:
                                    flag+=1
                                    con.notify()
                        print sndcnt
                  #time.sleep(2)
                  con.wait()
 
 
print 'Main Thrd:: starting at: '+time.ctime()+'\n\n'
 
t_snd=threading.Thread(target=snd)
t_recv=threading.Thread(target=recv)                      
 
t_snd.start()
t_recv.start()
t_snd.join()
t_recv.join()

DTMF Stresstesting的更多相关文章

  1. DTMF三种模式(SIPINFO,RFC2833,INBAND)

    转自:http://www.tuicool.com/articles/n6Vb2iJ 1.DTMF(双音多频)定义:由高频音和低频音的两个正弦波合成表示数字按键(0~9 * # A B C D). 2 ...

  2. 使用Goertzel算法识别DTMF信号

    Goertzel算法 Goertzel算法由Gerald Goertzel在1958年提出,用于数字信号处理,是属于离散傅里叶变换的范畴,目的是从给定的采样中求出某一特定频率信号的能量,用于有效性的评 ...

  3. DTMF的原理分析

    转自:http://blog.csdn.net/wangwenwen/article/details/8264925 1. DTMF原理 DTMF(Double Tone MulitiFrequenc ...

  4. FreeSWITCH收到重复的DTMF信号

    一.背景 用户是运营商手机,拨打的是运营商的固话号码进入的FreeSWITCH的IVR,进入IVR语音播报后,按指定的分机号呼相关人员. 二.现象 用户反映拨打124870找不到指定人员,以前是正常的 ...

  5. 蓝牙协议 HFP,HSP,A2DP,A2DP_CT,A2DP_TG,AVRCP,OPP,PBAP,SPP,FTP,TP,DTMF,DUN,SDP

    简介: HSP(手机规格)– 提供手机(移动电话)与耳机之间通信所需的基本功能. HFP(免提规格)– 在 HSP 的基础上增加了某些扩展功能,原来只用于从固定车载免提装置来控制移动电话. A2DP( ...

  6. DTMF在VOIP中的解决方案

    双音多频DTMF(Dual Tone Multi-Frequency)信令,因其提供更高的拨号速率,迅速取代了传统转盘式电话机使用的拨号脉冲信令.DTMF也应用在交互式控制中,诸如语言菜单.语言邮件. ...

  7. 什么是FSK制式?什么是DTMF制式?

    目前国内来电显示制式有FSK.DTMF(双音频)两种,普通推广的是FSK."来电显示"又称"主叫号码显示"(Calling Identity Delivery) ...

  8. FreeSWITCH检测DTMF数据的方法

    一.RFC2833 1. 介绍: RFC2833为带内检测方式,通过RTP传输,由特殊的rtpPayloadType即TeleponeEvent来标示RFC2833数据包.同一个DTMF按键通常会对应 ...

  9. 如何才能知道外线是FSK还是DTMF制式?

    在直线上接上来电显示话机,然后用手机或其他电话拨接电话的外线号码. 1.如果是先振铃后来显,就是FSK制式. 2.如果先送来显,再振铃或来显和振铃同时响应,就是DTMF制式 交换机默认配置是FSK制式 ...

随机推荐

  1. php中ajax跨域请求---小记

    php中ajax跨域请求---小记   前端时间,遇到的一个问题,情况大约是这样: 原来的写法: 前端js文件中: $.ajax({ type:'get', url:'http://wan.xxx.c ...

  2. 【转载】在LoadRunner向远程Linux/Unix执行命令行并收集性能数据

    前面介绍过在LoadRunner的Java协议实现“使用SSH连接Linux”,当然连接之后的故事由你主导. 今天要讲的,是一个非Java版本.是对“在LoadRunner中执行命令行程序之:pope ...

  3. memcached使用详解

    不错的文章 http://www.ttlsa.com/memcache/memcached-description/

  4. Maximum Likelihood

    https://en.wikipedia.org/wiki/Maximum_likelihood_estimation http://mathworld.wolfram.com/MaximumLike ...

  5. The Producer-Consumer Relationship Version 2

    Listing -. The Producer-Consumer Relationship Version public class PC { public static void main(Stri ...

  6. Delphi XE5 与其他版本共存

    来源于http://www.board4allcz.eu 作者是gateway 如果你想使用Delphi诸如XE4.XE3.XE2.XE之类的版本跟Delphi XE5共存的话,在cglm.ini中简 ...

  7. 强调语气<strong>和<em>标签,文字设置单独样式<span>

    区别:1,<em> 表示强调,<strong> 表示更强烈的强调. 2,并且在浏览器中<em> 默认用斜体表示,<strong> 用粗体表示. 3,两个 ...

  8. HTTP访问的两种方式(HttpClient+HttpURLConnection)整合汇总对比

    HttpClient: HttpClient是Apache Jakarta Common下的子项目,用来提供高效的.最新的.功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版 ...

  9. 闭包 Clousure

    闭包 Clousure 参考:http://caibaojian.com/javascript-closures.html?fid=776%230-tsina-1-25974-397232819ff9 ...

  10. [LeetCode] Combination Sum II (递归)

    Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in ...