我是荔园微风,作为一名在IT界整整25年的老兵,最近遇到一个技术问题,就是公司同事问我,有没有什么好的硬件控制编程技术可以选,我说有啊,很多啊,比如linux嵌入式编程啊,比如纯粹的单片机C编程啦,再比如微软的硬件控制编程技术就可以啊,不但平台成熟,而且还可以和树莓派的硬件进行配合。

可是我一说到这里,我同事就迷惑了,他说微软还有硬件控制编程技术?他表示好像没有听说过。我就问他,那你觉得微软公司主要为开发人员提供哪些技术开发工具?他就举了很多例子:VC++、VSCODE、C#、ASP.NET、SQL SERVER等等。于是我就明白了他的困惑在哪里了。在他的印象中,微软所提供的技术就只能在电脑这个赛博空间中运行,是纯软件的,而这些技术和物理世界中的诸多硬件似乎没有关联。我也搜索了相关的文章,发现在各论坛,微软在硬件控制编程技术方面的内容确实很少,所以会给我同事造成这种印象。

针对我同事的困惑,我决定在我的CSDN博客写一系列文章,一起来和大家探讨一下,微软在硬件控制编程方面的技术内容。我要让大家知道,微软的技术究竟能不能控制硬件,微软的技术能不能解决物理世界中的很多客户需求,微软的技术是怎么做到这一点的。

首先,我直接给出答案:微软的技术完全可以解决各类硬件控制的需求。

那么怎么解决呢,别急,我们先来看一个实际中的例子:智慧社区。

现在很多媒体都是提未来社区,那未来社区中的一个重要内容就是智慧社区。随着人们在居住条件和环境的要求越来越高。智慧社区的需求也不断变大,根据目前的情况,主要有如下需求:

哇,需求很多啊。

那么这么多需求,对于我们的智慧社区系统设计人员来说该怎么设计呢。那我们就要提出之前比较经典的三层体系结构。我们把整个系统分成感知层、网络层、应用层。这是目前一种比较综合的实现方案。

那如果不这样实现,而是改为单独实现各个模块,又要怎么样设计呢。比如社区的安防管理,社区通过在重点监控部位安装智能摄像设备,系统能视频实时浏览、录像存储、查询回放,实时监测社区的内外环境,保障社区安全。视频监控架构如下:

比如社区的车辆管理,从拦车设备到车牌识别控制器再到云平台和移动终端APP,实现业主车牌自动识别快速通过。这种管理系统架构如下:

比如消防监控,可实时采集烟感、水压、流量、电气、火灾装置、声光报警、手动按钮等设备的参数和状态,发现异常时将报警信息及时上传。通过警情地图展示实现视频复核和及时处置,联动实施,精准通知火灾区域的人员。消防监控系统架构图如下:

比如社区的环境监测。通过安装智能空气质量检测仪和气象仪,利用云端服务器,实现社区环境监测,以及社区天气环境监测。可通过手机了解室内外环境的健康级别和天气情况。还可以进行自然灾害的智能分析,识别恶劣天气下的社区灾害风险并触发报警信号,环境监测系统架构图如下:

比如社区的能耗监测。通过对能源运行状态和参数、能源管网运行状态监测和能源设备状态实景视频监测,涵盖电、水、气、热等各类能源介质的发、配、输、供、用各环节系统和设备,利用全局能源流视图、设备上下游关系视图、地理建筑、部门关系视图等,实时监控各个关键节点的负载率、转换效率,如变压器、UPS、制冷机组、识别低效环节等,以能源流向分析为基础,建立社区用能全链路模型。在能耗监测分析基础上系统完成主要数据来源的采集和集成,从多个角度和维度对社区能效进行智能分析,能耗监测系统架构如下:

比如社区疫情防控,实现手机扫码自助登记、精准热成像测温、未戴口罩检测、居家隔离访视等功能。

最后是社区的物业服务,可包含小区人员管理、设备管理、记录查询等功能。管理部门通过呼叫中心、微应用、预警等多种渠道采集获取用户服务请求,由云服务平台完成报修管理、信息发布、租赁服务、商圈管理、缴费服务、客户管理、设备管理等任务,架构图如下:

好了,看了这么多例子,发现什么了吗?对了,几乎所有智慧社区相关的项目都需要进行硬件控制编程才能实现,仅靠软件是无法实现这些项目需求的。

控制技术的出现,模糊了物理世界和数字世界的边界,逐渐改变着人们的工作和生活方式。我们在前面每幅图中都能找出四个关键组件包括:设备和传感器、连接、数据处理、控制。近十年来,嵌人式处理器的成本下降、处理能力上升,以及无线网络和人工智能等关键技术的进步,促进了控制工程产业的发展。

我接下来几篇贴子要讲的内容涵盖了硬件控制编程的基础、设备程序编写、云端解决方案定制化等几大方面,涉及设备输入输出、音频图像处理、设备连接、机器学习、数据存储、数据可视化等众多内容。我说的这些内容主要依赖微软的技术栈。微软为硬件控制编程开发者提供了一整套从语言、工具到云端平台的一站式解决方案。跟着我的贴子,你会接触跨平台的C#、C++开发,安装和编写Windows 10 IoT应用程序,并在云端部署和运行Azure IoT套件。如果你对微软的技术栈有一定的了解,或者你有一定的硬件控制编程技术或嵌入式开发技术基础,那么对你来说很多内容会很好理解。我尽量少讲理论,多讲工程应用。

这里我们要感谢微软公司科学家们和工程师们所付出的努力,按道理来讲,我们要实现这么多的控制工程的功能,技术实在是太多了,如果让一个人在全部学完这些技术,那不知道要多少年。好在微软公司创建了Windows 10 IoT Core和Azure IoT Suite,使我们能够快速编写自定议的IoT解决方案。不然整个过程会非常的繁索。

下面我们进入正题,嵌入式设备可作为各种硬件物体的控制单元,例如智能家居、汽车引擎、机器人等。这些控制单元使用专门设计的软件与各类传感器交换数据。嵌入式设备将复杂的算法应用于传感器数据,以监测、控制和自动化特定的过程。嵌入式设备是用于自动化特定过程的专用计算系统。与通用计算机不同,它是为特定目的而设计的,一般无须键盘或显示器即可正常工作。虽然专用和通用计算机的外围设备不同,但它们的核心部件类似,包括中央处理单元(CPU或微处理器)和内存。

微处理器执行计算机程序,该程序包括从存储器中取出的指令。然后,CPU执行的过程中将控制专用硬件。嵌入式设备通常专用于控制特定硬件,其外形和加工能力是根据特殊系统量身定制的,并且嵌入式设备中不一定必须同时运行多个程序。嵌入式设备中运行的专门设计的软件称为固件(注意,固件是软件!!不是硬件!!很多人一听固件就觉得是硬件)。固件功能通常不是通用的,它只用来执行为特定硬件设计的任务。通常,固件在开发期间由制造商加载到设备中,或者说放进设备里。

存储在嵌人式设备存储器中的固件在设备打开时激活,只要设备通电就会工作。在此期间,固件使用外围设备与传感器以及输入/输出设备进行通信。这些外围设备构成嵌入式设备的固有部分与其环境之间的接口。最常见的外围设备包括:串行通信接口(SCI)、串行外设接口(SPI)、内部集成电路(I2C)、以太网、通用串行总线(USB)、通用输入/输出(GPIO)、显示串行接口(DSI)。通常嵌入式设备不需要全尺寸显示。在极端情况下,嵌入式设备甚至可以只有一个单像素显示器,由一个用作指示器的LED组成。这种LED的颜色或闪烁频率可以传达错误信息或编码监控值。

我们下面重点说说微控制器的存储器。通常情况下,嵌入式设备必须非常小并且节能。为了节省空间和资源,CPU、存储器和外设集成在一个芯片中,称为微控制器。微控制器的存储器分为两个主要部分:只读存储器(ROM)和随机存取存储器(RAM)。ROM用于存储固件,RAM用于存储由软件组件使用的变量。ROM是非易失性的,可以使用其他开发工具或编码器进行修改。一旦嵌入式设备上电,立即加载固件就需要非易失性存储器。

存储器配置类似于在其他计算机系统中使用的场景。计算机中的ROM存储特殊程序,称为基本输入/输出系统(BIOS)或统一可扩展固件接口(UEFI)。通常,BIOS在计算机打开后立即运行,同时初始化硬件并加载操作系统,然后操作系统创建进程(程序实例)及其线程。

嵌人式设备存储器还有EEPROM。写入EEPROM非常慢,其主要目的是存储设备校准参数,这些参数在断电后恢复到RAM。存储在EEPROM中的数据取决于应用和设备类型,但通常包含用于将从传感器获取的数据转换为表示物理参数(例如温度、湿度、地理定位或三维空间中的设备方向)的值的校准参数。EEPROM作为闪存的基础,用于存储卡和固态硬盘(SSD)。

所以我这里来做一个对比:

ROM

存储固件 运行时不变 读取快 非易失

RAM

存储变更 运行时可变 读取快 易失

EEPROM/FLASH

存储校准参数 运行时可变 读取慢 非易失

EEPROM存储器通常用于存储大量数据。以大集合访问数据可能很慢,尤其是对于I/O操作。因此,为了改善I/O,处理器还使用存储寄存器——可快速访问以获得少量快速存储器。寄存器对于微控制器尤其重要,因为它们控制外设。

嵌入式设备非常多非常多,而且非常隐蔽。在电力行业,嵌人式设备通过远程读取电表简化了能源使用的监控。来自控制监管驱动因素的嵌入式设备的信息可以优化配电。在汽车领域,车辆模块内的众多内部和外部传感器不断监控整个系统,来自这些传感器的数据通过外围设备传输到适当的嵌入式设备,嵌入式设备持续分析这些数据以跟踪车辆牵引力、控制发动机或显示外部温度或车辆位置等。在金融领域,嵌入式设备控制自动柜员机(ATM),使得银行客户能够自动进行金融交易。医疗检测设备也由嵌入式设备管理,这类嵌人式设备控制光束的位置以产生图像或传递疾病的信息。智能楼宇、气象站和安全设备配备了专门设计的微控制器,可从传感器或摄像机图像中获取数据;然后,经过数字信号和图像处理技术对其进行检测,以监控温度或湿度,还可检测未经授权的访问或优化资源的使用。嵌入式设备可用于人工智能系统中,自动执行人们日常的操作。嵌入式设备将数据作为输入对其进行处理,做出决策,并实现控制算法和纠正程序。它们不仅可以自动化特定流程,还可以预测。

嵌入式设备可以轻松检测出超过阈值的传感器读数,并执行预测分析甚至预防性报警,如防止食物过热、防止汽车发动机损坏。由于微芯片现在可以有效地运行非常先进的软件来实现复杂的控制和诊断算法,因此嵌入式设备可以执行过程自动化和预测分析,从而显著降低使用特定系统的风险,减少过程成本和时间,并提高效率。

当前和未来的应用不仅依赖于嵌人式设备本身,还依赖于从使用该设备获取的数据中提取有用的信息。连接智能设备带来了新的可能性,并在处理和分析大量数据方面带来了新的挑战。每个设备可以与不同的传感器集成,组合智能设备需要复杂的采集、存储和处理方法,这些方法使用共享系统上的统计模型对来自不同设备的数据进行统一和处理。

这样的集中处理单元通过暴露统一接口来执行高级分析,并将之前未被开发的数据转换成清晰、可读的报告,以便呈现、累积和过滤所获取和处理过的数据。因此,物联网通常由一个中央存储器和处理系统组成,使用户能够连接他们的设备并轻松处理,能够理解来自这些智能单元的数据。此功能由Microsoft Azure loT Suite提供。

