Geek@Paris
  • Palm API里没有公开的部分,Handspring Undocumented APIs

    2008-09-10
    找到HsPhoneTraps.h这个头文件,里面很多诸如PhnLibTrapDisconnect这样的定义。
     
    然后在自己的头文件里,定义
    extern Err PhnLibDisconnect(UInt16 refNum, UInt16 line) PHN_LIB_TRAP (PhnLibTrapDisconnect);
    extern Err PhnLibActivate(UInt16 refNum, UInt16 line) PHN_LIB_TRAP (PhnLibTrapActivate);
     
    后面的第二个参数line 表示电话线路 如果第一次通话 line就是1 如果通话中来了电话 line就是2 如果是电话会议 就是3
     
    然后第一个函数就是挂断电话的用功能,就是接通的功能
     
     
    Handspring Undocumented APIs
    So if you have ever developed for the Treos, you may have run into the fact that there are some functions that just aren’t available in the PhnLib SDK. One such function that I found missing the other day was a function to hang up a phone call that was already taking place.
    So, as is my usual pattern, when I need to find something, I headed to Google groups, the Palm developer site and the PalmSource/Access developer web site. None of these turned up anything. Ugh. I started to get worried. Next, as is my usual custom, I headed to the header files to do some digging.
    After poking around for a while in the headers, I found a tantalizingly named trap in HsPhoneTraps.h called ‘PhnLibTrapDisconnect’. For some strange reaon, the folks at Palm/Handspring neglected to include this function in the SDK, but included the system trap for it.
    This was a fantastic find, and after a bit more poking and testing, I found some code that would work. Simply declare this function prototype somewhere in your headers:

    extern Err PhnLibDisconnect(UInt16 refNum, UInt16 line) PHN_LIB_TRAP (PhnLibTrapDisconnect);

    And then you will be free to disconnect whichever of the two lines you would like. One caveat that I would offer, however is that there may be additional variables required by this function so to be safe try calling the function like this:

    char stackProtector[16];
    Err err = PhnLibDisconnect(phnLibRef, 0);

    As long as your compiler doesn’t optimize it away, the ‘char stackProtector[16]’ right before you call the function should protect you just a bit from any stack issues that could arise from not having the right function signature.
    Of course, you should use this snippet at your own risk, but I do sincerely hope that you find it useful. I certainly have. And as always, if you have additional info or comments about this, feel free to drop me a quick note. I always love good emails.

    Author:admin | Categories:PDA | Tags:
  • 让英文WM6支持中文的方法(WM5或其他系统可以参考)

    2008-07-01

    搞了半天X50v的英文rom,即便装了雅黑也就是不完全显示中文,个别地方会乱码。更恶劣的是,控制面板里的区域选项里没有中文中国……

    后来发现了解决方法,如下:

    1. 网上找一个中文的WinCE.nls(比如这里有http://www.hi-pda.com/forum/viewthread.php?tid=375929
    2. 然后修改以下注册表
      1. [HKEY_LOCAL_MACHINEMUI]
        "SysLang"=dword:00000804
      2. [HKEY_LOCAL_MACHINEnlsoverrides]
        "LCID"=dword:00000804
      3. [HKEY_LOCAL_MACHINEnls]
        "DefaultOCP"=dword:000003a8
        "DefaultACP"=dword:000003a8
        "DefaultLCID"=dword:00000804
        "SystemLCID"=dword:00000409
        "LegacyLocaleMode"=dword:00000001
      4. [HKEY_LOCAL_MACHINESecurityColdInit]
        "Locale"=dword:00000804
      5. [HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternational]
        "ACP"=dword:000003a8
        "LCID"=dword:00000804
    3. 然后再下个中文字体安装一下,比如“微软雅黑越界修正版.cab”。

    然后一切OK。

    Author:admin | Categories:PDA | Tags:
  • CodeWarrior Palm升级Palm OS 5 SDK 68K R4

    2008-06-09
    累死我了,这个升级升的……
    参考了以下两个网页,终于搞定。最后还是感谢一帆的那个页面,提供了关键信息
     
    照搬一下一帆的原文
     

    这是一个困扰了我自己很久的问题
    CW 9.3自带的是5.2的SDK,需要手工安装到5.4版的SDK,CW for Palm已经不会再更新了
    不知道以前某次是怎么升级成功的,然后使用了部分5.4中的函数,比如FrmNavXXXX
    这次系统全部是新的了,再来编译旧代码,全部不能通过了,非常郁闷
    出错的消息都是说FrmSetXXXX函数不存在,而去看Form.h头文件是存在的,不能理解这个出错说明

    刚刚决定把SDK重新装过。看了下说明,原来在Build All时需要有个修改,但是上面说的也不是很清楚,折腾了半天,终于搞定,写下步骤:
    把原来的Palm OS Support目录改名,或删除都可以
    然后解开5.4 r3的SDK,把该目录放入原位置
    打开C:Program FilesMetrowerksCodeWarriorCW for Palm OS Support下的Build All.mcp进行编译
    以上几步说明里都说得明明白白,也提到了需要改MSL的Access Paths,但是它没有说得很明白。在打开Build All.mcp后,项目列表里会有七项内容,双击第四项 MSL C++.Palm_OS.68k.mcp
    会打开另一工程,这时候,需要把它下拉框中的每一个project的属性中的 Access Paths 都进行修改
    修改是在System Paths里Add一个{Compiler}CW for Palm OS Support。虽然其实说明文档里提了是each project的,但是我没想到它指的是一个mcp里的各种子project还要改,原来只改了Build All一个的,没有成功。

    顺便提下,关于在这个基础上装Palm SDK Headers,就是做Treo开发时需要的另外的头文件。其实压缩包解开一看就知道放哪,直接覆盖Incs目录就行,因为里面都没有同名文件,所以是不会有问题的。

    这里面还有一个注意点就是,打开MSL C++.Palm_OS.68k.mcp后,那个下拉列表一定要找到,里面要改8项呢。
    那个下拉列表让我好找……你找到了吗?
    Author:admin | Categories:PDA | Tags:
  • [图文教程]HP hx 4700 WM6 蓝牙拨号GPRS设置,修改注册表项

    2008-01-02
    自己写的,方便大家学习,也方便自己将来回顾
    还有两处链接如下
    正文:
    4700,X51v等机型,在升级到WM6系统后,蓝牙拨号功能只能默认支持爱立信手机了。因为设置里头没有设置附加字串的地方。
    其实这个问题可以通过修改注册表来解决。读者请按照步骤一步步来:

    首先,修改注册表

    1. 安装修改注册表用的软件,例如RescoFileExplorer的注册表插件(请自行搜索论坛找到最新的版本安装)
    2. 找到以下字串“HKEY_LOCAL_MACHINEDriversUnimodemInit”,已经存在字符串1和2,新建字符串3,串值是AT+CGDCONT=1,"IP","CMWAP"<cr>(这里AT和<cr>中间的部分也可以是其他,参考附表),大小写都可以。(如果是cmnet包月或者包年用户,请改成cmnet)

    然后,是常规的配置蓝牙拨号的部分

    • 先设置PPC端的连接
    1. 开始菜单=>设置=>连接=>连接
    2. ”添加一个新的连接“,设置名城CMWAP(也可以是自己喜欢的)
    3. modem设备里选择”蓝牙“(Bluetooth Dialup Modem)

    4. 拨号号码是*99***1#(也可以是其他,参考附表)
    5. 用户名、密码、域等都留空(至少在中国移动是这样,其他国家和地区参考当地设置)
    6. 设置代理服务器

    • 设置好手机上的拨号服务和蓝牙发现(Treo650举例)

    • 再设置PPC上的拨号
    1. 开始菜单=>设置=>连接=>蓝牙管理
    2. 菜单里新建
    3. 通过手机连接网络(Connect to Internet via phone)

    4. 下一步,下一步

    5. 选择手机(记得手机上设置可被搜索,并可能需要手动打开蓝牙拨号服务)

    6. 输入配对密码,例如“1”,然后手机上要求输入对应密码,也输入“1”

    7. 如图选择连接

    8. 建好后如图

    9. 双击后选择连接

    10. 拨号成功

    然后就可以用了。因为我用的不是无限流量wap包月,所以还是得省着点用。推荐UCweb或者operamini(注意是mini),通过它们浏览网页,都是通过专门服务器中转的,流量比较小。但肯定的是,网页界面功能会少一些。
    如图是UCWEB的默认设置,直接可以上网了

    附表,设置参数

    QUOTE:
    通过蓝牙拨号GPRS的设置参数

    首先,保证手机和PDA蓝牙配对成功并选择“拨号网关”服务。

    然后做如下尝试:

    建议你做如下尝试:

    电话号码设为"*99#",点选下一步, "名称""密码""域名"均为空白不要填;
    而在"高级"选项框中将"拨号前等待拨号音"取消,
    速率调整为“57600”
    "拨号指令"空白

    电话号码设为"*99#",点选下一步, "名称""密码""域名"均为空白不要填;
    而在"高级"选项框中将"拨号前等待拨号音"取消,
    速率调整为“57600”
    并在"拨号指令"要加入这串指令:+cgdcont=1,"IP","cmnet"

    电话号码设为"*99#",点选下一步, "名称""密码""域名"均为空白不要填;
    而在"高级"选项框中将"拨号前等待拨号音"取消,
    速率调整为“57600”
    并在"拨号指令"要加入这串指令:+cgdcont=2,"IP","cmnet"

    电话号码设为"*99#",点选下一步, "名称""密码""域名"均为空白不要填;
    而在"高级"选项框中将"拨号前等待拨号音"取消,
    速率调整为“57600”
    并在"拨号指令"要加入这串指令:+cgdcont=3,"IP","cmnet"

    电话号码设为"*99***1#",点选下一步, "名称""密码""域名"均为空白不要填;
    而在"高级"选项框中将"拨号前等待拨号音"取消,
    速率调整为“57600”
    并在"拨号指令"要加入这串指令:+cgdcont=1,"IP","cmnet"

    电话号码设为"*99***2#",点选下一步, "名称""密码""域名"均为空白不要填;
    而在"高级"选项框中将"拨号前等待拨号音"取消,
    速率调整为“57600”
    并在"拨号指令"要加入这串指令:+cgdcont=2,"IP","cmnet"

    电话号码设为"*99***3#",点选下一步, "名称""密码""域名"均为空白不要填;
    而在"高级"选项框中将"拨号前等待拨号音"取消,
    速率调整为“57600”
    并在"拨号指令"要加入这串指令:+cgdcont=3,"IP","cmnet"

    一般来说,nokia、索爱手机只用拨*99#即可。摩托罗拉要附加后面的参数。

    如果使用CMWAP,可以把cmnet换成cmwap试试看

    Author:admin | Categories:PDA | Tags:
  • 通过蓝牙拨号GPRS的设置参数

    2007-11-21
    通过蓝牙拨号GPRS的设置参数

    首先,保证手机和PDA蓝牙配对成功并选择“拨号网关”服务。

    然后做如下尝试:

    建议你做如下尝试:

    电话号码设为"*99#",点选下一步, "名称""密码""域名"均为空白不要填;
    而在"高级"选项框中将"拨号前等待拨号音"取消,
    速率调整为“57600”
    "拨号指令"空白

    电话号码设为"*99#",点选下一步, "名称""密码""域名"均为空白不要填;
    而在"高级"选项框中将"拨号前等待拨号音"取消,
    速率调整为“57600”
    并在"拨号指令"要加入这串指令:+cgdcont=1,"IP","cmnet"

    电话号码设为"*99#",点选下一步, "名称""密码""域名"均为空白不要填;
    而在"高级"选项框中将"拨号前等待拨号音"取消,
    速率调整为“57600”
    并在"拨号指令"要加入这串指令:+cgdcont=2,"IP","cmnet"

    电话号码设为"*99#",点选下一步, "名称""密码""域名"均为空白不要填;
    而在"高级"选项框中将"拨号前等待拨号音"取消,
    速率调整为“57600”
    并在"拨号指令"要加入这串指令:+cgdcont=3,"IP","cmnet"

    电话号码设为"*99***1#",点选下一步, "名称""密码""域名"均为空白不要填;
    而在"高级"选项框中将"拨号前等待拨号音"取消,
    速率调整为“57600”
    并在"拨号指令"要加入这串指令:+cgdcont=1,"IP","cmnet"

    电话号码设为"*99***2#",点选下一步, "名称""密码""域名"均为空白不要填;
    而在"高级"选项框中将"拨号前等待拨号音"取消,
    速率调整为“57600”
    并在"拨号指令"要加入这串指令:+cgdcont=2,"IP","cmnet"

    电话号码设为"*99***3#",点选下一步, "名称""密码""域名"均为空白不要填;
    而在"高级"选项框中将"拨号前等待拨号音"取消,
    速率调整为“57600”
    并在"拨号指令"要加入这串指令:+cgdcont=3,"IP","cmnet"

    一般来说,nokia、索爱手机只用拨*99#即可。摩托罗拉要附加后面的参数。

    如果使用CMWAP,可以把cmnet换成cmwap试试看

    Author:admin | Categories:PDA | Tags:
  • Windows Mobile开发环境搭建指南

    2007-11-16

    内容简介

    本文描述了如何搭建典型的Windows Mobile开发环境。介绍了相应的IDESDK及辅助开发工具的安装及常用配置,并对Windows Mobile下一代开发环境的发展前景做出展望。本文适合初次接触Windows Mobile开发的开发人员。

    Windows Mobile开发简介

    Windows Mobile是微软公司操作系统产品线上重要的一环。与Windows 9x/NT/XP/2003相比,Windows Mobile作为完整产品线出现在公众面前的时间非常短,但它的发展却异常迅速,而在这一发展过程中,开发人员提供了绝对关键的推动力。现在,越来越多的开发人员(特别是.NET开发人员)希望能尽快进入Windows Mobile的开发领域,而他们所面临的首要问题,除了熟悉Windows Mobile平台特性之外,便是如何搭建适合的开发环境。因此,本文就将从如何搭建一个Windows Mobile开发环境入手,对Windows Mobile平台的开发特性进行概要描述,以期帮助开发人员迅速进入Windows Mobile开发领域。

    在展开本文的内容之前需要说明的一点是,Windows Mobile平台开发主要包含以下两方面内容:

    l         平台级开发

    l         应用级开发

    因为Windows Mobile平台构建于微软的Windows CE系列操作系统之上(当前正式商用版本为Windows CE .NET 4.21),而Windows CE操作系统具有非常良好的模块化特性,因此开发人员,特别是手机设备厂商,可以通过微软提供的Platform BuildereMbedded Visual C++(以下简称为eVC)非常方便地定制自己所需的操作系统。这对应的是上面所说的平台级开发。

    然而,绝大多数的开发人员并不需要去构建一个全新的、个性化的系统,他们只需要关心如何构建能够运行在Windows Mobile设备上的应用程序。为此,微软按主要智能设备自身硬件设备特性的不同以及用户体验的差异,定制出了Windows CE .NET 4.x系列操作系统的两个主要分支,分别安装在不同的Windows Mobile硬件设备中,从而也就构成了我们通常所说的Pocket PCSmartphone。以下内容中的Windows Mobile开发,除特指之外,均表示Pocket PC/Smartphone开发。

    本文中提供的大量开发工具,除单独标出的以外,均可在http://msdn.microsoft.com/mobility/downloads/default.aspx下载。

    迅速搭建开发环境

    为了进行Windows Mobile开发,我们需要搭建相应的开发环境。所幸的是,这一环境搭建起来非常简单。

    安装Visual Studio .NET 2003

    为了降低Windows Mobile的开发难度,提高开发人员的开发效率,微软把.NET Framework移植到了Windows Mobile设备上,针对Windows Mobile设备及Windows CE .NET操作系统设计了.NET Compact Framework(以下简称.NET CF)。而Visual Studio .NET 2003正是开发.NET CF应用程序的最佳IDE。在Visual Studio .NET 2003的安装中默认集成了.NET CF 1.0,同时提供了Pocket PC 2002的开发模板,可以直接用来开发Pocket PC 2002应用程序。

    您也可以选择Visual Studio 2005作为开发工具,目前最高版本为Beta 1 Refresh。在Visual Studio 2005中,默认提供了Pocket PC/Smartphone 2003 SE(第二版)的开发模板,同时将Pocket PC 2003 SE开发使用.NET CF版本升级到2.0 (beta)

    安装eVC (可选)

    以上环境已经完全可以基于.NET CF开发Windows Mobile应用程序。但如果您想使用C/C++语言来进行native开发,或者想在Windows Mobile设备上开发COM组件及应用,那么可以选择eVC作为开发工具。目前eVC的最高版本为4.0 + SP4,请确保安装了最新的补丁包。

    也许您会问:既然已经有了Visual Studio .NET环境,为什么还要使用eVC作为开发工具呢?这主要是因为,当前的.NET CF功能相对而言还很不完整,有很多Windows CE .NET操作系统的核心功能没有被封装入.NET CF,如:加密/解密、网络底层通讯、COM互操作、RAPI等等。为了完成上述操作,我们或者使用平台调用(P/Invoke)以托管方式开发,或者使用eVC直接针对系统底层进行native开发。对于COM互操作,目前.NET CF还不提供COM互操作(Interop)机制,只能使用eVC进行C/C++ COM开发。好消息是,在.NET CF 2.0中将提供功能强大的COM互操作特性支持,同时也将在Visual C++ 2005环境中同时提供managednative开发功能,这样所有的开发工作将完全整合在Visual Studio 2005同一环境中。

    安装Pocket PC/Smartphone 2003 SDK

    为了开发Pocket PC 2003Smartphone 2003应用程序,您还需要安装Pocket PC 2003 SDKSmartphone 2003 SDK。值得注意的是,这两款SDK中所包含的模拟器均为英语环境,如果您想使用简体中文环境的模拟器,请去微软网站上单独下载。

    如果您使用Visual Studio 2005开发Windows Mobile应用程序,则不需要单独安装相应的SDK,因为SDK已经被默认集成至了Visual Studio 2005环境中。

    SQL Server CE (可选)

    这是Pocket PC上推荐使用的嵌入式数据库产品,它与SQL Server桌面版之间可以实现良好的数据同步及互操作,目前正式版的最新版本为2.0。在SQL Server 2005 Beta 2测试版中,包含有SQL Server CE 2.0的升级版本SQL Server 2005 Mobile Edition——不过该版本目前只支持Pocket PC 2003系统。预计SQL Server Mobile Edition在下一个版本中才能提供对Smartphone的支持。

    ActiveSync环境搭建

    在完成了上述开发环境的搭建之后,您就可以在Visual Studio .NET中开发和调试应用程序,并在设备/模拟器中进行部署。但是,如果您还需要进一步执行下述操作,那么请按本节所述继续搭建ActiveSync环境。可能的执行操作包括(但不限于):

    l         向设备/模拟器中复制文件

    l         从设备/模拟器中删除文件

    l         与设备/模拟器同步数据

    l         开发和调试包含RAPI (Remote API)功能的应用

    l         ……

    安装ActiveSync

    ActiveSync是一款管理Windows Mobile设备连接、与PC进行数据同步的工具。如果您开发时使用的是真实设备,则最好事先安装ActiveSync使之与PC机连接。如果您使用的是模拟器,则除了安装ActiveSync以外,还需要安装下述工具。

    安装Connect Emulator with ActiveSync

    如果您使用的是模拟器软件,除了安装ActiveSync外,还必须安装Connect Emulator with ActiveSync这款工具软件。它将使您可以直接通过ActiveSync连接到模拟器上。

    辅助工具介绍

    除了上述基本开发工具以外,在Windows Mobile开发社区中还存在着大量的辅助工具,包括应用程序框架、工具、控件等等。其中有一些由于定位准确、制作优良、使用方便,已经成为Windows Mobile开发不可或缺的好助手。以下列出其中的一部分,更多的还存在于Windows Mobile开发者社区及互联网上,等待着您去发现。

    OpenNETCF.org Smart Device Framework

    由几位长年活跃于Windows Mobile开发者社区的MVP共同开发的OpenNETCF.org Smart Device Framework (以下简称为SDF),几天前刚刚获得了Pocket PC Magazine评出的2004年度最佳.NET开发框架大奖。熟悉SDF的开发者都会认为,对于这一奖项,OpenNETCF的确当之无愧,因为SDF几乎已经成了Windows Mobile开发者不可或缺的工具。他们对.NET CF的不足给出了及时的弥补,在SDF中,您可以找到ConfigurationXML Serialization NotificationInterop ServicesWSE 2.0等一系列.NET CF当前版本尚未提供的功能,以及诸如ListBoxEx等优秀的控件。更值得一提的是,SDF是一项完全免费的开源项目。这几位MVP为整个Windows Mobile开发者社区所做的贡献也许真的无法用金钱来衡量。

    下载地址:http://www.opennetcf.org

    Windows Mobile Developer Power Toys

    这是微软继Pocket PC/Smartphone 2003 SDK之后为开发人员提供的另一套开发辅助工具集。其中包含不少非常值得一用的优秀工具,如:

    l         ActiveSync Remote Display:把连接在PC上的智能设备影像通过PC屏幕放大显示

    l         CECopy:以命令行的方式向所连接的智能设备传输文件

    l         Hopper:用于Pocket PC 2003的用户输入压力测试工具

    l         PPC Command Shell:用于Pocket PC 2003的命令行工具

    l         TypeIt:用于Smartphone 2003的辅助文字输入工具

    l         ……

    Mobile Application Development Toolkit 2004

    这是微软近期推出的Windows Mobile开发工具及资料集,其中包含上述所有产品及工具,以及一系列相关的文档、教程及参考资料。

    结束语

    好了,对于如何搭建Windows Mobile的开发环境就介绍到这里了。可以肯定地说,随着微软公司支持力度的增加和Windows Mobile开发者社区的成熟,Windows Mobile开发将面临越来越有利的良好环境。

    Author:admin | Categories:PDA | Tags: