2012年4月17日星期二

利用ditu.google.com制作出行地图

        ditu.google.com的特点是在于卫星图片上有道路标记,实质是道路图层和卫星照片图层的组合。制作离线地图软件是基于Java的Mobile Atlas Creator(MAC),MAC不带google这类的商业地图的地图源,但允许用户自定义,帮助文件README.HTM(位于安装目录)中有详细介绍。制作多图层的地图源可以参考模板:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customMultiLayerMapSource>
    <name>Custom OSM Mapnik with Hills (Ger)</name>
    <tileType>PNG</tileType>
    <layers>
        <customMapSource>
            <name>Custom OSM Mapnik</name>
            <minZoom>0</minZoom>
            <maxZoom>18</maxZoom>
            <tileType>PNG</tileType>
            <tileUpdate>None</tileUpdate>
            <url>http://tile.openstreetmap.org/{$z}/{$x}/{$y}.png</url>
            <backgroundColor>#000000</backgroundColor>
        </customMapSource>
        <customMapSource>
            <name>Custom transparent hillshade</name>
            <minZoom>0</minZoom>
            <maxZoom>18</maxZoom>
            <tileType>PNG</tileType>
            <tileUpdate>None</tileUpdate>
            <url>http://www.wanderreitkarte.de/hills/{$z}/{$x}/{$y}.png</url>
        </customMapSource>
    </layers>
</customMultiLayerMapSource>
<url>…</url>表示地图源路径,路径可以通过FireFox浏览器访问ditu.google.com得到,其中需要借助FireBug插件,效果如图所示:
图中红圈为地图源地址,如路径源地址:
http://mt1.google.cn/vt/imgtp=png32&lyrs=h@176000000&hl=zh-CN&gl=cn&src=app&x=419&y=195&z=9&s=Gali
和卫星照片源地址:
http://mt3.google.cn/vt/lyrs=s@108&hl=zh-CN&gl=cn&src=app&x=419&y=194&z=9&s=Gal
此时将x、y和z的值替换为{$x}、{$y}和{$z}并将地址中的“&”改为符合xml规范的“&amp;”否则打开MAC时会出如下错误:
        将获得的地图源地址带入模板并进行一定的完善可得到如下地图源文件代码:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customMultiLayerMapSource>
    <name>Google Ditu</name>
    <tileType>JPG</tileType>
    <layers>
        <customMapSource>
        <name>Satellite</name>
        <minZoom>0</minZoom>
        <maxZoom>19</maxZoom>
        <tileType>jpg</tileType>
        <tileUpdate>IfNoneMatch</tileUpdate>
        <url>http://{$serverpart}.google.cn/vt/lyrs=s@108&amp;gl=cn&amp;src=app&amp;host=ditu.google.com&amp;x={$x}&amp;y={$y}&amp;z={$z}</url>
        <backgroundColor>#000000</backgroundColor>
            <serverParts>mt0 mt1 mt2 mt3</serverParts>
        </customMapSource>
        <customMapSource>
            <name>Path</name>
            <minZoom>0</minZoom>
            <maxZoom>19</maxZoom>
            <tileType>PNG</tileType>
            <tileUpdate>IfNoneMatch</tileUpdate>
            <url>http://{$serverpart}.google.cn/vt/imgtp=png32&amp;lyrs=h@176000000&amp;hl=zh-CN&amp;gl=cn&amp;src=app&amp;x={$x}&amp;y={$y}&amp;z={$z}&amp;s=Galileo</url>
            <backgroundColor>#000000</backgroundColor>
            <serverParts>mt0 mt1 mt2 mt3</serverParts>
        </customMapSource>
    </layers>
</customMultiLayerMapSource>
各部分具体含义请参见README.HTM和MAC的Wiki,需要说明的是在利用FireBug获取Google地图源时需要关闭Google地图的MapsGL特性,否则通过路径源地址将获得到路径的矢量数据而非路径图片。
地图源文件存放在安装路径下的mapsources文件夹中,此类地图源的扩展名为xml。在软件中选用自制的地图源便可下载含路径的卫星地图。
        软件使用请参阅相关教程。

2012年4月7日星期六