控制工程中包括多种类型的设备和传感器,该系统使用商业智能技术进一步处理来自传感器的未开发数据,以生成清晰、可读的信息,从而简化决策制定,实现预测和预防性分析,并自动化许多业务流程。智能电网是一个通过物联网简化业务流程的实际示例。首先,机电仪表被电子仪表(嵌入式设备)取代,电子仪表不仅可以测量电能使用情况并提供更清晰的显示,还可以记录其他参数以支持时间计费或预付费电表。电子仪表大大增强了测量仪表的功能,然而,电表联网前仍然需要人工读取传感器数据,电表联网后则可以远程获得读数并将它们存储在中央处理系统中。由此产生的结果是,发电站不仅可以自动获取和处理数据,还可以计费、优化电能分配、维护网络或预测故障。

好了,举完这些例子,我们要来开始技术问题了。

那么CPU如何与外围设备交互、从传感器获取数据并与其他设备通信?从硬件的角度来看,微控制器通过物理连接器连接到外围设备,这些物理连接器的引脚会暴露在外壳上,比如微控制器引脚会和步进监控、传感器连接。其工作方式如下:

1)微控制器和外围设备之间的有线连接携带电信号,这些信号将信息位编码为物理量,例如电压或电流。

2)使用适当的模数转换器将这些物理可观测量转换为数字值。

3)在使用数模转换器将数字值发送到外设之前,将数字值转换回物理量。

通过软件访问可接收二进制数据(读操作),并知道如何将数据发送到外设(写操作)。通常,从外设接收到的信号数字表示是使用数据总线在设备之间分发的。适当的数据分发需要用到地址总线,该地址总线携带有关物理存储器中二进制数据的物理位置的信息。通常,有两种使用数据和地址总线读取和写入外设的方法——端口映射I/O和存储器映射I/O。

1)在端口映射I/O中,CPU使用单独的地址总线来寻址本地存储器和外设中的数据。有专门的读/写指令用于在微控制器和外设之间传输数据。从硬件角度来看,使用单独的地址总线可简化寻址。但是从软件的角度来看,使用端口映射I/O访问外设非常复杂,因为它不仅需要读取或写入数据到存储器寄存器,还需要适当的I/O指令与外设来接收和发送二进制数据。

2)存储器映射I/O保留RAM的某些部分用于通信,因此固件虚拟访问I/O设备的方式与访问存储器寄存器的方式相同,即使用单个地址总线。这种方法自然简化了软件的编写。但是,使用单个地址总线来控制存储器和外设会将软件复杂性转移到较低的级别,地址解码和编码需要更复杂的模式。用户可用的内存量略有减少。

寄存器是RAM的构建块, 并且根据微控制器的类型,可以是8位、16位、24位、32位或 64位。一些寄存器由微控制器的制造商定义并制造,用于在处理器和外设之间进行数据交换,从而减少用户的RAM使用量 。这种专门设计的寄存器的每一位都映射到物理I/O端口, 这些端口构成了微控制器的物理引脚。分配给特定引脚的逻辑位值由电压电平或电流强度控制, 它们定义了引脚的off(0) 和on(1) 状态。由于这些引脚映射到存储器寄存器,因此任何电压或电流变化都会自动反映到存储器寄存器中。因此,固件通过读取由其地址标识的适当存储器寄存器来访问从外围设备接收的数据,该存储器寄存器指向其在存储器中的位置。数据以相同的方式(即通过修改存储在寄存器中的值)发送回外设。该过程需要在诸如电压或电流的物理量和二进制表示之间进行转换。

嵌入式设备的软件不需要不断地从寄存器读取值以获得传感器的状态更新,而是当发生事件时自动通知固件。为此,微控制器使用了中断机制,这是每当引脚改变其物理状态时产生的信号。CPU执行中断处理程序,该处理程序是与给定中断相关联的软件功能。这允许固件对外部事件做出反应,而无须无休止地读取寄存器值。这种编程方式类似于高级应用程序编程中已知的基于事件的方法。在这种情况下,每个用户请求或操作(如按下按钮)都会生成一个事件,该事件又会运行相关的事件处理程序。此过程中实现的逻辑响应用户请求。

那么接下来,大家一定会问,嵌入式设备编程与桌面、Web和移动编程有什么相同点和不同点??

尽管嵌入式系统与桌面、Web和移动应用程序的编程有许多相似之处,例如使用相同的语言和类似的开发工具,但嵌入式设备编码需要与硬件元素直接交互,所以嵌入式设备编程与桌面、Web和移动编程仍有不同。下面从各个方面进行具体的比较。

人机界面

首先,嵌入式编程的中断和中断处理与桌面和移动编程中的事件和事件处理非常相似。但是,每种技术都使用不同的命名方法,这种命名方法与特定编程范围的内部机制匹配。在桌面和移动应用程序中,事件与用户操作相关,例如按下按钮或滚动列表。此类操作会生成一个事件,该事件可以通过事件处理程序进行处理。事件也可以由硬件或系统相关问题触发,以指示例如电池电量低、无线连接断开或外部设备的连接/断开等情况。事件处理程序可用于响应由硬件或操作系统触发的用户操作或事件。

类似地,在为移动系统(Android、iOS)或Web平台(ASP.NET)开发的“模型-视图-控制器”应用程序中,从其他应用程序或服务传人的每个用户操作或查询都被定义为请求或操作。每个请求都由请求处理程序模块处理,该模块将特定操作映射到类的适当方法,从而实现控制器。控制器解释请求,更新应用程序的状态(模型),并通过呈现视图来生成相应的响应。

因此,在所有情况下,软件响应用户请求或外部信号并处理它们,以采取适当的动作或产生相应的响应。但是,在桌面、Web和移动编程中,这些请求主要由用户生成。控制工程中断通常由与传感器相关的外部信号(电信号)产生,因此,嵌入式设备编程与生成事件的源不同于桌面、Web和移动编程。这并不意味着嵌入式设备根本不响应用户请求。控制工程设备可以配备触摸屏等输入系统,用户可以通过触摸屏配置嵌入式设备。

硬件抽象层

典型的高级编程不需要与硬件进行底层交互。由于硬件相关方面是在操作系统或硬件驱动程序中实现的,因此程序员通常不会直接访问它们。移动系统和桌面系统的内部功能基于与控制工程设备相同的概念,即CPU使用类似技术与外围设备通信。软件开发人员在软件开发任务中隐式地使用它们,例如访问硬盘驱动器上的文件,通过网络发送序列化数据,或者只是在屏幕上显示消息。

然而,传统的计算机系统是标准化的,并且使用了包含硬件抽象层的操作系统。软件的开发过程因为采用了编程框架和方便的应用程序编程接口而显著地简化了,这些框架和接口提供了大量算法实现、数据结构和执行常见操作的功能。

嵌入式设备编程类似于编写设备驱动程序,它将硬件操作映射到操作系统功能。然而,嵌入式设备软件不仅提供这样的中间层,还可以用于控制硬件单元。嵌入式设备开发意味着将硬件、驱动程序、操作系统和应用程序的角色组合到一个固件中,因此边界更加模糊。

在通用计算机系统中,硬件抽象提供了统一的层,允许用户使用任何类型的键盘、鼠标、显示器、存储器等,而不必担心它们的潜在差异。对于嵌入式设备开发,几乎可以使用任何类型的设备而无须任何中间层。

健壮性

嵌人汽车安全系统的计算设备、电子稳定程序(ESP)提供了嵌入式设备健壮性的一个良好示例。ESP通过检测牵引力的损失来控制车辆的稳定性。它分析来自各种硬件单元的数据,感知车轮的速度和加速度。预测转向不足或转向过度所需的数据的分析过程可能非常复杂,需要持续的数据处理和噪声处理。

在实际应用中,由于某些基本的物理效应,传感器读数会受到固有电子电路产生的噪声的影响。因此,传感器读数可能会随时间变化。程序员必须考虑这些噪声影响,通常是通过随时间累积读数并使用统计测量值(如均值或中值)进行处理。根据应用的不同,这种处理可能需要更先进的控制算法来过滤不正确的读数并提供稳定并且可预测的硬件单元控制。这对于安全攸关的应用尤为重要。基于这个原因,固件应该是鲁棒且无差错的,以便快速响应变化的、受噪声影响的传感器读数。

对于特定的应用程序(如ESP),物联网软件需要进行优化,以便快速响应,因为有时几毫秒的延迟可能造成非常关键的影响,而在典型的桌面、Web或移动应用程序中,这种延迟可能会被用户忽视。

资源

控制工程的设备通常非常小,以便装入它们将控制或监控的系统主体。嵌人式设备可以像硬币或信用卡一样小,这意味着与典型的计算机或智能手机相比,它们通常具有有限的存储空间和处理能力。控制嵌入式设备的软件必须小心地使用硬件资源,避免浪费内存和CPU时间。这个问题对于高级编程也很重要,但对于典型的计算机系统来说可能并不那么重要,因为典型的计算机系统配备了大量的内存和强大的处理能力。

安全

在控制工程设备上,可以通过监视物理引脚信号来访问外设和CPU之间传输的数据。示波器可以用于这种针对嵌入式设备的逆向工程中,但这需要能直接接触嵌入式设备,所以通常不太可能。另一方面,当将嵌人式设备连接到网络(尤其是无线网络)时,数据被截获的可能性会显著增加。

安全性都是一个重要问题,但连接到无线网络的控制工程设备最容易丢失数据。因此,需要使用加密算法保护通过网络传输的数据。连接的嵌入式设备会处理和收集敏感数据并控制关键硬件。可以通过采用适当的过滤以及验证和加密传输的数据来保护控制工程系统。此外,必须检查文件系统和控制工程系统的其他组件的内部一致性。

好了,说了这么半天,终于等到Windows10 loT Core隆重出场了!

Windows10 loT Core和通用Windows平台的优势分别是什么呢?对控制工程设备编程时,会发现硬件编程具体如下特点:必须使用微控制器制造商提供的开发工具、编译器链和编程环境;使用低级编程语言和工具;调试困难;缺乏模式和最佳实践;缺乏社区支持;使用跨平台库和工具进行UI开发;需要控制多种多样的传感器和硬件单元;必须从头开始编写加密算法来保护通信协议。

看到这些问题,很多人此时已想放弃了,千万别放弃,因为Windows 10 IoT Core和通用Windows平台(Universal Windows Platform,UWP)解决了这些问题。前者是Windows10中最紧凑的版本,专为控制工程需求量身定制,而后者是访问Windows10功能的API,从而简化了嵌入式编程。

UWP提供统一的API和一组编程工具,这些工具与Web、移动系统或桌面编程的工具完全相同。UWP编程工具遵循一次编写,处处运行的准则。也就是说,这种方法提供了编程工具和技术,使你能够使用单一编程语言和环境编写应用程序,然后将应用程序部署到多个设备,包括物联网、智能手机,桌面和企业服务器。通过使用相同的工具集,可以定位到其他平台。

UWP还实现了许多全面的算法和功能。包括简化对传感器的访问、执行稳定的计算、使用最少的代码编写高级功能、普适的数据查询、使用加密算法进行安全数据传输、支持许多其他控制工程应用程序和库、对信号和图像处理的支持、对人工智能算法的支持、与中央处理系统交互、统一未开发数据并将其转换为可读报告。

我们还可以使用C#来使用UWP,从而显著简化软件开发过程。UWP提供了一组UI控件,可以无缝集成到控制工程设备的软件中。这将基于本机的固件开发转变为普通应用开发。Windows 10 IoT Core以及更广泛的UWP功能我会在后面推出的帖子中继续介绍。

作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。

