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. mysql join表连接

    1.表连接,就是将两个表合并起来,被合并的表的记录要通过中间字段,一一匹配起来左边的表的记录,形成一张临时的合并的表,并且每条记录的值都是两张表一一准确对应的 实例 尝试以下实例: root@host ...

  2. spring mvc传入参数不仅仅转换为json,还可以直接将json字符串转换为具体的java对象

    1.controller层 /** * 查看主播资料 * * @return */ @RequestMapping(value = { "/actor_details" }, me ...

  3. php时间函数time(),date(),mktime()区别

    php时间函数time(),date(),mktime()区别   浏览:1161 发布日期:2014/12/18 分类:系统代码 关键字: php时间函数 time() date()mktime() ...

  4. phpstorm8注册码

    phpstorm8注册码 phpstorm 8 注册码   用户名:Learn Programming License key:(包括LICENSE BEGIN和LICENSE END部分) ==== ...

  5. MP20 MBO issue summary

    MP3 MBO经验,教训 改名字HGA003_PTOT_01,发现居然闪现进度条,正常情况是不会闪现进度条的,只是改个名字而已,怀疑之前用过这个名字,所以我后来改成HGA003_PTOT_03了. 先 ...

  6. ubuntu日志清理

    由于ubuntu日志文件syslog 和 kern.log 时刻在增长,一会儿就使得根目录文件夹不够用了,需使用如下命令清理 sudo -i输入密码echo  > /var/log/syslog ...

  7. 在Delphi中如何控制其它应用程序窗口

    在编写Delphi的应用程序中,常常涉及对其它Windows应用程序的操作.例如,在数据库的管理系统中,财务人员需要使用计算器,即可调用Windows内含的计算器功能,若每次使用,均通过“开始/程序/ ...

  8. 怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图?

      分类: OpenCV [Q1]怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图? 进行灰度化,IplImage* pImg = cvLoadImage( "C:\\1.b ...

  9. yum change source repo centos共存安装sun jdk6和jdk7

    之前一直使用的是163的源,今天从微博看到阿里云推出了自己的源.因为我的主机是阿里云,所以可以走内网,速度提升更快.过程如下:cd /etc/yum.repos.d/mv mv CentOS-Base ...

  10. Redis学习一 五种基本的数据类型

    首先一定要确保Redis是运行这的. 不知道为啥,我的电脑陪完服务以后,刚配完的时候好使,已重启就不行了,死活起不来. 好吧,这些暂时不是很重要. 运行 redis-server.exe 在开一个窗口 ...