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中运行。原本是英文,看着不舒服,翻译出来,供大家参考。水平有限,错误难免。 立即下载

相关推荐

手把手教你用Switched-Capacitor Converter实现高效DC-DC转换(附常见拓扑对比)

本文详细介绍了开关电容转换器(SC)在高效DC-DC电源设计中的应用,对比了四种常见拓扑结构的优缺点,并提供了损耗分析与效率优化的实战技巧。通过无电感设计,SC转换器在5G模块和可穿戴设备中展现出超高功率密度和微小体积的优势,是电源管理领域的革命性技术。

weixin_30790841的博客 273

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

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

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

电流镜结构实战:从零理解MOS管偏置电路设计(附吴金课程补充)

本文深入解析电流镜结构在MOS管偏置电路设计中的关键作用,从基本原理到实战应用全面覆盖。通过分析偏置电路的核心原理、破解设计难题的实用技巧,以及进阶优化策略,帮助工程师掌握这一模拟电路设计的核心技术。特别适合需要理解电流镜结构和基准电路设计的读者参考学习。

ujm5678901的博客 256

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

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

小宝哥Code的专栏 1万+

基于PyQt5的ROS移动机器人的人机交互UI界面

每次做实验的时候,手动rosrun,roslaunch太过麻烦,通过ui界面的话,只需要点点按钮就可以啦 ros_car_py包括运动,建图,导航,ui界面的程序全部打包上传,相互依赖关系见ros_car_py包。 import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets imp...

工大机器人工作室 7366

别再死记硬背了!用Wireshark抓包实战,5分钟搞懂GRE、L2TP、IPsec的区别

本文通过Wireshark抓包实战,详细解析GRE、L2TP和IPsec三大隧道协议的核心差异与应用场景。从报文结构到配置示例,帮助网络工程师快速掌握这些协议的本质,提升VPN部署与故障排查能力。特别适合准备HCIP认证的工程师深化理解。

weixin_30352645的博客 439

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

从零实战:基于华中8型数控系统的CNC数据采集与二次开发

本文详细介绍了基于华中8型数控系统的CNC数据采集与二次开发实战指南。从开发环境准备到核心数据采集实现,涵盖Windows平台配置、实时数据采集、报警处理等关键技术,帮助开发者快速掌握华中数控系统的数据采集能力,提升智能制造水平。

weixin_42561143的博客 813

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

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

blogfeifei 1314

浪潮服务器ESXI6.7部署实战:手动集成RAID驱动避坑指南

本文详细介绍了在浪潮服务器上部署ESXI6.7时手动集成RAID驱动的完整流程和避坑指南。从驱动获取、解压技巧到封装实战,逐步解决国产服务器常见的驱动缺失问题,特别针对PM8060 RAID卡提供具体解决方案,帮助IT运维人员顺利完成ESXI部署。

weixin_33725722的博客 461

2026年全国青少年信息素养大赛复赛真题(算法应用主题赛C++初中组:带解析)(7月4日试卷一)【文末附答案和解析】

2026年全国青少年信息素养大赛复赛真题(算法应用主题赛C++初中组:带解析)(7月4日试卷一)【文末附答案和解析】

王老师青少年编程 1737

QNX Photon Gui and Multiple Threads

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

CyberLabs的专栏 2413

【个人成长笔记】在Ubuntu中安装RTL8188GU USB无线网卡驱动(Driver for Linux RTL8188GU)

这篇笔记提供了在Ubuntu系统中安装RTL8188GU无线网卡驱动的完整指南。主要内容包括:驱动程序的官方来源(Github链接)、详细安装步骤(通过git下载、编译安装等命令),以及将设备转换为USB网卡模式的关键指令。特别提醒每次开机都需要执行模式转换命令,因为设备默认会以U盘模式启动。文章以简洁的技术文档形式呈现,适合Linux用户快速查阅和操作。

yuhuasheng1997的博客 1827

QNX的深度嵌入过程

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

Delores的专栏 6523

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

QNX

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

junecau的专栏 1482

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

QNX SLM 学习笔记

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

moxiouhao的专栏 4787

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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、付费专栏及课程。

余额充值