Microsoft微软公司硬件控制编程技术介绍相关推荐

  1. 工业机器的编程技术介绍

    一.概述 当前机器人广泛应用于焊接.装配.搬运.喷漆及打磨等领域,任务的复杂程度不断增加,而用户对产品的质量.效率的追求越来越高.在这种形式下,机器人的编程方式.编程效率和质量显得越来越重要.降低编程 ...

  2. 自动驾驶汽车硬件与软件技术介绍

    来源:知乎 概要:本文详细介绍了自动驾驶汽车的硬件和软件,以及所需要做的准备工作,每个研发者或者准备投身于无人驾驶领域的人都应该好好看一下. 全球有数不清的公司在忙着研发自动驾驶汽车,他们的产品也千奇 ...

  3. NI-DAQmx编程技术介绍笔记

    CSDN话题挑战赛第2期 参赛话题:学习笔记 学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程.这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路.学习之乐,独乐乐,不如众乐 ...

  4. 微软儿童编程技术,kodu(酷豆)为儿童创造一个游戏世界

    受微软青年星火项目组的邀请,我和微软项目组的朋友参加了一场针对儿童编程的技术指导. 儿童和编程,本来是两个完全不靠边的词.在大家的常规思维中,编程一直是软件开发人员的事情,是高科技类型的工作,高不可攀 ...

  5. 微软授权方式连载三:Windows 7激活技术介绍

    一.概述 软件保护平台 从Vista开始,Microsoft就开发了名为软件保护平台(SPP)的技术.这些技术也是Windows 7的激活技术基础,Windows 7包括激活和验证.SPP旨在帮助打击 ...

  6. web前端开发技术实验与实践(第三版)储久良编著 项目5 综合编程岗位介绍

    实训一 项目5 综合编程岗位介绍 一.页面文字素材: WEB前端开发工程师的岗位职责:(1)协助系统架构设计师进行系统架构设计工作:(2)承担WEB前端核心模块的设计.实现工作:(3)承担主要开发工作 ...

  7. WMI技术介绍和应用——查询硬件信息

    这个月实在太忙了,一直没有时间去继续写WMI的应用例子. 本来是希望将<WMI技术介绍和应用>系列博文写的像WMI百科全书般,但是貌似对这个技术感兴趣的同学并不多,所以我决定对部分知识点点 ...

  8. 开放式系统编程技术_使用开放式硬件构建更好的辅助技术

    开放式系统编程技术 对于许多人来说,技术可以帮助并改善我们的生活,使某些任务变得更容易,可以进行长距离沟通,并为我们提供了一个了解周围世界的机会. 但是,对于许多残疾人来说,技术不是辅助,而是生活独立 ...

  9. 微信游戏《全民炫舞》公司的引擎开发和布料系统技术介绍

    微信<全民炫舞>上线了. 整理了一下过去技术开发历史,还有技术ppt,有兴趣看下: 公司游戏引擎技术介绍: http://www.h3d.com.cn/hr/hr.htm 布料系统技术介绍 ...

最新文章

  1. 添加RichEdit控件导致MFC对话框程序无法执行的解决方法
  2. qemu-kvm分析
  3. C# 未来新特性:静态委托和函数指针
  4. android移动应用开发思维导图_这些地方应用思维导图就对了
  5. java决策树算法_「Smile」一下,轻松用Java玩转机器学习
  6. GAN——欧几里得空间
  7. java int stack_java中int算法的有趣现象
  8. 【GDB调试学习笔记】调试逻辑错误
  9. 山大824计算机基础,山大考研辅导班:山东大学2020年824计算机基础考研自命题科目考试大纲...
  10. SVN教程代码比较(图文教程)
  11. 实战项目-python库分析科比生涯数据
  12. aho-corasick php,Aho-Corasick自动机浅析
  13. php做seo优化,php做seo优化能力有哪些
  14. Koo叔说Shader-- 熟悉渲染管线
  15. Centos7.5系统部署禅道协调管理系统以及配置优化
  16. 微信小程序带图片弹窗简单实现
  17. 新浪天气预报代码及城市代码
  18. (选做)基于数组的工资处理系统
  19. 开发基础 练习2总结
  20. 苹果CMS插件-苹果CMS必备插件

热门文章

  1. MySQL笔试面试重点—增删改查,手把手解读
  2. 广东管理系统计算机应用实践,广东工业大学自考管理系统中计算机应用(00052)实践环节考核要求...
  3. VL15 自动贩售机2
  4. 分清概念十分重要系列之--说说人工智能中的各种学习
  5. .bin 文件用excel文件打开_CDR格式文件用什么打开
  6. 拜占庭鲁棒随机聚合的分布式学习方法
  7. python - 二叉树的最近公共祖先
  8. linux网络设备应用与驱动编程学习3——lpc3250以太网控制器
  9. 哭瞎!360云盘将关停,你的几十T照片和文件该怎么办
  10. EIS2019-EzPOP