Defy MB525 ME525 GPS 搜星 解决

    如果你已经看过很多帖子,参考上面的办法但依旧搜不到星或者只能搜到一两颗但根本不能定位的话就来看看我的文字吧。

    首先我回答一下DEFY是否有GPS这个问题,答案肯定是有,要不然我就别往下写了是吧?DEFY的GPS芯片是Broadcom公司的BCM4750,通过IIC总线与CPU OMAP3630进行通信。关于DEFY只能用基站定位的谣言显然荒谬。网上有很多关于如何配置GPS相关文件的帖子,咱们都看的太多了,我也不想多说什么了,那些基本上都是尝试,缺乏根本的东西,但是有个帖子写的不错,推荐大家看一下http://forum.xda-developers.com/showthread.php?t=1458285

    其次再说点儿预备知识,免得犯低级错误。无辅助GPS搜星需要3-5分钟的时间,地点越空旷越好,AGPS搜星时间为几秒,但是也需要一个能让手机看见天的地方。GPS测试软件推荐用GPSTEST,可以从Play商店直接下载,这个软件需要设置屏幕常亮,要不然屏幕一黑就不搜星了,至于费电的问题,解决办法就是降低屏幕亮度。

    下面来说说我的问题,把GPS失灵分为两种情况,第一种是搜不到任何星,第二种是搜到一两颗星,信号很弱根本连接不上。
    第一种问题由以下四个文件引起:
/system/bin/brcm_guci_drv——GPS芯片的驱动
/system/etc/gpsconfig.xml——GPS芯片驱动的配置文件
/system/lib/hw/gps.jordan.so——定位功能运行库
/system/etc/location.cfg——定位功能运行库的配置文件
由于brcm_guci_drv和gps.jordan.so自身包含配置文件内容,所以改外部文件gpsconfig.xml或location.cfg的作用并不大。补充一下/system/etc和/etc是同一个目录,这是linux的一种快捷方式。想解决第一种问题,就是通过刷机或者替换的方式修改这四个文件,使你的GPS可以正常工作,GPS正常工作的表现是/data/location目录下有正确的文件生成,下面说一下这个目录下的文件:
/data/location/gpscmd
/data/location/location.cfg
/data/location/gpsdata.nvs
/data/location/LEARN_STORE.BIN
gpscmd是BCM4750芯片的通道文件,也就是说通过对这个文件的“读”或“写”操作实现对GPS模块进行数据的发送与接收,这个文件误删除以后在下次开机会自动生成;location.cfg来自/system/etc/location.cfg,记录当前定位功能的一些配置信息;gpsdata.nvs记录着星历信息,可以通过文本文件查看器查看内容,如果里面有大量数据说明你的星历下载没有问题;LEARN_STORE.BIN这个文件只有在正确定位后才会生成,它记录着定位信息,如果没有这个文件,说明你还没有成功定位过。删除gpsdata.nvs、LEARN_STORE.BIN和location.cfg可以清空gps定位的缓存。第一个问题解决与否可以通过观察这四个文件是否生成正确,只要固件对,gps总是能收到卫星信号的。BCM4750芯片没那么容易坏,除非是第二种问题。
    第二种问题:第一个问题扯的有点儿远,那么第二个问题就要从远方扯回来。如果你的ME525不是从正规渠道买来的,那么它就有大于90%的可能性为翻新机,尤其是淘宝上比实体店便宜100块钱以上的。事情是这样的,国外手机便宜,用户更换的频率很高,这就有了大量的二手手机,这些手机回收后被拆解,并将主板当电子垃圾运到国内翻新,因为国内可以生产除了主板以外的所有配件,同时只运主板运费和关税都很低(有些时候也有没有电池和后盖的整机)。这些主板在国内工厂组装为新机器后流入市场,便是我们在淘宝上以较为便宜的价格拿到的机器。不要自信你的原始发票、入网许可和三码合一,这些都是可以仿造的,不要小看这个产业链,当然也不要轻信客服鉴定,客服鉴定的时候只是根据你的IMEI查你的机器是否在保,在保便说是行货,当真正需要保修时,他们拆开你的机器发现不对后会告诉你,你的机器是翻新的,不能保修。所以想鉴定是否为正品的方法只有拆开机器看,商家知道买家舍不得拆新买的手机,而且并不是所有人都有这个手艺和工具,就算你真敢拆开看,商家大不了就说他们也是从别家拿货同是受害者,顶多垫个运费帮你退货,你还给不了差评。所以商家都会很有自信告诉你他的东西是正品,信不信就由你了。第二种问题的发生是基于翻新机器,所以当你的DEFY搜星信号不好,通常只能搜到一颗时,你也可以怀疑一下自己的机器。拆离后被运输的主板通常得不到良好的保护,在运输过程中边角和突起都容易发生磕碰刮拽,而GPS天线偏偏在这么一个地方:

    图中红圈里面是主板上GPS天线的触点,与黄圈中的GPS天线连接,这个触点在主板的边缘,由薄铁皮制成,受到磕碰挤压后极其容易变形,变形后的触点不能与GPS天线接触,造成GPS信号弱且不能定位,此时只要用镊子将其掰正便可修复。拆机方法可以自行google,有视频

    这是触点的斜视与拆出来的GPS天线。这些都弄好后的出星时间在4秒左右,6秒的时候就能定位了。

    最后是在夜幕中的DEFY,MIUI系统。



