电子发烧友网 > 嵌入式技术 > 正文

嵌入式GUI软件MicroWindows的体系结构和图形引擎特性与实现

2020年05月18日 09:24 次阅读

许多开发者在嵌入式设计中开始使用类似于桌面的操作系统。其中一个方案就是Linux操作系统。由于Linux在嵌入式系统上具有桌面电脑的全部功能和特性,作为一种免费的开放源码,它允许修改和根据用户的要求进行定制。

MicroWindows是一个开放源码的嵌入式GUI软件,目的是把图形视窗环境引入到运行Linux的小型设备和平台上。作为X Window系统的替代品,MicroWindows可以用更少的RAM和文件存储空间(100KB~600KB)提供相似的功能,允许设计得轻松加入各种显示设备、鼠标、触摸屏和键盘等;可移植性非常好,可用C语言实现;支持Intel 16位/32位CPU、MIPS R4000以及基于ARM内核的处理器芯片。

1 体系结构

1.1 分层结构设计

MicroWindows采用分层结构设计方法,在底层提供对屏幕、鼠标、触摸屏和键盘的驱动,在程序能访问实际的硬件设备和其它用户定制设备。在中间层有一个可移植图形引擎,提供绘制线程、区域填充、绘制多边形、裁减和使用颜色模式的方法。在顶层实现多种API以适应不同的应用环境。目前,MicroWindows中使用两种流行的图形编程接口:Microsoft Windows Win32/WinCE图形显示接口(GDI)和Xlib接口。前者应用于所有的Windows CE和Win32应用程序;后者就像Nano-X,应用于所有Linux X插件集的最底层,这样可让Linux图形程序员X接口开发图形应用程序。

1.2 驱动设备

device.h文件中定义设备驱动接口。MicroWindows已实现至少将一个屏幕、鼠标和键盘的驱动与系统相连。独立图形设备引擎的中间层可以使驱动设备直接完成对硬件的具体操作。

(1)屏幕驱动

MicroWindows可运行在支持Framebuffer的32位Linux系统上,也可使用SVGALib[45]库来进行图形显示。此外,还被移植到16位的ELKS和实模式的MSDOS上,实现1、2、4、8、16和32位的像素支持,以及实现VGA16平面模式支持。它的图形引擎能够运行在任何支持readpixel、writepixel、drawhorzline、drawvertline和setpalette的系统之上。如果底层驱动系统实现了Blitting,则上层可提供更多的增强功能。在底层函数的支持之下,上层实现了对位图、字体、光标以及颜色的支持。除了基于调色板的1、2、4和8位像素模式,也实现15、16和32位像素的真彩模式。

(2)鼠标驱动

MicroWindows有三个鼠标驱动程序。GPM驱动程序mou_gpm.c支持Linux系统,串口鼠标驱动程序mou_ser.c支持Linux和ELKS系统,int33驱动程序mou_dos.c支持MSDOS系统。鼠标驱动程序的基本功能,是将鼠标中的数据编码,然后返回关于鼠标位置和按键的相对或绝对数据。

在Linux下,MicroWindows的主循环是select()声明,如果运行的系统不支持select(),MicroWindows则提供Poll()入口。

(3)键盘驱动

MicroWindows提供两个键盘驱动程序:Kbd_tty.c适用于Linux和ELKS系统,键盘被当成文件描述符来读写;Kbd_bios.c用于MSDOS真彩模式下,它是对PC BIOS进行读写来对按键进行操作。

1.3 MicroGUI――独立图形设备引擎

MicroWindows的MicroGUI提供了对屏幕、鼠标、键盘驱动程序和硬件之间的接口。用户应用程序不能直接调用核心图形引擎,但是可通过API函数来实现。核心程序在客户机/服务器模型下常驻在服务器上,使用内部的文本字体和位图文本模式。此外,核心程序使用的是指针,这样不用靠转变成句柄来实现更多的复杂功能。

MicroWindows中的核心程序以GdXXX()开头,与之相连的是图形输出系统而不是窗口管理系统。此外,还控制所有的裁剪和颜色转换功能。以下是组成MicroWindows核心模块的文件:

dvdraw.c――核心图形程序,关于绘制线段、圆、多边形及其填充,文本和位图文件的绘制和颜色转换;

devclip.c――核心裁剪程序;

devrgn.c――动态分配程序;

devmouse.c――鼠标控制程序;

devkbd.c――核心键盘控制程序;

devpalX.c――连接到系统调色板。

1.4 应用程序接口

MicroWindows提供两个应用程序接口:MicroWindows API(源代码在win*.c中)和Nano_XAPI(源代码在nanox*.c中)

在MicroWidows上的API函数的基本模型都是用来初始化屏幕、键盘和鼠标的驱动程序,然后一直等待select()消息循环。当事件发生时,这条信息将送到用户程序。如果是用户请求图形操作,那参数将被编码后送到适当的GdXXX核心程序上。与原始图形操作相对的窗口概念是被该层所控制的,也就是说该层的API函数定义了窗口及其对应系统的概念。这样,系统坐标就能被转成屏幕上显示的坐标,并且可将数据传给GdXXX核心程序,由其作实际操作。该层亦定义图形/显示文件,并且会将此信息包括裁减信息送到核心程序上。

MicroWindows API支持大多数图形绘制、裁减、窗口工具条绘制以及拖拉窗口等这些程序。Nano_x API以mini-X服务器基础,类似于X的一个API,沿用X Window中的Xlib API,命名都是GrXXX()而不是X Windows中的X)。Nano-x API加入了基于网络的客户机/服务器功能,但是没有实现窗口管理,所以对窗口的处理需要使用系统提供的一个插件(widget)集,或者完全由应用程序员自已开发。

2 图形引擎特性与实现

图形引擎层的功能是完成图形在实虚屏之间的转换,以Gd.。.为开头,并将指针传给PSD作为它的首个参数。PSD参数将指定底层的显示模式,例如设备的垂直和水平尺寸、硬件使用的颜色模式。另外,真正执行画图的程序在这一层中作为功能指针使用。所有屏幕坐标都是COORD类型。

颜色在图形引擎中被指定RGB CILORVAL模式,然后被转换成颜色指针,以PIXELVAL模式传给显示硬件,在32bpp(bit per pixel)真彩显示器环境下不必转换。

(1)区域

区域用来描述屏幕上像素点的分布。在MicroWindows中,区域是用一些无交迭的矩形组成的数组来描述的。目前实现区域有两种方法,最初是用一个静态数组CLIPRECTs来描述复杂区域。在这个数组中任一矩形中的点都被认为是存在这个区域中的,另一个全局变量clipcount用来给这个数组中的矩形计数。这个方法没有给区域管理提供入口点,所以整个数组的数据直接被送到负责裁剪功能的函数数口。新方法则可以创建任何数目的区域。用来描述区域的数组CLIPREGION被定义成动态数据组,可动态分配它所包含矩形的数量,这样那些无交迭的矩形被存放在“y-x”类型的队列中。在同一队列中,所有矩形的垂直高度y是一样的,这意味着在每个队列中只有矩形的宽度可变。实际程序是利用IntersecTIon、Union、SubtracTIon、Exclusive OR等方法来实现创建、删除一个区域或者是将几个区域或矩形合并。以下是这种方法设计的几个函数。

嵌入式GUI软件MicroWindows的体系结构和图形引擎特性与实现

(2)裁剪

图形引擎中有一个由图形操作定义的由一些矩形组成的裁剪区,如果点被包含在这些裁减区内就会被绘制出来。有两个裁剪算法:devclipl.c针对静态矩形数组,devclipc2.c针对新的动态数组。GdSetClipRects是唯一删除区域并指定后来的图形操作的入口点。所有的绘图程序都要调用两个附加程序来决定是否画图。GdClipPoint获取屏幕坐标的(x,y)点,如果该点被绘制出来的话,则返回TRUE。GdClipArea获取屏幕上方最左的或者下方最右的点并回以下值:CLIP_VISIBLE(指定区域在原区域内)、CLIP_INVISIBLE(指定区域不在原区域内)、CLIP_PARTIAL(指定区域部分在原区域内)。

(3)画线

