自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (2)
  • 收藏
  • 关注

原创 iPhone手机GPS时速表,里程表与海拔表

前段时间开发的iphone手机“GPS位置记录与分享”应用,不少用户觉得很实用。一些户外用户提出希望加入海拔功能。经过长时间的研究开发测试,完成了GPS时速表,里程表与海拔表功能。

2013-09-22 07:52:59 7528 2

原创 我开发的几个手机应用

随着手机计算能力的不断增强,手机屏幕分辨率不断的变大,手机越来越成为一个计算中心。人们用手机不仅仅只是通信,也用来娱乐,用来交流,用来快速学习接受新东西。这几年,我在业余写了几个手机应用,主要是iOS平台与android平台。1. iPhone手机上的GPS位置记录与分享。这个应用主要用来记录一个地点的GPS数据信息,从而可以在电子地图上标注该位置。可以用在许多需要

2013-08-09 06:50:25 3477 4

原创 iPhone手机上的GPS位置共享应用

今天上午出去办点事情,在朝阳门内大街,看到一个拉着行李箱的美女,手里拿着iPhone手机,在那里好像焦急等待的样子,今天的天气真好,太阳直直的晒着。我真想走过去问问美女是不是迷路了,或者是不是不知道怎么走了,或者不能告诉清楚朋友自己身处何地。但是我没有,怕被怀疑为另有所图。其实我真的是另有所图,就是想告诉该美女,如果迷路或者需要朋友来接自己,可以下载安装我的GPS Share应用然后就可以通过短信

2013-05-24 13:21:17 10795 5

原创 iPhone手机上的GPS位置信息采集与分享应用

去年给清华大学水利系设计实现了一款iPhone手机上的校友会应用。由于需要通过iPhone手机上报校友的位置信息,需要在iPhone手机地图上显示世界各地的校友位置,所以对iOS平台的GPS与地图功能做了很深入的研究,最终顺利完成了校友位置上报与校友位置在地图上标注的功能。详情请参考:https://itunes.apple.com/cn/app/qing-hua-shui-li/id597204

2013-05-23 16:26:31 4205

原创 世界名著精选iOS电子书诞生记

这几年,人们坐地铁时,已经不在看报纸或者看纸质书了,都是玩手机。不是玩游戏,就是看电子书,或者玩微信。利用手机进行阅读或者娱乐是大趋势。我也喜欢阅读,经常下载好的电子书在地铁上使用。但是我发现,通常的一些电子书,有时不方便,体验有些不好的地方。例如在线阅读在手机网络不好的情况下,有时就没法继续阅读;翻页,字体,背景,以及文字排版,文章校订等方面,阅读起来与纸质书还是有很大的差别。于是我决定

2015-04-13 11:22:42 1280

原创 GPS位置记录与共享,时速表,里程表与高度表

手机日益成为人们离不开的一个重要智能设备,因为手机可以帮助人们解决很多问题。我开发了iPhone手机上的一个APP,可以手动与自动记录GPS位置,在走路与开车过程中可以记录路线,可以将自己的当前位置通过短信,邮件,或者微信分享给他人,他人就可以在地图上看到自己的准确位置。可以导出记录的一些关键位置的GPS数据,导出的数据文件支持GPX,KML,UTM等格式。这些GPS数据文件,直接就可以在Go

2014-12-24 11:54:11 4257 1

原创 《新概念英语》有声电子书的实现

对IT工作者来说,除了

2014-09-16 08:49:08 2449

原创 幸福家庭文摘

手机已经成为人们日常生活中离不开的一个设备。除了通话,人们更多的使用手机娱乐,社交,购物甚至阅读学习。但是,不少阅读都是在线的,在没有网络的情况下没法阅读。例如在飞机上,高铁上,地铁里。所以我整理了不少网上疯狂转发的文章,汇集成了一个离线阅读应用:幸福家庭宝典。在这个应用中,主要收集了“亲子教育”,“健康生活”,“爱情婚姻”,“人生感悟”与“幽默笑话”五个栏目的应用。使用了iOS本上的

2013-11-21 11:27:56 1348

原创 GPS位置记录与分享应用排名中国app store导航类热门应用第二名

我的iPhone手机GPS位置好帮手应用现在在中国app store的导航类应用中被评为热门应用,排名第二。欢迎大家下载安装,提出改进意见。http://t.cn/zQvjnfBiPhone手机GPS位置记录与分享主要有几个功能:1. 记录GPS经纬度。由于在中国国内的电子地图做过偏差处理,所以卫星的GPS坐标直接标注到电子地图上,会有偏差。所以记录位置是,不仅仅记录卫