时代通SDT-999S的互通之出厂频率与频道

    手头有LT 6100 PLUS和SDT-999S两部对讲机,想实现互通就需要使用一致的频率,LT 6100 PLUS可以设置频率,而SDT-999S的频率是随频道而固定的,具体数值不曾知道。想得到一部对讲机频道和频率的对应关系基本上有四种方式,网上搜、测试、扫描和读频:SDT-999S频率网上没找到,频率测试仪手头没有,扫描这个办法很愚蠢,所以只能读频,而读频也是最直观的方法。有热情淘宝卖家告诉我SDT-999S与建伍TK-3207方案相同,其写频软件为KPG-87D,对应写频线为KEN-2,KEN-2对讲机接头如下图:

    如果图省事儿Vout和电阻R1可以不要,也就是GND接2.5mm插头的末端,Txd接2.5mm插头中间,Rxd接3.5mm插头末端。这个线的通讯电平是5V TTL电平,即+5v表示1,0V表示0,如果使用计算机的串口,需要将串口的电平通过MAX3232之类的芯片转换为5V TTL电平,或者使用支持5V TTL的USB转串口,为什么强调5V,是因为LT 6100 PLUS和SDT-S999的写频线相同,LT 6100 PLUS支持3.3V TTL电平写频,我自制的3.3V写频线连接LT 6100 PLUS正常,却无论如何也不能连接999s,我便以为是软件配置错误,结果浪费了很多时间。
读出来的频率如下图所示:

为了预防图片不能正常打开,我抄一遍:
CH01 432.55000
CH02 437.27500
CH03 442.22500
CH04 455.20000
CH05 440.22500
CH06 400.17500
CH07 435.10000
CH08 469.98750
CH09 435.15000
CH10 436.27500
CH11 445.02500
CH12 446.27500
CH13 447.55000
CH14 450.02500
CH15 451.27500
CH16 455.67500
    本来这点儿事儿没想写出来,毕竟使用SDT-999S的人不在多数,但是偶然间发现SDT-999S的默认频率能与很多对讲机互通,所以列出频率,方便大家尝试。


2009年9月5日星期六

Google工具栏不能正常下载书签的解决方案

   两个月前忽然发现Google工具栏里面的书签功能不能正常使用了,主要表现在不能下载书签(当然也不能新建或者管理书签),估计是大陆的防火墙造成的,因为加密连接可以使用。忙于工作没有研究彻底解决的方法,凑合用的方法是访问https://www.google.com/bookmarks/通过web页面操作。

   今天抽空处理了一下,以Windows下Mozilla Firefox浏览器为例,其中Google工具栏的版本是5.0.20090813W,当然Linux系统或者别的浏览器也是大同小异,研究过程就不说了,说说具体的解决方法:首先搜索toolbar.js这个文件,我找到的位置是C:\Users\Nikivix\AppData\Roaming\Mozilla\Firefox\Profiles\2b6oevmg.default\extensions\{3112ca9c-de6d-4884-a869-9855de68056c}\lib大小864k左右(系统Win7),里面有如下的几行代码,定义的是下载、更新、添加和删除书签的服务器地址,内容如下:
