QNX下Photon编程(一)Photon编程概述

QNX发布6.4.0 alpha版了  心血来潮,去qnx官方网站逛了一下,发现qnx已经发布6.4.0 alpha版了,马上把qnx版与windows版都下载下来安装体验一把,哈哈不错。1、安装过程基本没啥变化,license与6.3的没啥区别。2、安装好后,bootloader升级了,可以选择引导哪个映像文件。3、gui基本没啥变化,背景图默认还是6.3的那个。qnx就是实在,不像linux那些发行版,每发行一个版本, 阅读详情

这是一个系列讲座,主要讲述QNX下的GUI编程-Photon编程,主要针对初学者。

 

Photon Manager作为一个服务进程运行,并且创建一个三维的事件空间(包含二维空间的region和第三维--事件管理)。Photon Manager本身不会绘制任何东西,也不会管理鼠标、键盘等输入设备。Photon Manager只是一个中间件,一方面他提供给上层应用一系列标准编程接口,另一方面驱动程序和窗口管理器通过与他通信获得应用程序指令。

 

Photon microGUI包含了一个可视化开发工具Photon Application Builder,也就是我们常说的PhAB。他可以辅助设计界面,并生成相应的C/C++代码,通过使用PhAB我们可以快速的开发产品原型、并将每一个widget的事件处理回调属性化。

 

Widget集合建立在X Toolkit(Xt)库之上,这是一个面向对象的轻量级框架,如果你熟悉Xt,那么你学习Photon编程会很容易。

 

每一个Widget封装了如下内容:

  1. 怎样绘制自己;
  2. 如何相应用户事件;
  3. 当他销毁时如何重画;

一个Widget创建后我们可以使用PtSetResource对他的资源(或者说是属性)进行设置,事件回调也可以通过这种方法设置。

 

一个Widget的生命周期包括如下阶段:

  1. 创建,Create or Instantiated,这时对象已经存在,可以设置属性;
  2. 真实化,realized,这时对象将可见,可以通过PtRealizeWidget()来真实化对象;
  3. 虚化对象,unrealized,这时对象不可见,可以通过调用PtUnrealizeWidget()来虚化对象;
  4. 销毁,当对象不需要存在时,可以手动销毁对象,可以通过PtDestroyWidget()销毁对象。

我们可以使用PhAB来建立Photon工程,也可以手工建立文本类型工程之后加入对象的创建、真实化、虚化、销毁的代码,通过调用PtMainLoop()处理消息队列中的消息来完成业务逻辑。

 

 

Photon API函数命名约定:

  1. Al前缀:国际化处理,需包含phexlib库;
  2. Ap前缀:PhAB处理模块、widget数据库等的函数,需包含Ap库;
  3. Pd前缀:绘制上下文函数;
  4. Pf前缀:文字操作;
  5. Pg前缀:底层图形函数;
  6. Ph前缀:Photon microKernel绘制请求函数;
  7. P1前缀:图形图像函数;
  8. Pm前缀:内存上下文函数;
  9. Pp前缀:打印函数;
  10. Pt前缀:创建、真实化、销毁Widget函数;
  11. Px前缀:加载图像、处理配置文件等扩展函数集;
  12. Pt前缀:实时时钟函数;
  13. utf8:UTF-8编码字符串函数;
  14. wc:宽字符字符串处理函数;

 

创建Photon工程步骤:

  1. 创建module:包括窗口、对话框、菜单、图片等资源;
  2. 添加widget;
  3. 添加事件回调处理函数;
  4. 生成代码;
  5. 运行应用程序;

 

 

 

 

 

QNX快速入门指南(中文版) 使用开发包在windows中开发程序,然后连接到QNX中运行。原本是英文,看着不舒服,翻译出来,供大家参考。水平有限,错误难免。 立即下载

相关推荐

ROS2节点通信实战:用C++手写一个‘智能小车’控制模型(附完整代码)

本文详细介绍了如何使用ROS2和C++构建一个智能小车控制模型,涵盖运动控制节点、电池管理服务、参数动态配置和Rviz可视化等核心功能。通过实战项目演示ROS2节点通信机制,帮助开发者快速掌握机器人开发的关键技术,并提供了完整的代码实现和系统集成方案。

weixin_30607029的博客 261

QNX下Photon编程(二)简单例子

这是一个系列讲座,从官方文档《photon_prog_guide》而来,主要讲述QNX下的GUI编程-Photon编程,主要针对初学者。  第一个例子:首先我们创建一个QNX PhotonAppbuilder project,这时会自动打开PhAB工具。PhAB工具界面如下所示:   我们在弹出的对话框中选择新的应用程序样式为base window。