2013-10-12 13:44:33 2435

原创 iPhone手机GPS地图位置好帮手

十一国庆黄金周近在眉睫,我先祝大家过一个愉快开心的国庆长假。假期内,难免老友聚会吃饭聊天联络感情,年轻朋友相亲约会,一家人出门旅游。平时,我们聚会时,总有要来得人找不到聚会地点,需要反复打电话确认;相亲约会时有时也需要反复打电话确认地点;外出旅游时,自驾游有时找爱车比较麻烦;跟团旅游时,有时迷路或者不知道回合地点。这些情况相信大家在平时或多或少的遇到过。现在iPhone手机上的GPS好帮手

2013-09-30 08:13:01 1875

原创 "我分你享-家庭版"iPhone手机应用介绍

最近几个月,每天都会在下班后看微信上朋友们的分享。因为这个分享不限内容,不限篇幅,所以文章有长有短,有不少很有参考价值的文章。前几天,由于忙,没有阅读朋友们的分享。闲下来时,就集中阅读。但发现微信有几个不方便的地方。一个是即使已经阅读过的文章,也不会放到本地,每次都需要重新从服务器上抓取;另外一个是如果连续翻以前的分享,微信会闪退崩溃。这样的话,想查看一个月前的分享基本不可能了。当然如

2013-07-19 18:20:35 833

原创 android手机上的《骗经》电子书

前段时间研究应用内购买技术,顺便做了《骗经》电子书,提交给了苹果,通过审核上架。免费提供阅读一定数量的章节,如果完整阅读,需要在应用内购买才可以。购买一次,永远都可以阅读。假如删除了,下载安装后可以通过应用里面的"恢复购买"按钮恢复已有的购买。虽然现在有不少的下载量,但“购买”阅读的有,但不是很多。起码说明应用内购买技术在iphone下已经可以说掌握了。接着研究广告技术。也就是

2013-07-04 11:25:45 1387

原创 android手机上电子书中加入广告

这几天研究如何在移动应用中加入广告的技术。发现在应用中加入广告很简单,就是将广告平台提供商提供的广告SDK嵌入到应用中就可以了。经过比较,我选择了MobWIN平台的广告,于是在电子书里面加入了广告。《骗经》电子书加完广告后,提交给MobWIN平台去审核,审核过后,我将《骗经》电子书提交到了腾讯自己的应用推广平台上。由于前段时间完成了《情人》iphone版本电子书,所以很快也完成

2013-06-28 23:28:23 1799 1

原创 iOS应用内购买技术研究与实现-《骗经》电子书应用

5月份的时候,开始研究iOS平台上的应用内购买技术。以前,如果要做一个付费应用,需要做一个Lite简易版。用户在购买之前,可以通过Lite版体验一下,再决定是否付费购买。但这种方式随着iOS平台的普及,应用的增多,尤其是游戏的增多,简易方式越来越不适应新的需求。而且这种方式无论是苹果公司还是开发者,都需要更多的维护成本。后来苹果公司实现了应用内购买技术,这种技术不需要开发者提供简易版本

2013-06-21 12:06:01 2287

原创 为清华大学水利系写的校友会iPhone与Android客户端

最近一直很忙,忙于写iPhone与android程序。终于可以歇一口气了。为清华大学水利系设计的校友会iPhone版本已经完成,android版本已经开发完成。先show一下主界面:主要功能介绍:1. 写weibo功能。2. 照片上传到相册功能3. 查询周边地点功能,可以将自己目前所在位置上传到服务器显示。4. 群组功能,按班级建立。5. 校友足迹显

2012-11-07 17:25:39 1664

原创 iPhone应用程序开发基础之一: IBOutlet与IBAction

在图形界面编程时,解决的第一问题就是如何将界面与代码对应起来,或者说是代码如何与界面上的对象通信,代码如何操作界面上的对象。Win32或者MFC一般是通过定义对象的ID或者变量,然后在代码中使用界面对象的ID或者变量,来操作界面。在iPhone编程时,通过在变量前增加IB

2011-08-02 16:20:03 22831 3

原创 TCC890x WinCE平台下的高清播放器

最近完成了TCC890x平台 WinCE下的高清播放器,主要是重新做了界面设计。去年在做Sigma高清平台时,WinCE提供的Media Player 虽然有一些粗燥,但依然可以正常、播放高清影片。但是,在TCC890x上,Media Player就不能正常播放电影,所以需要重新

