- 浏览: 616736 次
- 性别:
- 来自: 厦门
文章分类
最新评论
-
咖啡舞者:
现在在厦门工作还好吧。
2013换工作记 -
huih1984:
工作8年,算起来楼主和我差不多岁数啊, ,本人现在干着没有合同 ...
2013换工作记 -
无心流泪wan:
乘法法则规定复数的乘法按照以下的法则进行:设z1=a+bi,z ...
帮朋友做的一笔试(友元 运算符重载) -
我叫营长1:
谢谢,很详细呢
SharedPreferences 的用法 -
javalinjx:
挺有意思的。哈哈
2013换工作记
做MTK开发也有一段时间,最近做一个产品,其中有一个测试功能,MTK自带的PC suit(PC同步工具)好像有问题一
直连接不上,所以无法使用,由于该功能是提供给测试部做测试使用,于是自己动手写了一段代码。
python原来没有用过,今天暂时看了一下,找了一段代码进行修改,主要参考两份文档,一份是python的语法,还有一份是pySerial这个类的使用,网址如下:
http://www.cnblogs.com/starspace/archive/2009/02/20/1394603.html
代码写完了,基本功能是没有问题,贴出来给大家参考使用。主要是对AT和操作,
# -*- coding=cp936 -*- #author:xusaomaiss@hotmail.com #datetime:2009-4-27 #comment:这个小程序主要用于测试MTK话机的电话本容量与短信箱的容量 #当然,也可以通进扩展,改造与PC端同步工具,MTK自带的软件也就是通过AT方式进行与终端同步信息 #ATClass这个类做为基类,一般不进行修改 #通过继承把业务相关放在MTKTest这个类中,小程序是用一天时间完成了,基本上满意我们公司测试部的要求 #大家可以把修改意见发到我邮箱,本人将不断完善。 import time, re, sys, os #import sms from cStringIO import StringIO import serial ENCODING = 'cp936' OK = '\r\nOK\r\n' FLUSH_TIMEOUT = 0.1 READ_TIMEOUT = 20 SEND_TIMEOUT = 20 RESET_RETRIES = 5 BAUDRATE=115200 class ATClass: def __init__(self, port,baudrate): try: self.timeout = READ_TIMEOUT self.ser = serial.Serial(port, baudrate=baudrate, timeout=FLUSH_TIMEOUT, rtscts=0) self.buff = '' except: print '串口初始化失败' sys.exit(0) def opencomm(self): try: self.ser.open() except: print '打开串口失败' sys.exit(0) def reset(self): for i in range(RESET_RETRIES): try: self.at_command('ATZ\r\n', OK) self.at_command('ATE0\r\n', OK) # must turn the echo off return 'OK' except TimeoutException: pass raise ResetException, "Unable to reset" def flush(self): while self.ser.read(1024): pass def at_command(self, text, response=None, timeout=SEND_TIMEOUT): self.flush() self.ser.write(text) return response and self.wait_for(response, timeout) def wait_for(self, response, timeout=READ_TIMEOUT): end = (timeout or self.timeout) + time.time() result = '' while time.time() < end: data = self.ser.read(1) if len(data): result += data if result.endswith(response): return result return False def at(self): try: return self.at_command('AT\r\n', OK) except TimeoutException: return '' def close(self): self.ser.close() def error_code(text): match = re.match(r'\r\n\+CMS ERROR: (\d+)\r\n', text) return match and int(match.group(1)) class MTKTest (ATClass): def __init__(self, com, rate): ATClass.__init__(self, com, rate) def addOnePhoneTest(self,i): data = 'AT+CPBW='+str(i)+',"'+str(i)+'",129,"name'+str(i)+'"\r\n' return self.at_command(data, OK) def addOneSMSTest(self,i): strRespone = '' data = 'AT+CMGW="10086","STO SENT"\r\n' # data = 'AT+CMGW="10086","REC UNREAD"\r\n' #保存到收件箱未读短信 # data = 'AT+CMGW="10086","REC READ"\r\n' #保存到收件箱已读短信 # data = 'AT+CMGW="10086","STO UNSENT"\r\n' #保存到发件箱中的未发送短信 # data = 'AT+CMGW="10086","STO SENT"\r\n' #保存到发件箱中的已发送短信 strRespone = self.at_command(data, '\r\n>') if strRespone.find('>')>0: data = 'linhai'+str(i)+'\x1A' strRespone = self.at_command(data, OK) if strRespone.find('OK')>0: return True else: print '添加短信失败' return False #添加短信测试 def addSMSTest(self): #设置短信方式为TEXT格式,注意,这种格式不能发中文 data = 'AT+CMGF=1\r\n' strRespone = self.at_command(data, OK,SEND_TIMEOUT) print '**************bgein add sms test**************' count = 0 i = 0 strRespone = '' for i in range(10): try: strRespone = self.addOneSMSTest(i) if strRespone == False: count = count+1 if count ==3: print '错误超过三次,退出添加短信测试' return False else: print '添加短信成功:'+str(i) print '-----------------------------------' except: pass print '\r\n**************结束添加短信测试**************' #添加电话本测试 def addPhoneTest(self): print '**************bgein add phone test**************' #设置电话本存储的位置 data = 'AT+CPBS="me"'#me为保存在终端 #data = 'AT+CPBS="sm"' #sm为保存为SIM卡 self.at_command(data, OK) count = 0 i = 0 strRespone = '' for i in range(1000): try: strRespone = self.addOnePhoneTest(i) if strRespone == False: count = count+1 print '添加电话本:'+str(i) print '错误!!!真实返回: Error\r\n期望:OK' if count ==3: print '错误超过三次,退出添加电话本测试' return False else: print '添加电话本成功:'+str(i) print '-----------------------------------' except: pass print '\r\n**************结束添加电话本测试**************' class SerialException(Exception): def __init__(self, text): print 'exception ' ,text self.text = text code = error_code(text) if not code is None: print 'error code %d' % code def __repr__(self): return self.text class TimeoutException(SerialException): pass class ResetException(SerialException): pass if __name__=='__main__': try: #说明:com port 1使用参数0 我机子上是comport7所以使用6 mtkTest = MTKTest(6,115200) mtkTest.opencomm() mtkTest.reset() # mtkTest.addPhoneTest() mtkTest.addSMSTest() finally: mtkTest.close()
这个工程使用eclipse+python+pyserial-2.2.win32.exe
以上文件都可在网络上很方便的下载到。附件是上面代码的py文件。
注意:一定要使用python2.4版本,主要原因是我使用的pyserial-2.2.win32,这个东东它支持的是2.4版本.
在使用python时,感觉它的版本好多
- MtkTest.rar (521.4 KB)
- 下载次数: 29
发表评论
-
自己的感想:如何在非纯软件公司做研发
2010-11-17 10:16 2260在这家公司挺多年的,公司是以硬件销售为主,也这个是 ... -
转 从我写程序那天起:我就没打算写程序
2010-08-31 16:23 1751序: 大约是前年的时 ... -
oracle自动备份脚本
2010-07-29 09:16 979具体参看附件 -
元宵节后上班
2010-03-01 16:23 1087在新岗位上工作一星期了,慢慢有点感觉了。今天早上经 ... -
Modem 安装指南.pdf
2009-10-16 08:13 1033MTK模块建立拔号上网的指南,有时可以用做检验模块GPRS拔号 ... -
是什么在阻碍移动公司电子渠道的发展
2009-09-28 18:01 1486如果从一个软件工程师的角度来分析这个问题,可能显得十分狭隘。但 ... -
嵌入式系统数据同步协议 SyncML 简介
2009-05-27 09:31 2237目前在嵌入式系 ... -
SubVersion服务器Windows安装指南
2009-05-18 16:32 2656SubVersion及TortoiseSVN下载 ... -
WinCVS 1.3.6.1简明操作指南
2009-05-18 13:59 2757作者:陈先波 邮件:turbochen@163.com ... -
MTK之LCD亮度调整测试代码块
2009-05-14 15:05 2780前一段的东西做完了准备要提交测试了,这次是第二版本 ... -
MTK打印之:定时器设计两式比较
2009-05-13 20:49 2271MTK打印之:定时器设计 ... -
如何使用Outlook Express拒收邮件
2009-05-13 15:07 1683我们公司有上bu ... -
使用StarUML建模
2009-05-09 15:40 4341http://javasso.cn/2009/04/29/%E ... -
Writing SMS Messages to Memory / Message Storage
2009-04-28 09:04 2277转自:http://www.developershome.co ... -
串口通讯的python模块——pySerial
2009-04-27 19:42 9126pySerial Overview This modu ... -
设计模式趣解
2009-04-24 08:32 11111、FACTORY-工厂模式:追MM少不了请吃饭了,麦当劳的 ... -
我对acts as tree的理解及应用
2007-04-30 17:13 2880最近在看敏捷一书,把我对Acts as tree一节的理解写下 ...
相关推荐
本文将详细讲解如何使用"MTK芯片_电话本_短信息备份工具"来解决这个问题。这个工具设计的目的在于帮助那些使用非智能机的用户,在更换新手机时能够方便地将通讯录和短信导出,确保数据不丢失。 首先,我们来看看这...
其次,短信同步也是一个亮点。在日常生活中,短信可能包含着重要的对话记录、验证码或是其他关键信息。使用这款工具,用户能够将手机中的短信备份到电脑,防止误删或意外丢失。同时,如果需要查找特定的短信记录,...
可以下载 MTK6235 的手机的电话本到电脑,并且支持多个号码下载,不会弹出错误提示,不过短信、彩信、图片等同步功能还不行。如果哪位有更好的版本,欢迎回复! 在 MTK6235(BB Chip: MT6235,E04)上亲测成功! ...
MTK PhoneSuite 2.3.0是一款专为MTK(MediaTek)平台智能手机设计的PC端同步软件,旨在帮助用户高效地管理他们的手机数据,包括联系人、短信、音乐、图片等。这款软件更新至2.3.0版本,带来了更稳定的功能和优化的...
《MTK主要模块详细设计说明书》是一份深入探讨MTK平台关键功能模块设计的专业文档,主要涵盖了电话本、信息和设置等日常使用的核心模块。这份说明书对于理解MTK( MediaTek,联发科)芯片组在智能手机和平板电脑等...
Gemini UI变更涉及到了双卡功能相关的用户界面调整,如状态栏、电话簿、短信等模块。 #### 二、Gemini UI变更表 ##### 2.1 Idle Screen(空闲屏幕) - **变更描述**:增加了SIM2的相关状态图标显示,使得用户能够...
- 模拟真实手机操作:PhoneUI可以仿真手机的各个功能,包括拨号、接打电话、发送接收短信、设置等。 - 多语言支持:通过Lang开头的DLL文件,PhoneUI可以支持多种语言,满足全球化需求。 - 主题定制:ThemeCreator...
针对这些采用MT6225-MT6227芯片组的手机,MTK驱动与操作软件包提供了一个集成了多种功能的工具集合,解决了手机与电脑之间的连接难题,使得用户能够轻松进行数据同步、短信和电话簿的管理。 MT6225至MT6227芯片系列...
配合`phoneSuite电话本备份工具`,用户可以更方便地管理和备份手机上的联系人信息。这类工具通常提供批量导入/导出、同步等功能,确保数据安全,避免因手机故障或更换设备时丢失重要联系人。 总的来说,MTK6225驱动...
- **含义**:串行外设接口,是一种同步串行数据传输协议。 - **功能**:允许微处理器与各种外围设备进行高速数据交换。 - **应用场景**:传感器、存储器芯片、显示器驱动等。 #### LCD: Liquid Crystal Display - *...
PhoneSuite1.2是一款专为MTK(Mediatek)平台手机设计的软件,它提供了与个人计算机进行数据同步和管理的强大功能。这款工具的主要目标是帮助用户方便地备份和恢复手机上的重要数据,如联系人(电话簿)、照片以及...
6. **消息服务**:提供了发送和接收消息的能力,包括短信、彩信等。 7. **信息交换接口**:定义了应用程序间的数据交换格式和协议。 8. **桌面系统**:涉及桌面环境下的功能和服务,如个人信息管理、系统设置等。 ...