「行到水穷处,坐看云起时」 4904

CVPR 2024 LaTeX 模板实战:从匿名提交到图表排版的避坑指南

本文详细解析CVPR 2024 LaTeX模板的使用技巧,涵盖匿名提交设置、pdfLaTeX编译器选择、图表排版优化等关键环节。通过实战案例演示智能引用、公式编号、三线表制作等专业技巧,帮助研究者高效完成论文格式规范,规避常见排版错误。特别针对双栏格式下的图片定位、跨栏表格等复杂场景提供解决方案。

weixin_42561040的博客 453

QNX是什么系统,零基础如何学习QNX

在完成了基础学习和入门实践后,可以从以下高级领域深入研究 QNX 的特性和应用,涉及更复杂的系统设计与优化。在完成了基础学习和入门实践后,可以从以下高级领域深入研究 QNX 的特性和应用,涉及更复杂的系统设计与优化。通过深入学习 QNX 的微内核架构、资源管理器、实时通信和高级图形技术,你可以掌握 QNX 的核心开发技能,并将其应用到专业领域。通过深入学习 QNX 的微内核架构、资源管理器、实时通信和高级图形技术,你可以掌握 QNX 的核心开发技能,并将其应用到专业领域。

小宝哥Code的专栏 1万+

从零开始深入理解 AI Agent(完整版)

AI Agent(智能体)是一个能够自主感知环境、做出决策、执行行动并记忆经验的智能系统。特性传统程序AI Agent决策方式固定逻辑(if-else)动态推理(LLM 思考)灵活性需要重新编程自然语言描述即可能力边界明确限定可通过工具扩展学习能力无可通过记忆积累经验│ 感知 │ ───→ │ 推理 │ ───→ │ 行动 │↑ │ ││ ↓ ││ 记忆 │ ←─── │ 反思 │ ←─────────┘感知(Perception)

qq_20096229的博客 756

深入解析iDP3的Learning模块:从数据集构建到3D动作预测的代码实现

本文深入解析iDP3框架的Learning模块,从数据集构建到3D动作预测的完整代码实现。通过扩散模型实现视觉输入到动作序列的端到端预测,详细介绍数据采集、增强策略、模型架构及训练技巧,帮助开发者掌握3D动作预测策略的核心技术。

k0l1m2n3o的博客 310

qnx neutrino 6.5.0 photon程序开机自运行

You can tell Photon to launch applications on startup. To do this, add the name of the application's executable to the $HOME/.ph/phapps configuration file. For example: ped & pterm & helpviewer &

lzfyijian的专栏 870

【RK3399】Android平台增加一款声卡设备(ES7210+ES8156),进行录音/播放测试。

文章目录前言一、开发环境二、概述三、硬件介绍1、ES72102、ES81563、数字麦克风阵列4、音频示意图四、下载SDK五、编译、烧写1、u-boot2、kernel3、Android SDK4、烧写分区5、烧写固件六、声卡驱动1、添加codec代码2、修改Kconfig3、修改Makefile4、修改rockchip_defconfig5、修改DTS七、声卡调试1、查看声卡注册信息2、使用tinycap/tinyplay录音和放音3、使用示波器观测八、修改HAL层1、修改默认capture/playba

rentong123的博客 2万+

开始QNX上的图形编程,了解GF

进行了一些QNX编程的学习后,开始尝试QNX图形编程。在文本界面上输出各种字符串确实有点枯燥,很希望在QNX系统上显示一些图形界面。 首先看了一下资料,了解有那些方法可以实现图形编程。QNX官方文档里有三本是和图形相关的。 第一本是:《QNXR Neutrino Device Drivers,Graphics Devices》,一看就不对劲,这本书是有关图形设备驱动的,现在还没有这么高的水平写...

blogfeifei 1314

32GB Jetson Orin SOM 不能刷机问题排查

拿到了一个新的Orin SOM,当用orin Devkit CVB或定制的CVB不能用Linux_For_Tegra刷机,flash日志(JetPack5.0DP和5.0.1DP都失败了) 2. 确认mb2配置中将CVB的eeprom读取大小设置是否为0 ? 已经确认是正常的 在定制的orin cvb flash上使用Orin devkit som,启动是成功的。但新得到的Orin som并不工作可以排除理由:使用Orin Devkit CVB和Orin SOM(不是Devkit SOM)仍然不能

jzwjzw19900922的博客 1499

Unity之如何实现TTS文本转语音(真人发音)