2011-07-28 10:57:17 1340

原创 Wifi设备设置成服务器访问485设备

最近因客户需求,需要通过Wifi无线方式访问485接口的设备。于是购买了一款可以将TCP数据原封不动的传输给485设备,同时能够将485设备返回的数据封装到TCP数据包传回来的设备。为了该Wifi设备在不同的Wifi网络内可以工作,需要在具体的Wifi网络里面进行如下设置:1.按MSEL至少5秒钟2.将GW8xx通过485连接到PC上,通过超级终端或者串口调试工具使用AT+i命令进行设置3. at+ifd恢复出厂参数4. at+irp20查询GW8xx所处环境中的无线网络5. at+iwlsi=Wirele

2011-04-29 15:54:00 1536

原创 在Java程序中访问RS-232串口

<br />最近因为项目需要,得在用Java语言编写的PC端程序中访问RS-232串口,以便能够与终端通信,获取终端的参数配置。<br />现在已经调试通过。简单过程如下:<br />1. 下载Windows 下的commapi。Oracle已经不维护Windows下的commapi,所以需要在别的地方下载。<br />2. 将comm.jar与javax.comm.properties分别拷贝到%JAVA_HOME%/lib与JRE/lib<br />3. 将comm.jar加入到CLASSPATH环境变

2011-03-22 14:57:00 2037 1

原创 vs2005直接编译WinCE6.0下的Media Player

WinCE下的MediaPlayer在Sigma 8652上,可以正常播放高清影片。只需要简单修改一下MediaPlayer的界面,就可以当作成熟的高清播放产品了。但是,对于TCC8900平台,WinCE提供的MediaPlayer,在播放高清影片时,就不正常,不能直接使用。因此,需要修改MediaPlayer,将Media Player能够直接编译成应用程序进行修改调试。以下是在VS2005中编译Media Player的过程:1. 创建一个空的工程:msceplayer2. 将WinCE的CEPlaye

2011-03-13 10:20:00 3593 4

原创 中国移动WMMP物联网协议简单介绍

这段时间一直在实现中国移动WMMP物联网协议,现在将该协议简单总结一下.该协议主要是M2M平台通过GPRS网络或者短信远程管理M2M终端,包括分配终端序列号,采集终端配置信息,配置终端参数,软件下载与更新等等。1.分配终端序列号。终端在出厂后,如果没有预制序列号,M2M第一次使用时,通过注册获取序列号,基础密钥,上下行通信密码。如果终端预制了序列号,基础密钥与上下行密码,第一才加电后直接登陆M2M平台。2.登陆。终端有了序列号,基础密钥,上下行密码后,就可以登陆M2M平台。M2M终端登陆M2M平台后,M2M

2011-02-23 16:15:00 3602

原创 完成WinCE 下的flash播放器

<br />前段时间一个客户需要WinCE下的Flash播放器,当时准备买一个现成的。无奈当时有一个可以提供的商家的条件比较苛刻,而且支持的Flash版本也不高,所以自己就在一个开源基础上去实现。近日完成了。在WinCE高清平台上运行很流畅。今后还得继续完善,支持更高的flash版本。

2011-02-13 18:28:00 1185

原创 用E-SATA移动硬盘启动系统

前几天买了一台HP的8530w移动工作站用来做软件开发。但是对这台笔记本有两个地方不满意,一个是内存太少,只有DDR2 2G,要升级最多升级到8G。另外一个是硬盘,只有250G。这点空间很难满足我平时开发的需要。不过,该笔记本有一个E-SATA接口,也就是说可以外接SATA硬盘。于是想是否可以通过E-SATA接硬盘来启动系统,这样的话,就可以买几个硬盘,装不同的系统,避免了系统自带小硬盘的限制。说干咱就干,在淘宝商淘了一款带有E-SATA接口的硬盘盒,将旧笔记本上的硬盘拆下来安装上去,然后在8530w的BI

2010-12-31 14:55:00 3050

原创 笔记本电源如何使用

<br />前段时间,经常工作上使用的笔记本,插上外接电源不能充电了。也没有深究,就这样总是插着外接电源使用,<br />只是要移动时,得将外接充电适配器带上。不免有些麻烦。<br />圣诞节公司对员工有个电脑优惠活动,因为确实实惠,而我主要是用笔记本做软件开发,所以买了一台移动工作<br />站。因为这个是自己花了不少血汗买的,就格外珍惜。这时候我注意到,新笔记本只要外接上电源,只要电量低<br />于100%,就会开始充电。于是想到是否这样充电会减少电池的寿命,原来那台是不是因为这个原因而牺牲的呢。<b

