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. Kafka 0.8 配置参数解析

    http://kafka.apache.org/documentation.html#configuration   Broker Configs 4个必填参数, broker.id Each bro ...

  2. WIN7 64位系统下的服务程序更新失败问题解决

    自己用DELPHI做了个小的服务在后台运行,帮助自己做一些琐事,今天修改了一下代码结果重启服务的时候一直还是以前的状态,新加的代码没任何效果. 1.检查程序没问题呀 2.关闭SSD缓存硬盘问题仍旧 3 ...

  3. 【转】设计模式(三)建造者模式Builder(创建型)

    (http://blog.csdn.net/hguisu/article/details/7518060) 1. 概述 在软件开发的过程中,当遇到一个"复杂的对象"的创建工作,该对 ...

  4. ROSE User Case View

    用例视图(User Case View) 在面向对象的分析过程中,此视图应该是需求分析的过程中采用,主要包括如下过程 01涉众分析--->02业务分析--->03概念分析--->04 ...

  5. UBUNTU 14.04 安装 OPENCV 2.4.9

    1.  从OpenCV.org 下载源代码 opencv-2.4.9.zip 2. 解压到准备好的目录 unzip opencv-2.4.9.zip 3. 进入源码目录,创建release目录 cd ...

  6. 解决微软的两个恶心问题(VS2008死机、Win2008 WAS无法启动)

    1.Visual Studio 2008,在切换到Web设计界面或Html Markup界面时,过一段时间就出现假死,点击任何地方没反应,也关闭不了,只能用任务管理器结束任务. 上网查了下,应该是先装 ...

  7. docker-compose bug

    annot mount volume over existing file, file exists /var/lib/docker/aufs/mnt/0ac71fed1af802a4ecf4a93b ...

  8. Docker Device Mapper 使用 direct-lvm

      一.Device Mapper: loop-lvm 默认 CentOS7 下 Docker 使用的 Device Mapper 设备默认使用 loopback 设备,后端为自动生成的稀疏文件,如下 ...

  9. 【摘自网络】陈奕迅&&杨千嬅

    揭陈奕迅杨千嬅相爱18年恋人未满的点滴片段 文/一床情书 但凡未得到,但凡是过去,总是最登对 ——题记 已经仙逝多年的香港歌坛天后梅艳芳曾经在<似是故人来>里唱道:“但凡未得到,但凡是过去 ...

  10. Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台 Seesaw

    负载均衡系统 Seesaw Seesaw是由我们网络可靠性工程师用 Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台,就像所有好的项目一样,这个项目也是为了解决实际问题而产生的. Seesa ...