Palm OS开发入门
从某种意义上说,开发Palm OS系统平台的应用软件要比在其他平台上要容易。当然,其中的差别也是显而易见的。其中很重要的两点类似之处如下:
- 应用软件是事件驱动的
- 您能够使用任何来自标准C语言的东西来进行编译和编程
而差别集中在设备的尺寸和用途。 对于Palm掌上设备来说:
- 存储空间的要求
- 应用软件和数据的存储
- 掌上设备和台式机的连接
最重要的一点是,您必需牢牢记住,掌上设备同操作系统的联系是极端紧密的。任何一种内嵌的东西存在的前提是该掌上设备是对台式机功能的扩展,并且必须对用户的请求做出响应。
操作系统概况
让我们来看看掌上设备上,这种操作系统和应用软件之间紧密的交互的细节。Palm OS操作系统试运行于一个多任务抢占型系统内核的顶端。一个任务用于产生用户界面,其它的任务处理诸如来自手写板的输入等。
用户界面每次只允许一个应用软件运行。因此,每当您的一个应用软件开始运行时,它就控制了整个显示屏。
注意:
应用软件是单一用户界面的形式运行的,软件自身也不能建立多任务窗口。 |
1. 内存
内存是掌上设备中比较独特的部分。RAM随机存储器在Palm OS系统中别用于两个目的:
动态内存分配
这部分内存是在系统和应用软件运行时才需要的。它其中还包含了软件所需的堆栈。当重新启动系统以后,该内存空间被清空。这部分内存的用途有点像传统的台式机操作系统下的内存。
永久存储
这包括了那些下载到掌上设备中的软件和数据,用户将在掌上设备上访问、编辑这些软件和数据。如计划事件、名片和电话号码、备忘录,以及其他所有内嵌软件所需的数据,都放在这部分内存中。每次重启时,这部分内存还是保持原样。我们可以把这部分的内存看成是台式机的硬盘上对各种文件的存储。
对于以上两种内存,在使用中都是按照区块的方式来分配的。永久存储区存放数据库,每个数据库对应着多个区块。例如,所有的备忘录信息都是存放在一个单一的数据中(每条记录对应着一个单独的区块或者数据库记录)。另外一个数据库存放这所有关于通讯录的记录。
和传统的台式机的操作系统不同,永久存储区的数据和代码不是复制到动态存储区来执行的,掌上设备的数据和代码都是在它们在永久存储区的所在位置直接被使用的。例如,当执行某部分程序时,就是直接在永久存储区该程序存放的位置被执行的。因为永久存储区位于RAM中,因此CPU当然可以直接读取它们,就像读取去它的RAM一样。同样,其中的数据也能够直接在存储位置被读取和显示。
注意:
在Palm掌上设备中,永久内存被小心的保护起来,防止由于开发者程序中的错误而意外地改写了永久内存中的重要数据。因为,谁也不希望因为一个简单程序中的小错误造成其他数据的丢失。因此,一般情况下, |
2. 资源
我们可以把Palm OS系统中的一个应用软件看成是一个资源数据库,其中包含了很多不同的资源。每一个资源相当于数据库中的记录,有类型,有编号。按照这种存储方式,各种资源提供了应用软件所需的内核和外观元素。在台式机上,这些资源数据库的扩展名是 .PRC。或者您在后面会发现,人们往往更愿意称之为PRC文件。
资源中包含的一些内容如下:
- 程序的源代码
- 用户界面元素
- 文本
- 窗体
- 图标
用户界面元素将根据资源中的描述进行初始化,然后显示在掌上设备的屏幕上。因为初始化过程不是在软件的源代码中完成的,因此,开发人员可以改变用户界面(如,改变软件的语言)而不需要对程序的源代码作修改。另外一个有点就是,您可以使用可视化编辑器来显示和编辑软件的用户界面的各个部分。这些编辑器能够允许您方便地改变外观效果和数据的输出效果,而不需要重新编译和重新载入该应用软件。
3. 事件
Palm OS软件时事件驱动的。事件的发生,就像手写笔的按下和抬起,然后您的软件就会对着写事件做出响应。其中的一些事件是由您的应用软件来处理的,其它的将由操作系统来处理。一旦您的软件启动,它将进入一个事件循环,周而复制地捕获事件,处理它们。该事件循环只有在用户打开另外一个应用软件,关闭当前的软件时才会结束。
4. 窗体和控件
Palm OS有一个内置的机制,用于支持各种控件和管理窗体。窗体和一个台式机系统中的窗口有点相似。因为Palm OS应用软件的用户界面的局限性,每次当后多个窗体显示时,只有一个是被激活的。
Palm OS提供了非常丰富的窗体用API函数,包含了很多用户界面元素。其中的一些如下:
- 选择框
- Radio按钮
- 普通按钮
- 列表(单栏)
- 采集器(下拉列表)
- 表格(多栏)
- 滚动条
- 静态文本标注
- 可编辑文本区
- 菜单
由于这些用户界面元素是作为资源单独存放的,因此您可以非常快速地创建您应用程序的原型。添加用户界面元素的方便性和元素的多样性使得开发者可以非常方便的设计出各种各样的软件界面。
5. 通讯
Palm OS系统支持多种通讯方式。因为通讯模块是Palm取得成功的根本因素,您可能认为在当前和未来的应用软件中,操作系统的这部分还是一个很值得探讨的方面。当前的通讯协议如下:
- 串行通讯
- 拥有socket接口的TCP/IP通讯
- 红外线。低水平的红外通讯是通过IrDA(Infrared Data Assocation)是实现的
- 高水平的对象交换能够支持在Palm设备和支持工业标准对象之间的信息交换。当前,这些对象还只能通过IRDA实现。不过以后会提供更多的信息交换技术。
6. 多样性
Palm OS系统还拥有以下各式各样的API函数:
- 对包含字符串的搜索,复制,数字的转换
- 日期和时间
- 某一天某一时间的定时闹钟。当到达一个特定的日期和时间,您的应用软件将得到通知(甚至当您的软件当时没有运行)。
- 查询——Palm OS支持掌上设备——允许用户在该设备的任何一个地方寻找需要的字符串。所有的应用软件将被调用,以便在其自己的数据库中搜索特定的字符串。
通过以上这些特性,我们可以看到Palm OS系统为应用软件提供了更丰富、更多种类的创作空间。信息内容的文本和陈述能够被更多的工具支持,并且显示出来。
注意:
Palm OS的子系统被叫做管理器,每一个函数/子程序的命名规则制定了它们所属的管理器。例如,所有的内存管理器程序名的开始总是“Mem”三个字母。 |
Palm OS开发入门相关推荐
- 【鸿蒙OS开发入门】13 - 启动流程代码分析之第一个用户态进程:init 进程 之 init 任务详解
[鸿蒙OS开发入门]13 - 启动流程代码分析之第一个用户态进程:init 进程 之 init 任务详解 一. /etc/init.cfg 系统默认cfg:启动lo回环网卡 1.1 init.Hi35 ...
- 【鸿蒙OS开发入门】18 - HDF驱动子系统:加速度计传感器 Driver层驱动代码分析
[鸿蒙OS开发入门]18 - HDF驱动子系统:加速度计传感器 Driver层代码分析 一.如何添加速度计传感器驱动代码(代码.编译.配置) 1.驱动代码实现 2.驱动编译配置 2.1 linux 编 ...
- 【鸿蒙OS开发入门】06 - 启动流程代码分析之KernelOS:之启动Linux-4.19 Kernel内核 启动init进程
[鸿蒙OS开发入门]06 - 启动流程代码分析之KernelOS:之启动Linux-4.19 Kernel内核 一.head.S 启动start_kernel() 1.1 start_kernel() ...
- Palm OS开发简介
Palm OS开发简介 --简单介绍Palm OS上的应用软件开发过程 篇首语:Palm OS现在的正确名字其实是Garnet OS...不过Palm OS更为人们所知... Palm OS历史 Pa ...
- 【鸿蒙OS开发入门】16 - 重头搭建Ubuntu新环境编译OpenHarmony 3.0 LTS
[鸿蒙OS开发入门]16 - 重头搭建Ubuntu新环境编译OpenHarmony 3.0 LTSv 一.配置Telnet 和 samba 二.下载code-v3.0-LTS.tar.gz源码 三.配 ...
- Palm OS开发工具简介【转载】
一.CodeWarrior 在Mac OS和Win32平台上最流行的Palm OS系统集成开发环境.对PalmOS来说,它是一个主要开发工具,用C语言可以非常方便和快捷的写程序和调试程序.事实上,由P ...
- Palm OS开发常见问题和技巧
1. 判断当前focus是否为field index=FrmGetFocus(form); if(index= =noFocus) return(false); field=FrmGetObjectP ...
- 从Palm OS向Series 60 Platform移植(转)
移动开发伙伴们如要将其Palm OS应用移植到行业领先的Series 60 Platform上,现正当其时.当您考虑将现有Palm OS应用移植到Series 60 Platform时,可以先用下列三 ...
- Contiki OS 开发快速入门
笔者之前研究过一段时间 Contiki OS ,万事开头难,入门时会走不少弯路,现在将此过程分享出来.首先介绍一下 Contiki OS: Contiki是一个小型.开源.极易移植的多任务电脑操作系统 ...
最新文章
- java的语法知识_Java语法知识点
- python wmi mac变动_Python WMI参数反转
- Flask 正则路由匹配——转换器
- 新零售时代招商的新鲜玩法——用全网联动 促销活动来招商
- 酷盘API C# 测试版
- Docker之获取镜像(一)
- 服了!程序员面试现场80行代码写俄罗斯方块,最终拿到15K月薪!
- 计算机崩溃用英语怎么说,“我要崩溃了”英语怎么说?
- [ 应急响应 ]服务器(电脑)受到攻击该如何处理?(三)
- 163邮箱 java发送html邮件,java邮件发送 qq与163邮箱互发和qq和163邮箱发送其余邮箱实例...
- ftp下载工具绿色版,ftp下载工具有绿色版的吗?教程详解
- 反相器的Cadence仿真
- 动画小视频制作其实很简单,小白也能快速上手 | 万彩动画大师
- TM1621数码管驱动
- 数据库审计:DDL与DML
- 如何修改aix服务器lv的名称,aix 更改lv的大小 smitty extendlv
- 一篇文章带你玩转C语言基础语法。2:数据类型。千字总结
- amazon账号注册用什么软件?
- 明纬电源、航嘉电源真假美猴王 你怎么识别?
- 拼多多新手商家怎么定价?
热门文章
- 湖南科技大学潇湘学院计算机奖,湖南科技大学潇湘学院2013年度院级评奖评优准则...
- 使用Air724模块设计全功能DTU
- nginx 反向代理 proxy_pass DNS 缓存问题
- 麻省理工学院公开课:单变量微积分习题课
- RepRapPro赫胥黎的调试之一
- peda、Pwngdb、pwndbg的安装及避坑指南
- ffmpeg arm linux编译,arm linux 移植 ffmpeg 库 + x264 + x265
- Windows2008安全加固
- 佳信客服呼叫中心如何配置和使用IP软话机接打电话
- How project description length and expected duration affect bidding and project success 论文笔记