2010-12-30 13:28:00 891

原创 Android源代码编译过程

前几天安装了Ubuntu10.10 64位server版本,主要就是为了编译Android系统用的。昨天下班时,开始顺利编译,今天早上上班后,发现编译完成。然后下载Android SDK,用emulator加载编译后的内核,成功。现在将整个过程总结一下,以便以后参考。准备阶段:安装Ubuntu Linux。1. 安装git与curl:sudo apt-get install git-coresudo apt-get install curl2. 用curl取repo脚本curl http://android

2010-12-22 16:01:00 4350

原创 多台主机同时接到一台显示器上

前段时间,为了调试高清,本来想买一台高清电视。无奈价格偏高,囊中羞涩。选来选去最终选了一款LED的23.5的显示器,带两个高清接口,一个VGA接口。当不用调试高清时,可以插到电脑上用(我的电脑还是以前的显卡,不支持高清接口),真是一举两得。Sigma WinCE接高清,调试很顺利。只是每次想用LED看片子时总是要插拔一番,看完后又是一番插拔。感到有些不方便。忽然有个念头闪现,既然这个显示器有这么多的接口,能否将高清与VGA同时都接在上面,用的时候切换,这样省却了插拔之劳顿。在显示器的触摸设置里,将信号来源由

2010-12-14 14:27:00 3176

原创 移植CxImage到Sigma 865x WinCE平台上

最近给一个客户在Sigma 865x高清平台上定制了WinCE6.0。客户需要一个图片浏览软件。因为该款CPU是MIPS的内核,共享的现成软件很少。所以决定移植或者做一个给客户。CxImage是一个开源图片处理库,而且提供了Pocket PC2003的一个可以运行的demo。于是决定先移植,如果移植的性能不能满足需求,再考虑用CE下提供的COM写一个。虽然该demo可以在Pocket PC2003上运行,但要在WinCE下运行,需要修改几个bugs:1. 类作为参数时,一般传递类的引用,不使用类的指针作为参

2010-12-14 13:56:00 1682 3

原创 用EasyRecovery软件修复硬盘找回数据

<br />前几天,不知道什么原因,我的500G的硬盘,不能访问了,总是提示需要格式化。这个硬盘上存储了我多年积累的资料,而且最重要的是女儿的照片与视频都在上面。别的资料可以不要,可以重新积累,但女儿从出生到现在的一些珍贵影像,要是丢失了,不要说我会后悔,老婆肯定跟我没完。从未有过的压力。<br />几年前,也遇到过这样的事情,当时就直接格式化了,没有去想着去恢复数据。但这次,数据无论如何是要恢复的。老婆建议我拿到外面公司去修。我考虑外面修理价格不菲,而且有数据找不回来的可能。所以我自己动手,找办法修理。找

2010-11-30 14:20:00 937

原创 在Sigma 8652高清平台定制WinCE

<br />最近几天,初步搞定了Sigma 8652平台,可以很流畅的播放720p的高清,但<br />播放1080p高清时还是有些问题。解决了TFTP不能下载大于等于32M的NK.bin<br />问题,目前可以下载68M的NK。对MIPS CPU的内存空间有了初步了解。

2010-11-30 14:18:00 1406 1

原创 红黑树插入

红黑二叉搜索树定义:1.每个结点或者为红,或者为黑 2. 根结点为黑3. 红结点只能有黑节点子女4. 对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点红黑树数据结构的实现:定义数据结构:#define RED_COLOR  0#define BLACK_COLOR  1 typedef struct red_black_tree_node{ int color; int data; red_black_tree_node *left; red_black_tree_node *right; 

2010-07-13 13:28:00 548

原创 快速排序

像合并排序一样,快速排序也是基于分治模式。int partition(int array_data[], int start_index, int end_index){    int data = array_data[end_index];     int i = start_index;    for(int j = start_index; j     {        if(array_data[j]         {            if(i != j)

2010-06-28 10:47:00 462

原创 堆排序

老实讲,这么多年,在工作中,从来没有用过堆排序,也没有借鉴过堆排序思想。主要原因是对堆排序早已经忘得一干二净。堆排序中,首先需要理解这里所说的堆,也就是定义。不是任意一堆数任意堆起来就是堆,而是这一堆数必须满足:n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质): (1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤ n) 满足性质1的称为小根堆,满足性质2的称为大根堆。可以将堆看做是完全二叉树。堆排序的第一步是建立

2010-06-22 15:28:00 490

原创 冒泡排序

冒泡排序是一种比较简单直观的排序方法。代码如下:void bubble_sort(int array_data[], int array_length){    for(int i = 0; i         for(int j = array_length - 1; j>i; j--)        {            if(array_data[j]             {                int data = array_data[j];   

2010-06-10 15:11:00 472

原创 合并排序

合并排序的主要功能是将两个已经排好序的数组合并成一个有序的大数组。合并的算法思想为:每次去两个数组中最小的(或者最大的)加入到新数组中。合并排序算法的C++代码:void merge_sort(int array_data[], int array_start_index, int array_end_index){    if(p     {        int q = (p + r) / 2;        merge_sort(arrayData, p, q);       

2010-06-09 15:40:00 444

原创 插入排序

写了几十年的程序,大多数都是有关逻辑与事务方面的,涉及算法的比较少,因此算法方面感到很是生疏了。如果继续写逻辑事务型程序,可能自己随时会厌倦的,并且能力也很难再提高。所以决定再学一次算法,以后尽量写一些更加关键的代码,尽量减少简单代码的重复编写。《算法导论》是一本不错的书,涉及的算法比较全面。这两天学习了插入排序算法。插入排序算法的实质用形式化的语言描述就是:将数组的第N+1个A[N]元素插入到A[0]到A[N-1]之间,其中A[0]到A[N]已经是有序的。从1到M(M为数组的长度)重复以上插入过程,就可以

2010-06-08 15:40:00 490

原创 OpenMP编程学习笔记九

OpenMP的Execution Model主要是几个线程通过同时运行,从而完成一个任务。与单核上的多线程并发执行是不同的,因为并发执行实际上是线程在不同的时间段占有CPU。而OpenMP的线程,是在各自的CPU上执行,不存在各个线程在同一个CPU上的调度。虽然有多个CPU,但是内存空间是共享的。并发线程间经常有临界变量,所以就不难理解OpenMP线程之间共享变量了。例如一个迭代求和,共享变量就是sum变量。并发线程中的每个线程都有私有的线程空间,同样,OpenMP线程也有自己的线程私有空间。Flush D

2010-06-03 11:29:00 777

原创 OpenMP编程学习笔记八

现在对OpenMP有了一定的感官认识。今天,又看了一下OpenMP的Execution Model,对Execution Model 有了更深入的认识。我的工作站是4核的,如果不运行OpenMP程序,只会有一个核运行程序,在Windows Task Manager中CPU的使用百分比应该会增加25%左右。测试代码:void OneCPU(){    long i = 0;    while(1)    {        i++;    }}运行后,发现CPU使用情况果然增加了25%左右。测试代码:void

2010-06-01 16:30:00 719

原创 OpenMP编程学习笔记七

在单核多线程程序中,对临界变量以及临界区的访问,是atomic方式的。在OpenMP中,由于是多个thread共同负责完成一个任务,所以必然有访问操作(回写)同一个变量的情形,OpenMP引入atomic directive应对这种情形。测试代码:void testAtomic(){    omp_set_num_threads( 4 );    int sum

2010-05-27 11:21:00 766

原创 OpenMP编程学习笔记六

在单核多线程程序中,经常需要同步多个线程以完成任务,在这个过程中有的线程会被挂起。在OpenMP中,为了同步各个线程,需要使用barrier。测试代码:void testBarrier(){    omp_set_num_threads( 4 );#pragma omp parallel    {        printf("test OpenMP 1/n")

2010-05-27 11:05:00 1924

原创 OpenMP编程学习笔记五

critical 使用:如果代码段只需要一个thread执行,可以使用single标明。如果代码段需要ID为0的thread执行,使用master标明。那么,如果代码段需要各个CPU互斥执行,也就是要求每个CPU都执行一次,但任何时候只用一个CPU在执行。这种情况可以使用critical。从宏观上看,该代码段被依次在各个CPU上被执行,各个CPU在执行该代码的时序上没有重叠

2010-05-26 11:29:00 2684

TCC890x WinCE6 高清播放器

这时我在业余时间用贴图完成的TCC890x WinCE下的高清播放器。所有按钮,进度显示等都是通过贴图实现。

2011-07-28

C++语言引入了并发机制,可以很容易的编写并发多线程程序了。

以前,编写C++并发的多线程程序时,总是要借助操作系统提供的API。因此,C++的多线程程序移植比较麻烦。现在,最新的C++语言标准引入了多线程,解决了不同平台之间需要修改才可以运行的移植问题。

2010-06-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除