JSCompiler_extractPrototype=GTB_BookmarkUrls.prototype;JSCompiler_extractPrototype.getManageBookmarksUrl=function(a){return"http://{HOST}/notebook/bookmarks?hl={LANG}".replace("{HOST}",this.getHost_()).replace("{LANG}",a)}; JSCompiler_extractPrototype.getDownloadBookmarksUrl=function(a){var b=Math.floor(Math.random()*32768);return""http://{HOST}/notebook/toolbar?cmd=list&tok={TOKEN}&zx={RAND}".replace("{HOST}",this.getHost_()).replace("{RAND}",b).replace("{TOKEN}",a)}; JSCompiler_extractPrototype.getDownloadBookmarksDiffUrl=function(a,b){var c=Math.floor(Math.random()*32768);return""http://{HOST}/notebook/toolbar?cmd=list&tok={TOKEN}&all=1&min={MAXTIMESTAMP}&zx={RAND}".replace("{HOST}",this.getHost_()).replace("{MAXTIMESTAMP}",a).replace("{TOKEN}",b).replace("{RAND}",c)};JSCompiler_extractPrototype.getPostBookmarksUrl=function(){return""http://{HOST}/notebook/toolbar".replace("{HOST}",this.getHost_())}; JSCompiler_extractPrototype.getImportBookmarksUrl=function(){var a=Math.floor(Math.random()*32768);return""http://www.google.com/bookmarks/mark?op=upload&zx={RAND}&hl={LANG}".replace("{RAND}",a).replace("{LANG}",GTB_getLangCode())};
其中只需要把红字标出http改成https就能让工具栏通过加密连接访问Google书签服务器从而正常的使用书签功能了。当然修改完成之后需要重新启动一下浏览器(firefox)

   问题可以先这么解决,当然这不一定是最好的方法,如有高见敬请指教xethyne@gmail.com

2009年8月22日星期六

用WD My Book下载hdbits.org的种子

   在实验室里面待了几个月,一直没有管博客,这次说一说如何用WD My Book下载hdbits.org的种子
   一茶系统里面带的Transmission的版本不符合hdbits.org的要求,提示客户端版本错误,所以把它更新到最新版本(1.73),之后就能用了.但是更新过程中出现了很多问题,归根到底是网络不通畅,有墙挡着,所以得使用些手段.过程如下,其中包括我走的用于探索的路.
   使用PUTTY登陆,然后SU切换到root用户,当然也可以直接用root登陆
   执行killall transmission-daemon停止Transmission    输入ipkg update获取软件更新列表
   屏幕出现Downloading http://ipkg.nslu2-linux.org/feeds/optware/gumstix1151/cross/unstable/Packages.gz,一段时间之后提示连接出错.
   不管它,用电脑通过代理直接去下载这个Packages.gz,网址是http://ipkg.nslu2-linux.org/feeds/optware/gumstix1151/cross/unstable/Packages.gz,至于代理,随便去GOOGLE上搜一个能用的"在线代理"就行.
   用winrar解压缩那个Packages.gz,再用写字板打开解压缩出来的"Packages"这个文件,在里面搜索transmission,便看到有一行写着Package: transmission,在以后的几行里发现Filename: transmission_1.73-1_arm.ipk,于是我尝试下载http://ipkg.nslu2-linux.org/feeds/optware/gumstix1151/cross/unstable/transmission_1.73-1_arm.ipk这个文件,成功.
   通过网上邻居把transmission_1.73-1_arm.ipk复制到盒子的任意目录下,然后通过PUTTY进入这个目录执行ipkg install transmission_1.73-1_arm.ipk,结果说libevent要更新.
   再次在"Packages"这个文件里面搜索libevent,看到Filename: libevent_1.4.11-1_arm.ipk这句,尝试下载http://ipkg.nslu2-linux.org/feeds/optware/gumstix1151/cross/unstable/libevent_1.4.11-1_arm.ipk这个文件,成功.
   通过网上邻居把libevent_1.4.11-1_arm.ipk复制到盒子的任意目录下,然后通过PUTTY进入这个目录执行ipkg install libevent_1.4.11-1_arm.ipk,安装成功
   执行cp /opt/lib/libevent* /lib/
   执行ipkg install transmission_1.73-1_arm.ipk,成功
   执行cp /opt/bin/transmission-daemon /usr/local/bin/
   执行transmission-daemon打开Transmission,发现可以正常下载hdbits.org的种子了

   上面说的是探索的道路,其实可以直接下载transmission和libevent然后直接安装,之所以说一下探索的过程是为了教大家怎么找相应的地址,以后transmission或者libevent再有更新,上述的网址就不再适用了
   再说一下傻瓜安装的步骤:    下载libevent_1.4.11-1_arm.ipktransmission_1.73-1_arm.ipk并通过网上邻居将其复制到nas的任意目录中,假设是\\Mybookworld\public\patch
   使用PUTTY登陆,然后SU切换到root用户,当然也可以直接用root登陆
   执行killall transmission-daemon停止Transmission    执行命令cd /shares/internal/PUBLIC/patch/进入这个目录,注意大小写,这个路径对应着刚才复制文件进来的那个路径
   执行ipkg install libevent_1.4.11-1_arm.ipk
   执行cp /opt/lib/libevent* /lib/
   执行ipkg install transmission_1.73-1_arm.ipk
   执行cp /opt/bin/transmission-daemon /usr/local/bin/
   执行transmission-daemon重新打开Transmission
   更新之后我重启过盒子,理论上不重启也能用.新版本不仅能当hdbits.org的bt下载客户端,而且更是多了几个革命性的功能,不过对于我来说买这个盒子的目的已经实现了.

2009年2月22日星期日

制作简易杜邦头

    我这里说的“杜邦头”不是指出门野游用的那种绳子的接头,而是指在电子技术试验中用的接插导线的末端接头,可以插到电路板的针(pin)上的那种东西,带着这种接头的导线叫做杜邦线,常见于电脑主机箱上的按键(或指示灯)与主板的链接的导线。

    这种东西像高温海绵一样莫名其妙的贵,市场上像这样的成品要两块钱一根(上图为十根),如果要是不太讲究或者只用几根的话最好还是自己做,比较经济。
    导线随便找,但是一定是多股的,因为插接过程中需要经常让导线弯曲;接头地方的端子需要专用,找便宜的那种,不给钱的话白要上二三十个一般没有问题的;绝缘头(黑色塑料块)用热缩管代替,便宜而且效果好。

    东西准备好以后就开始制作,首先是剥电线的绝缘皮,可以用自己喜欢的方式,但最好弄的整齐,我使用的是剥皮钳子。

    之后把金属端子卡在导线上边,如图,端子分三部份,第一部分是用来固定绝缘皮的,第二部分是用来固定导线的,第三部分是用来接插的,如果使用机器加工的话,前两部分会被卷180度插入导线里面,但是这个工艺仅凭简单的工具很难实现,所以我们使用别的方式:用第一部分包住导线的绝缘皮而不是插入绝缘皮里面,第二部分用焊锡来连接,注意焊锡要少量,否则过量焊锡可能会把第三部分堵上。

    这两个步骤都不难,但需要注意的是位置和方向,要让端子高低正确朝向相同。

    倒数第二个步骤是用热缩管制作绝缘头,也就是套上之后烫一下的事情,不过由于裁剪热缩管的时候不能保证长短相同,所以在安装的时候应该尽量让热缩管包电线的一端整齐,烫好之后再裁剪富余出来的一端。

    最后还要在“插针”上插一下,因为刚制作出来的杜邦头比较紧,最好放松一下,同时也可以检查一下是否成功。

    如果能找到专门的端子和绝缘头的话也能制作出来很有卖相的杜邦头,但是有一个很重要的原则,一定要一个步骤一个步骤的做,不要一个接头一个接头的做,因为对于排插线来说整齐是第一位的。