MicroWindows使用GdPoint画点,GdLine画线。画线时使用当前的前景色(DgSetForeground指定)。有两种绘制模式:MODE_SET和MODE_COR。

(4)矩形、圆和椭圆以及多边形

矩形、圆和椭圆的绘制分别调用GdRect和GdEllipse来实现。MicroWindows中定义了一个包含(x,y)多边形顶点的数组来表示多边形,调用GdLine函数画线,把这些点相连就可以实现画多边形。绘制时使用前景色。

(5)区域填充

MicroWindows中使用GdFillRect函数填充矩形区域,填充使用前景色。填充圆和椭圆使用GdFillEillpse函数,填充多边形使用GdFillPoly函数。填充的实现是在屏幕驱动中不断地调用GrawHorzLine函数。

(6)字体和文本输出

MicroWindows支持可变/不可变字体。文本输出时使用GdSetFont定义输出使用的字体,再调用GdText函数输出。

(7)颜色模式和调色板

MicroWindows支持RGB颜色,颜色匹配,真彩和调色板显示,3D效果的显示。

(8)图片绘制

MicroWindows支持两种格式的图片。单色图片用IMAGEBITS结构(1表示前景色,0表示背景色)来定义,绘制时调用GdBitmap程序。彩色图片可以分别定义为1、4、8 bpp的模式,用IMAGEHDR结构来表示。绘制时调用GdDrawImage函数。

(9)映射

映射功能在实虚屏的转换中使用。GdBlit可以实现上层的API将虚拟内存存复制到显示屏上,复制时调用GdBlit函数。

3 MicroWindows API

MicroWindows API中的基本通信机制是消息机制。一个消息机制中包含了message number和两个参数:wParam、lParam。Message被存放在应用程序的message-queue中,GetMessage函数将其取出。WM_GHAR针对键盘输入,WM_LBUTTONDOWN针对鼠标键被按下。窗口创建时使用WMCREATE,删除时使用WM_DESTROY。DispatchMessage将消息传到处理程序的窗口。

以下是处理消息的有关函数:

SendMessage 将消息传到窗口

PostMessage 将消息传到消息队列

PostQuitMessage 传递WM_QUIT消息到消息队列读时中断程序

GetMessage 得到消息后结束中断

TranslateMessage 将按键按下/弹起的消息传到WMCAR

DispatchMessage 将消息传到为它分配的窗口程序

3.2 窗口的创建和删除

RegisterClass 定义新的窗口类型并启动窗口程序

UnRegisterClass 删除窗口类型

CreateWindowsEx 按窗口类型创建一个窗口

DeatroyWindow 删除一个窗口

窗口创建后产生WM_CREATE消息,删除产生WM_DESTROY消息。

3.3 窗口的显示、隐藏和移动

ShowWindow函数指定窗口是否可见。MoveWindow改变窗口的位置和大小。窗口位置改变时,产生WM_MOVE消息;窗口大小改变时,产生WM_SIZE消息。

3.4 窗口的绘制

窗口绘制时产生WM_PAINT消息。窗口的标题栏自动绘制,设置属性使用SetWinowText,察看属性使用GetWindowText。

(1)实虚屏切换

窗口绘制使用的坐标系统是屏幕上的绝对坐标系,MicroWindows API使用的是相对坐标系。GetClientRect和GetWindowRect函数各自返回虚屏和实屏的坐标值。

(2)Device Contexts

调用图形API之间要包含device context。它指定系统所使用的窗口和坐标系,同时还定义系统默认的前景色和背景色。

GetDC用来包含device context。在画标题栏还需调用GetWindowDC。GetDCEx定义子/兄弟窗口的裁剪操作。绘制结束时调用ReleaseDC释放DC。

(3)图形API