微软Azure TTS 文本转语音 服务 将文本转换为逼真的语音的语音服务功能 支持个各国语言,各种中文各种方言,支持不同音色男音女音 支持离线和在线版本

TxNet 5480

QNX Photon Gui and Multiple Threads

许多GUI应用程序是敏感的:你点击一个构件,应用程序立即就会响应。 其它应用程序是非常不敏感的。应用程序也许必须执行时间敏感型的操作或者和远程设备通讯,这些动作也许会使应用程序每次被阻塞一段时间。使这种类型的应用程序得到更多响应的一个方法是使用多线程。至少一个纤程总是可以处理用户的点击,而其它纤程可以处理阻塞的或长时间的操作。 但是现在两个线程能够在相同时间试图进入或更新同一个

CyberLabs的专栏 2413

【C++实战(62)】从0到1:C++打造TCP网络通信实战指南

本文是 C++ 网络编程实战专栏第 62 篇,聚焦 TCP 客户端与服务端开发。先阐述 TCP 协议特点、核心 API 及阻塞与非阻塞 IO 区别,打牢基础;再详解 TCP 服务端初始化、客户端连接处理与数据收发,以及客户端初始化、异常处理和协议设计;最后通过简易聊天系统实战,介绍线程池应用、协议解析及稳定性测试,助力开发者掌握 TCP 网络编程实操技能。

邓邓子的博客 999

QNX的深度嵌入过程

1.1           QNX目标系统嵌入利用QNX的模块性和和可裁剪性,其嵌入过程一般是:构建Buildfile -> 编译buildfile生成系统映象文件 -> 启动目标系统 ->嵌入式系统软件设计。其中的关键是构建Buildfile[19]。通常一个嵌入式系统需要一个可启动的操作系统映象文件(OS Image)。对于基于QNX的嵌入式一个应用系统,就是根据所选择的CPU

Delores的专栏 6523

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

QNX

QNX 求助编辑百科名片    QNX界面 Gordon Bell和Dan Dodge在1980年成立了Quantum Software Systems公司,他们根据大学时代的一些设想写出了一个能在IBM PC上运行的名叫QUNIX(Quick U

junecau的专栏 1482

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

QNX SLM 学习笔记

背景 了解学习QNX -SLM机制 内容 参考 QNX7.0 SLM,若需了解更过内容可移步 SLM是什么 系统启动和监控:启动由许多必须按特定顺序启动的进程组成的复杂应用程序,下图是可以看到SLM在整个QNX BOOT的运行位置。 怎么用 可以通过slmctrl控制。但是我们通常使用xml配置的方式来确定进程的启动顺序。 SLM 配置概要 //根节点 <SLM:system> //组件,可以有多个组件 <SLM:component name="io-pkt">

moxiouhao的专栏 4787

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

linux qnx 开发平台,QNX学习笔记之QNX Momentics IDE开发工具使用笔记

使用tftp,串口连接Target,下载内核1.uboot的使用1) 采用串口,波特率为115200, 采用QNX M IDE默认的设置,按任意键,即可进入uboot2) 常用的命令有:setenv serverip 192.168.0.1;设置服务器tftp地址setenv ipaddr 192.168.0.2;设置本地tftp地址tftp 20000 file; 通过tftp下载内核到0x...

weixin_42134338的博客 1338

QNX如何进阶

604D - QNX如何进阶 2012-06-04 15:40:11 标签:的 是 百度百科 拿来主义 鲁大师 原者著:这几天一直在晚上搜寻DSP+ARM及嵌入式开发的资料,想找一条快速入门的方法。遍历全贴,找到一个规律:乍一看GOoooooogle,Baidu上资料很多,除了必读的百度百科及Wiki,遍历完其他后,感觉精华也就那几篇,嫁来嫁去。大多者从00+转载到10+。纵

Blaider的专栏 2516

c语言qnx通信函数,QNX中进程间通信(IPC)之Signal篇

主要内容翻译自QNX开发文档,根据自己理解翻译,错误之处在所难免,目的还是提供给大家对照阅读,我自己也写了一些代码,抽空后继也会放上如果应用程序需要处理信号 (signal) ,你需要设置信号处理函数 (signal handler) 。你不能在信号处理函数中调用 Photon 函数的原因是由于 widget library 是非可重入和信号安全的。为了绕开这个问题, Photon library...

weixin_29074295的博客 655
上一篇: QNX下测试AM79C97X网卡代码例子
下一篇: QNX下Photon编程(二)简单例子
Soloman
博客等级 码龄25年 171粉丝 159原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值