几乎所有的开发语言教程都是以”Hello,world”应用程序作为第一个例子。“Hello,world!”例子显示了BREW API最基本的使用方法。
注意:下面的示例代码仅仅是用来显示BREW API的基本用法,这个程序可能并不能通过TRUE BREW测试,这是因为这个示例程序并不完全。
1. #include “AEEAppGen.h” // Applet helper file |
2. #include “helloworld.bid” // Applet-specific header that |
3. // contains class ID |
4 |
5. static boolean HelloWorld_HandleEvent(AEEApplet * pme, AEEEvent |
6. eCode,uint16 wParam, uint32 dwParam); |
7 |
8. // Applet loading function |
9. int AEEClsCreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * |
10. pMod,void ** ppObj) |
11. { |
12. *ppObj = NULL; |
13 |
14. if(AEEApplet_New( sizeof(AEEApplet), // Size of our private |
15. // class |
16. ClsId, // Our class ID |
17. pIShell, // Shell interface |
18. pMod, // Module instance |
19. (IApplet**)ppObj, // Return object |
20. (AEEHANDLER)HelloWorld_HandleEvent, // Our event handler |
21. NULL)) // No special “cleanup” function |
22. return(AEE_SUCCESS); |
23 |
24. return (EFAILED); |
25. } |
26 |
27. // The event handling function |
28. static boolean HelloWorld_HandleEvent(AEEApplet * pMe, AEEEvent eCode, |
29. uint16 wParam, uint32 dwParam) |
30. { |
31. AECHAR szText[] = {‘H’,'e’,'l’,'l’,'o’,’ ‘,’W',’o', ‘r’, ‘l’, ‘d’, |
32. ‘\0′}; |
33 |
34. switch (eCode){ |
35. case EVT_APP_START: |
36. IDISPLAY_DrawText(pMe->m_pIDisplay, // Display instance |
37. AEE_FONT_BOLD,// Use BOLD font |
38. szText, // Text – Normally comes from |
39. // resource |
40. -1, // -1 = Use full string length |
41. 0, // Ignored – IDF_ALIGN_CENTER |
42. 0, // Ignored – IDF_ALIGN_MIDDLE |
43. NULL, // No clipping |
44. IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE); |
45. IDISPLAY_Update (pMe->m_pIDisplay); |
46 |
47. return(TRUE); |
48 |
49. case EVT_APP_STOP: |
50. return(TRUE); |
51 |
52. default: |
53. break; |
54. } |
55. return(FALSE); |
56. } |
上面的示例代码使用了BREW SDK提供的Applet桩代码文件(AEEAppGen.c和AEEModGen.c)。这个文件将和上面的代码一起编译和链接。这些桩代码提供了支持IModule和IApplet接口所必需服务接口,一般在所有的BREW应用开发时都必需包含这两个文件,这使得开发人员只需要简单的关注通过HandleEvent函数传给Applet事件的处理。开发都可以选择直接实现IModule和IApplet接口以满足实际需求。
在例子中,Applet在接收到EVT_APP_START事件之后显示”Hello,World!”,这个消息是在BREW启动Applet通过Applet的HandleEvent函数发给应用程序的。这个例子显示“Hello,World”并通知显示设备刷新屏幕。
如果熟悉Window SDK编程的话,上面的例子和Window SDK编程方法基本类似。也非常容易掌握BREW的开发方法。
对例子代码进行逐行说明下面:
行号 |
说明 |
1 |
前面两行为Hello,world应用所使用的头文件,AEEAppGen.h中定义了Applet函数。 |
2 |
Helloworld.bid包含了Applet唯一的ClassID AEECLSID_HELLOWORLD.这个Class Id是通过高通公司接口注册过程得到的。 |
5-6 |
为Applet的事件处理函数HandleEvent的事先声明。 |
9-25 |
这几行代码是所有模块都必需提供的载入代码,相当于程序的入口点。Hello world应用是作为动态库DLL被模拟器调用的,这种模式是设备上亦是一样的。函数AEEClsCreateInstance()的作用是为AEEApplet结构创建一个实例,这个结构通过AEEApplet_New()函数来创建,并设定应用特定的事件处理函数。第一个参数为Applet 数据结构的大小,因为在这个应用中没有其它变量,所以直接使用了AEEApplet数据结构大小。可以参见其它例子来了解如果使用AEEApplet_New()。 |
28-56 |
HelloWorld_HandleEvent()函数处理Applet收到的所有事件,主事件类型,子事件类型以及事件相关数据通过参数eCode,wParam,dwParam来传递。
34行的switch函数查看Applet收到主事件类型。
如果事件是EVT_APP_START,则Applet收到了启动消息。
IDISPLAY_DrawText()用于在屏幕中间显示字符串”Hello,world!”,标识IDF_ALIGN_CENTER 和IDF_ALIGN_MIDDLE用于在水平和垂直方向将字符串居中。
IDISPLAY_Update()用于刷新屏幕。
当用户按下设备上的”END”键时,Applet将收到EVT_APP_STOP事件。当Applet收到此事件时,需要做Applet相关的清除工作。比如保存文件,释放内存等。因为这个示例没有分配内存,所以没有特别的清除工作需要完成。所以可以忽略这个事件。
|
分享到:
相关推荐
这是部署由AWS Lambda函数支持的HTTP API的最小Hello World示例。 该功能用Go编写,并且使用Terraform自动化部署。 先决条件 Terraform and Go 安装和 。 在具有Homebrew的macOS上: $ brew install go terraform ...
注意:如果您喜欢此版本,我强烈建议您查看示例dropwizard实现[ ],它对于基于Java的Web服务的快速实现要好得多。 我爱我一些dropwizard。 直到我发现节点/表达式。 如何运行 0.1)先决条件 您将需要安装以下软件:...
移动到目录: $ cd query-hello-world 运行命令:$ mvn clean compile exec:java\ -Dexec.mainClass= " com.atscale.engine.examples.helloworld.HelloWorld " \ -Dexec.args= " <atscale engine hos
Docker示例中的Hello World Crystal 安装依赖 brew install crystal 跑 crystal helloworld.cr 建造 我们需要使用alpine linux构建静态链接的二进制文件。...docker run --name helloworld helloworld 参考
Hadoop Mac安装和Map Reduce示例 先决条件 确认适用于HadoopJava 1.6。*或更高版本 $ java -version java version " 1.7.0_79 " Java(TM) SE Runtime Environment (build 1.7.0_79-b15) Java HotSpot(TM) 64-Bit ...
� 由于采用了 Java 作为应用开发语言,目前可用的传统第三方应用还很少,但由于 Android 是一款完全 开 源的移动计算平台,相信第三方应用会很快的丰富起来。 � Google 提供了一套 Java 核心包 (J2SE 5,J2SE 6) 的...
你需要什么最喜欢的文本编辑器或IDE JDK 6或更高版本安装Gradle安装Gradle 在Unix上$ sudo add-apt-repository ppa:cwchien/gradle$ sudo apt-get update$ sudo apt-get install gradle在Mac OS X上brew install ...
cd scala && scala helloWorld.scala && cd .. cd clojure && lein hello-world && cd .. cd ceylon && ceylon compile de.olofsson && ceylon run de.olofsson && cd .. cd fantom && fan hello_world.fan && cd ..
以脚本形式运行示例单个文件示例既可以在Xcode中使用 (使用简单的brew install mxcl/made/swift-sh安装)作为脚本运行,也可以在swift run 。 它还包含一个用于部署到AWS Lambda的示例: 。例子 原始HTTP服务器...
当发出GET请求时,servlet 将使用默认的Hello World! 或者如果name会话属性已设置为Hello [name] 。 可以通过发出带有name参数的POST请求来更改name会话属性。 有关更多信息,请阅读我的博客文章 。Redis 下载并...
| | | Aardvark.Docs是开源一部分,用于可视化计算,实时图形和可视化。...$ dotnet run -c Release -p ./src/HelloWorld/HelloWorld.fsproj 如果您使用的是Mac,则还需要安装DevIL : $ brew install devil
建立项目$ ./gradlew build编译的jar捆绑包将在./hello-world/build/libs/hello-world-0.1.0.jar生成。2.优化罐子您需要先优化jar捆绑包,然后再将其部署到本地或ICON网络。 这涉及一些预处理,以确保实际部署成
部分包含非常简单的示例,从Hello World开始,但也包含一些简单算法。 部分使用Golang的更复杂的功能。 最后,“部分包含telnet-clients或http-server(甚至使用SSL)之类的应用程序。 如果您需要更多Golang示例,...
React教程 这是中的React评论框示例。 使用 包括几个简单的服务器实现。 它们都提供来自public/静态文件,并处理对/api/comments请求以获取或添加数据。 使用以下任一启动服务器: 节点 npm install node server.js ...
osx上Docker中的Redis集群使用7000〜7005的端口启动redis集群bash start.sh连接到集群 redis-cli -c -p 7000停止集群 docker-compose down安装redis-cli brew install redis-clicli中的示例输出 ○ → redis-cli -c ...
建立一个mysql运算符建立一个wordpress运算符该方法我们将从一个简单的hello world示例开始。 并逐步将其修改为功能齐全的mysql运算符。 我们将从实施快速+肮脏的技术开始,然后逐步加以改进并在此基础上结合最佳...
作为测试,您可以运行pyspark helloworld_standalone.py 。 对于 Databench,运行pip install -r requirements.txt然后运行databench 。 这是使用 Databench 0.3.9 和 Spark 1.2.0 进行测试的。 mcrisk示例基于 ...