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. HTML Questions:Front-end Developer Interview Questions

    What's a doctype do? Instruct the browser to render the page. What's the difference between standard ...

  2. 制作支持UEFI PC的Server2008 R2系统安装U盘

    下载R2系统 ISO ed2k://|file|cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_x6 ...

  3. Java的访问控制

       类内部  本包(实例.类变量和方法)  子类(任何位置) 外部包(实例.类变量和方法) public    √  √  √  √ protected   √  √  √  × default  ...

  4. w_click_twice

    var w_global_obj; var dat = new Date(); var w_golbal_count_millseconds; function w_click_twice(w_cur ...

  5. jdk Tomcat配置

    安装Tomcat需要先安装JDKJDK安装JDK安装会有两次,两次不能再同一目录 你可以新建两个文件夹 JDK JRE 第一次安装在JDK 第二次在JRE在我的电脑右键属性 高级系统设置 环境变量 系 ...

  6. Python之 for循环\while循环

    list或tuple可以表示一个有序集合.如果我们想依次访问一个list中的每一个元素呢?比如 list: L = ['Adam', 'Lisa', 'Bart'] print L[0] print ...

  7. Java实验报告五:Java网络编程及安全

    Java实验报告五:Java网络编程及安全                                                                               ...

  8. 使用JetBrains dotMemory 4.0分析内存

    安装下载地址:http://www.jetbrains.com/profiler/ 1.在本地启动web应用后,打开dotMemory,附加进程 2.附加后会看到集中颜色得粗条,不断往左边走动,这是内 ...

  9. python 输出乱码

    在Python中有两种默认的字符串:str和unicode.在Python中一定要注意区分“Unicode字符串”和“unicode对象”的区别.后面所有的“unicode字符串”指的都是python ...

  10. ThreadLocal知识总结

    以前学习<Thinking in Java>时,了解过ThreadLocal,但没做笔记.现在又忘记了.嗯,要勤动笔.API中ThreadLocal的方法: public T get() ...