见网络补充版(http://www.dpj.com.cn)

3.5 其它实用函数

WndSetDesktopWallpaper 设置桌面的背景图片

WndSetCursor 为窗口创建光标

WndRaiseWindow 拉伸窗口

WndLowerWindow 缩小窗口

WndGetTopWindow 返回最上层窗口的句柄

Sleep 睡眠

(1)设置窗口中心

WM_SETFOCUS和WMKILLFOCUS分别用于获取/删除中心。GetAcTIveWindow返回ancestor窗口,GetDesktopWINDOW返回当前桌面窗口的句柄。

(2)鼠标捕获

WM_MOUSEMOVE用来表示鼠标被移动。SetCapture获取全部的鼠标移动信息,ReleaseCapture返回到程序,GetCaptrue返回到捕获区域。

(3)区域管理

SetRect 定义一个矩形结构

SetRectEmpty 定义一个空矩形

CopyRect 复制一个矩形

IsRectEmpty 为空矩形时返回TRUE

InflateRect 放大矩形

OffsetRect 移动矩形

PtInRect 判断点是否在矩形区内

4 Nano-X API

(1)Client/Server模型

Nano-X允许应用程序使用Client/Server网络协议或本地UNIX Domain Socket,可让几个应用程序运行在嵌入式设备或远端主机上,并连接到Server上显示出来。

(2)窗口的创建和删除

Nan0-X中使用GrNewWindow创建窗口。GrNewInputWindow定义窗口只允许用来输入。函数定义了窗口的边界和颜色。

(3)窗口的显示、隐藏和移动

GrMapWindow用来显示窗口,GrUnmapWindow用来隐藏,GrRaiseWindow用来拉伸,GrLowerWindow用来缩小,GrMoveWindow用来移动,GrResizeWindow用来改变窗口大小。

(4)窗口中的绘制

①Graphics Context。GrNewGC用来分配graphics Context,删除时使用GrDestroyGC,GrCopyGC用来复制。创建一个Graphics Context后,服务器返回一个Graphics Context的ID,用来作为API的参数。GC中不存放裁剪区和系统坐标系。

②绘图API。

责任编辑:gt

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

《嵌入式技术 基础课程》之逆向-X86汇编

我们将《嵌入式工程师-系列课程》分成两大阶段:第一阶段:《计算机体系结构》课程   分成4篇:分别是
发烧友学院发表于 2019-01-21 00:00 1627次阅读
《嵌入式技术 基础课程》之逆向-X86汇编

微软Windows 10X系统支持UWP应用和W...

微软确认Windows 10X系统能够运行UWP应用、网页应用以及传统的Win32应用程序。Win3....
发表于 2020-05-15 17:04 174次阅读
微软Windows 10X系统支持UWP应用和W...

Tannoy现正发售CVS 1.0 嵌入式扬声器...

CVS 301采用3寸聚丙烯全频单元,带丁基橡胶边。CVS 401、CVS 601和CVS 801分....
发表于 2020-05-14 16:56 317次阅读
Tannoy现正发售CVS 1.0 嵌入式扬声器...

一个任务如何拥有自己的CPU

任务有下面的特性:任务并不是随时都可以运行的,而一个已经运行的任务并不能保证一直占有 CPU 直到运....
发表于 2020-05-14 15:01 375次阅读
一个任务如何拥有自己的CPU

嵌入式C语言的自我修养:这样编出来的代码简直行云...

为编写出高质量嵌入式软件,从嵌入式软件安全及可靠性出发,本规范对由于C语言标准、C语言本身、C编译器....
发表于 2020-05-14 14:43 395次阅读
嵌入式C语言的自我修养:这样编出来的代码简直行云...

兆易创新布局新型存储器RRAM领域,为嵌入式产品...

5月12日消息,兆易创新今日宣布,与领先的半导体IP供应商Rambus Inc. 就RRAM (电阻....
发表于 2020-05-14 14:38 307次阅读
兆易创新布局新型存储器RRAM领域,为嵌入式产品...

关于嵌入式闪存技术的几点误区

发表于 2020-05-14 11:29 237次阅读
关于嵌入式闪存技术的几点误区

康耐视推出In-Sight D900嵌入式视觉系...

5月12日消息,康耐视宣布推出In-Sight家族的新成员——In-Sight D900嵌入式视觉系....
发表于 2020-05-13 14:42 216次阅读
康耐视推出In-Sight D900嵌入式视觉系...

PIC32MX695上的应用程序动态变量更新问题如何解决

我的问题是:我正在运行在PIC32MX695上的应用程序中使用动态变量,据我所知,我并没有看到它们持续地实现。我从两...
发表于 2020-05-13 12:21 12次阅读
PIC32MX695上的应用程序动态变量更新问题如何解决

使用BIF管理嵌入式可充电电池

在可预见的将来,许多现代移动和嵌入式消费电子产品将受到无线束缚设计中可用电池电量的支配。尽管为创建使这些设备真...
发表于 2020-05-13 11:19 572次阅读
使用BIF管理嵌入式可充电电池

并行加入多核嵌入式计算的并发

对于我们许多人来说,术语并行性 和并发性几乎是同义词,即使我们认为它们代表的概念有所不同,我们也不完....
发表于 2020-05-13 11:02 189次阅读
并行加入多核嵌入式计算的并发

ARMv8处理器体系结构中的虚拟化功能

基于ARMv8的系统中的虚拟化设施在这些系统中扮演着特殊角色,并且由几个组件组成。尽管ARMv7具有....
发表于 2020-05-13 10:48 67次阅读
ARMv8处理器体系结构中的虚拟化功能

如何为嵌入式应用程序选择操作系统

在台式计算机上,操作系统(OS)的选择很大程度上取决于口味-Windows,Apple,Linux。....
发表于 2020-05-13 10:17 69次阅读
如何为嵌入式应用程序选择操作系统

嵌入式视觉的概念及关键因素是什么

基于视觉的系统在很多行业和应用领域中已变得非常普遍。实际上,我们中的很多人每天就携着一个嵌入式视觉系统,比如在...
发表于 2020-05-13 08:07 177次阅读
嵌入式视觉的概念及关键因素是什么

嵌入式系统的应用与发展趋势分析

在过去的几年中,整个嵌入式系统市场有了长足的发展。随着物联网和工业物联网的出现,嵌入式系统技术已成为....
发表于 2020-05-12 16:24 217次阅读
嵌入式系统的应用与发展趋势分析

第十代英特尔酷睿处理器可为数字标牌解决方案助力

第十代英特尔®酷睿™处理器能够为物联网平台提供坚实的支撑,它具有十核心二十线程,可提供空前的数据吞吐....
发表于 2020-05-12 15:18 957次阅读
第十代英特尔酷睿处理器可为数字标牌解决方案助力

采用VxWorks嵌入式操作系统实现MB系列智能...

为此,南京南瑞自动控制有限公司研制出新一代MB系列智能可编程控制器,它继承了传统PLC的优点,又弥补....
发表于 2020-05-12 09:57 194次阅读
采用VxWorks嵌入式操作系统实现MB系列智能...

基于MVC设计模式实现可扩展web应用架构的设计

传统的web应用程序会在表现层包含管理用户交互的代码,例如:一个页面可以决定用户将要跳转的下一个页面....
发表于 2020-05-12 09:21 218次阅读
基于MVC设计模式实现可扩展web应用架构的设计

如何用SNMPv3开发一个应用程序

嘿,伙计们,我正在试着用SNMPv3开发一个应用程序,但是我不确定如何根据用户名来控制对某些变量的访问。我找不到...
发表于 2020-05-12 08:32 11次阅读
如何用SNMPv3开发一个应用程序

求嵌入式Linux系统开发技术

嵌入式,其实就是ARM+Linux,重点其实是嵌入式操作系统,建议先从单片机做起,了解GPIO、定时器啥的,理解怎...
发表于 2020-05-12 00:59 55次阅读
求嵌入式Linux系统开发技术

康佳特推出耐用的四核模块conga-TR4

高性能嵌入式计算产品的领先供应商—德国康佳特,推出新款COMExpressType6模块conga-....
发表于 2020-05-11 16:49 69次阅读
康佳特推出耐用的四核模块conga-TR4

嵌入式C语言阶段性总结

[table] [tr][td]嵌入式C语言阶段性总结 最近做完了聊天室的项目,C语言基础的学习阶段也算是告一段落了,但我对C...
发表于 2020-05-11 14:40 402次阅读
嵌入式C语言阶段性总结

采用Kalman滤波处理和ARM7微处理器实现靶...

靶机飞控系统由传感器、飞控计算机和执行机构3个部分组成。传感器主要包括垂直陀螺、两轴角速率陀螺、三轴....
发表于 2020-05-11 09:46 112次阅读
采用Kalman滤波处理和ARM7微处理器实现靶...

Linux内核源码之我见——内核源码的分析方法

一、内核源码之我见 Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的...
发表于 2020-05-11 07:00 848次阅读
Linux内核源码之我见——内核源码的分析方法

嵌入式Linux引导以及U-Boot移植深度分析

引言:本文简明扼要的介绍了嵌入式Linux的引导过程,X86体系的引导过程以及几种常见嵌入式处理器的....
发表于 2020-05-11 06:54 313次阅读
嵌入式Linux引导以及U-Boot移植深度分析

UCOS系统与裸机的中断相比有什么不同的?

如题, 最近在看ucos,看的一知半解,然后我就有个问题,裸机的时候我们可以用中断来控制任务定时切换,在ucos是采用抢...
发表于 2020-05-11 01:40 225次阅读
UCOS系统与裸机的中断相比有什么不同的?

嵌入式基础知识分享

---学习单片机开发、嵌入式开发!今天就开始行动,明天将领先他人!最近经常有用人单位来我们实训学院,现场招聘单片机...
发表于 2020-05-11 01:23 40次阅读
嵌入式基础知识分享

基于SAFERTOS功能安全系统的隔离方案

在嵌入式实时系统中,很难实现真正的时间分离,因为根据嵌入式实时系统的定义,对事件的及时响应是至关重要....
发表于 2020-05-10 17:39 280次阅读
基于SAFERTOS功能安全系统的隔离方案

STM32学习笔记:编码器接口模式及应用

Ⅰ 关于编码器 编码器的种类有很多,什么增量式编码器、绝对值编码器,有轴或者无轴编码器,电压输出、推拉输出、集电...
发表于 2020-05-10 07:00 1013次阅读
STM32学习笔记:编码器接口模式及应用

深入linux内核架构 Linux内核架构分析解...

概述 通常地,Linux操作系统如下图所示,由四大子系统组成: 用户应用层: 特定Linux系统上使....
发表于 2020-05-09 11:52 666次阅读
深入linux内核架构 Linux内核架构分析解...

未来智能移动的增长将高度依赖于嵌入式传感器

移动即服务(MaaS)被认为是智能移动的一个关键要素,而机器人汽车技术将是智能移动的一个重要因素,它....
发表于 2020-05-09 10:28 158次阅读
未来智能移动的增长将高度依赖于嵌入式传感器

基于SOPC技术与NIOS II软核处理器实现嵌...

随着科学技术的发展,指纹识别已经成为目前最为实用、应用最为广泛的生物识别技术,尤其在民用生物识别技术....
发表于 2020-05-09 09:24 205次阅读
基于SOPC技术与NIOS II软核处理器实现嵌...

谷歌开源Pigweed用来提升嵌入式的开发效率

谷歌于1月下旬曾向 USPTO(美国专利及商标局)递交了名为 “Pigweed” 的新商标申请。根据....
发表于 2020-05-08 10:36 108次阅读
谷歌开源Pigweed用来提升嵌入式的开发效率

什么是伺服放大器,它的作用原理分析

单相伺服放大器(简称放大器),与各种角行程、直行程、多转式单相电动执行机构(电动执行器)配套,广泛用....
发表于 2020-05-07 10:40 149次阅读
什么是伺服放大器,它的作用原理分析

UML软件分析与建模技术在嵌入式指纹门禁系统中的...

作为面向对象建模技术的标准,UML适合于将复杂的系统设计问题简单化.它采用面向对象图形的方式对系统进....
发表于 2020-05-07 09:38 234次阅读
UML软件分析与建模技术在嵌入式指纹门禁系统中的...

开发者福利!百问I.MX6ULL裸机文档发布

本文档由20多个特聘高手精心撰写而成,近30个实验,100多个程序,韦东山老师花了20天亲自审核,修....
发表于 2020-05-07 09:35 76次阅读
开发者福利!百问I.MX6ULL裸机文档发布

Stripe改进引擎,已实现对全球卡网络的支持

近日,Stripe Inc.在宣布筹集6亿美元的新风险投资近两周后,在其服务阵容中增加了一系列新功能....
发表于 2020-05-06 17:21 550次阅读
Stripe改进引擎,已实现对全球卡网络的支持

嵌入式与PC式的NVR怎么选,实用六大技巧

主流独立的NVR支持多路通路视频,例如2、4、8、16、32、64或128通道。建立在服务器架构中的....
发表于 2020-05-04 10:29 74次阅读
嵌入式与PC式的NVR怎么选,实用六大技巧

使用层次型有限状态机对售货机控制器实现改造设计

有限状态机是一种具有离散输入输出系统的模型,在任何时刻都处于一个特定的状态。对于事件驱动的程序设计,....
发表于 2020-05-03 17:49 259次阅读
使用层次型有限状态机对售货机控制器实现改造设计

基于PC及和PIC16F877芯片实现情感表情机...

十多年前“诡异谷”的理论制约了类人机器人的发展,但随着科技的发展,人们再次把关注的眼光投向了“更像人....
发表于 2020-05-03 11:25 88次阅读
基于PC及和PIC16F877芯片实现情感表情机...

基于Nios II嵌入式处理器和FPGA实现电机...

作为机器人执行机构的伺服系统,其伺服性能和工作的可靠性对机器人的整体工作性能起着决定性的作用;但是传....
发表于 2020-05-03 11:24 98次阅读
基于Nios II嵌入式处理器和FPGA实现电机...

基于KW9328和SE303红外传感器实现嵌入式...

嵌入式红外信息检测与无线传输控制系统,由信息采集与编码发射装置、信息接收与控制装置两大部分组成。信息....
发表于 2020-05-03 10:47 242次阅读
基于KW9328和SE303红外传感器实现嵌入式...

基于数字信号控制器TMS320F2812芯片实现...

本嵌入式数字频率计的硬件电路主要包含4个部分:4通道整形电路模块,TMS320F2812数字信号处理....
发表于 2020-05-03 10:25 270次阅读
基于数字信号控制器TMS320F2812芯片实现...

stm32系列简介与stm32 esp32性能比...

STM32应该是比较熟悉的一个系列的单片机,而ESP32相对陌生一些。但是从名字看,两者应该都是32....
发表于 2020-05-02 11:26 2867次阅读
stm32系列简介与stm32 esp32性能比...

Google Maps替代服务,HERE WeG...

在无法使用谷歌移动服务(GMS)之后,华为一直在通过其App Gallery来扩展其终端设备上的应用....
发表于 2020-04-30 15:10 539次阅读
Google Maps替代服务,HERE WeG...

Q1季度互联网企业业务收入2153亿元,同比增长...

4月29日,工信部发布2020年一季度互联网和相关服务业运行情况。一季度,互联网和相关服务业呈稳中有....
发表于 2020-04-30 14:27 326次阅读
Q1季度互联网企业业务收入2153亿元,同比增长...

采用嵌入式WEB服务器技术实现铁路分布式监控管理...

在铁路系统内部推行远程网络视频监控系统,将能极大的解决上述矛盾。远程网络视频监控系统采用嵌入式WEB....
发表于 2020-04-30 09:13 198次阅读
采用嵌入式WEB服务器技术实现铁路分布式监控管理...

详解蓝牙空中升级(BLE OTA)原理与步骤

后台式DFU,又称静默式DFU(Silent DFU),在升级的时候,新固件在后台悄悄下载,即新固件....
发表于 2020-04-29 14:41 836次阅读
详解蓝牙空中升级(BLE OTA)原理与步骤

基于S3C4480的μC/GUI操作系统实现嵌入...

模糊自整定PID是在PID算法的基础上,通过计算当前系统误差e和误差变化ec,利用模糊规则进行模糊推....
发表于 2020-04-29 09:45 164次阅读
基于S3C4480的μC/GUI操作系统实现嵌入...

赢创推出3D软件工具,跨界进军3D打印

特种化学品公司赢创工业集团推出旗下首款3D打印软件。通过分析零部件的几何设计、材料和造价成本,该软件....
发表于 2020-04-28 15:00 744次阅读
赢创推出3D软件工具,跨界进军3D打印

微分段为什么要用在物联网上

如果将微分段作为物联网安全策略的一部分进行部署,则可以对网络进行更精细的控制,并在出现安全漏洞的情况....
发表于 2020-04-28 08:52 79次阅读
微分段为什么要用在物联网上

基于Buildroot的Linux系统构建技巧经...

导读: 嵌入式Linux开发大体上可以分为三个部分BSP开发、系统集成、应用开发,一般公司开发会有不....
发表于 2020-04-27 17:24 837次阅读
基于Buildroot的Linux系统构建技巧经...

新的蓝牙5功能以及它们如何使第二代信标具有更完整...

iBeacon的最早应用专注于零售购物体验。遍布整个商店的信标允许相关应用程序根据用户的购买历史和在....
发表于 2020-04-27 16:07 437次阅读
新的蓝牙5功能以及它们如何使第二代信标具有更完整...

通过智能应用程序来提高气候变化预测的准确性

NUI戈尔韦气候与空气污染研究中心(C-CAPS)发表的新研究照亮了云对气候变化的影响。这项研究对以....
发表于 2020-04-27 16:06 400次阅读
通过智能应用程序来提高气候变化预测的准确性

边缘计算的四大挑战该怎样去应对

边缘计算用例范围很广,它的早期部署是高度定制的。基础设施和运营领导者需要制定一个多年的边缘计算战略,....
发表于 2020-04-27 10:36 53次阅读
边缘计算的四大挑战该怎样去应对

利用多个独立LED实现嵌入式渐进调光功能

利用两个或更多的独立LED,当今的驱动器能够控制可用于便携系统中的新潮装饰光。不仅ILED峰值电流完....
发表于 2020-04-27 09:39 277次阅读
利用多个独立LED实现嵌入式渐进调光功能

Node.js的九大后端框架你都知道吗

Nest 是一个用于构建高效,可扩展的 Node.js 服务器端应用程序的框架。
发表于 2020-04-26 17:40 189次阅读
Node.js的九大后端框架你都知道吗

您如何看待即将到来的Google Maps变化?

体验的总体布局也有变化。无论是驾驶,导航,探索还是使用公交,您都将获得一种新的,更清洁,更智能的方法....
发表于 2020-04-26 15:37 481次阅读
您如何看待即将到来的Google Maps变化?

Operas“无限” VPN服务现已推出Andr...

除了IP欺骗外,Opera的VPN还随附Wi-Fi测试工具。该工具试图通过扫描当前使用的网络来使您的....
发表于 2020-04-26 15:28 485次阅读
Operas“无限” VPN服务现已推出Andr...

Twitter更新了其Android应用程序

新更新将于今天推出,因此请留意Google Play商店。随着Twitter一直在与Twitter ....
发表于 2020-04-26 15:27 453次阅读
Twitter更新了其Android应用程序

谷歌发布远程安全访问零信任方案,向员工提供内网的...

近日,谷歌宣布完成其内部使用的远程安全访问零信任方案BeyondCorp的产品化,并在谷歌云服务上发....
发表于 2020-04-26 14:44 835次阅读
谷歌发布远程安全访问零信任方案,向员工提供内网的...

移动医疗应用程序存在着前所未有的隐私风险

移动医疗应用程序是一个针对患者和医疗专业人员的蓬勃发展的市场。与药物相关的应用程序可帮助患者追踪处方....
发表于 2020-04-26 14:31 791次阅读
移动医疗应用程序存在着前所未有的隐私风险

监控模式之中,PC与嵌入式NVR的性能对比

如今的视频监控行业正处于一个转变模式中,随着互联网普及使得IP监控摄像机需求不断增多。
发表于 2020-04-26 10:50 100次阅读
监控模式之中,PC与嵌入式NVR的性能对比

基于嵌入式操作系统实现HIRFL_CSR多层分布...

兰州重离子加速器冷却存储环工程(HIRFL_CSR) 控制系统是一个由CSR 电源系统、注入引出系统....
发表于 2020-04-26 09:17 158次阅读
基于嵌入式操作系统实现HIRFL_CSR多层分布...