1.EMQX-简介、用电源码用电源码安装部署、信息系统信息系统基础功能、采集采集python代码测试
2.计算机应用基础(第3版)的用电源码用电源码课后练习答案
3.带你读脑电信号(EEG)源码(1)-ANN
4.什么是PSOS
EMQX-简介、安装部署、信息系统信息系统基础功能、采集采集公益理财竞猜源码python代码测试
MQTT属于是用电源码用电源码物联网的通信协议,在MQTT协议中有两大角色:客户端(发布者/订阅者),信息系统信息系统服务端(Mqtt broker);针对客户端和服务端需要有遵循该协议的采集采集的具体实现,EMQ/EMQX就是用电源码用电源码MQTT Broker的一种实现。
EMQX是信息系统信息系统基于 Erlang/OTP 平台开发的 MQTT 消息服务器,是采集采集开源社区中最流行的 MQTT 消息服务器。EMQ X 是用电源码用电源码开源百万级分布式 MQTT 消息服务器(MQTT Messaging Broker),用于支持各种接入标准 MQTT协议的信息系统信息系统设备,实现从设备端到服务器端的采集采集消息传递,以及从服务器端到设备端的设备控制消息转发。从而实现物联网设备的数据采集,和对设备的操作和控制。
到目前为止,比较流行的 MQTT Broker 有几个:使用 C 语言实现的 MQTT Broker,使用 Erlang 语言开发的 MQTT Broker,使用 Node.JS 开发的 MQTT Broker,同样使用 Erlang 开发的 MQTT Broker。从支持 MQTT5.0、稳定性、扩展性、集群能力等方面考虑,EMQX 的表现应该是最好的。
与别的MQTT服务器相比EMQ X 主要有以下的特点:经过+版本的迭代,EMQ X 目前为开源社区中最流行的 MQTT 消息中间件,在各种客户严格的生产环境上经受了严苛的考验;支持丰富的物联网协议,包括 MQTT、MQTT-SN、CoAP、 LwM2M、LoRaWAN 和 WebSocket等;优化的架构设计,支持超大规模的设备连接。企业版单机能支持百万的 MQTT 连接;集群能支持千万级别的 MQTT 连接;易于安装和使用;灵活的扩展性,支持企业的一些定制场景;中国本地的技术支持服务,通过微信、QQ等线上渠道快速响应客户需求;基于 Apache 2.0 协议许可,ipeye源码完全开源。EMQ X 的代码都放在 Github 中,用户可以查看所有源代码;EMQ X 3.0 支持 MQTT 5.0 协议,是开源社区中第一个支持 5.0协议规范的消息服务器,并且完全兼容 MQTT V3.1 和 V3.1.1 协议。除了 MQTT 协议之外,EMQ X 还支持别的一些物联网协议;单机支持百万连接,集群支持千万级连接;毫秒级消息转发。EMQ X 中应用了多种技术以实现上述功能;利用 Erlang/OTP 平台的软实时、高并发和容错(电信领域久经考验的语言);全异步架构;连接、会话、路由、集群的分层设计;消息平面和控制平面的分离等;扩展模块和插件,EMQ X 提供了灵活的扩展机制,可以实现私有协议、认证鉴权、数据持久化、桥接发和管理控制台等的扩展;桥接:EMQ X 可以跟别的消息系统进行对接,比如 EMQ X Enterprise 版本中可以支持将消息转发到 Kafka、RabbitMQ 或者别的 EMQ 节点等;共享订阅:共享订阅支持通过负载均衡的方式在多个订阅者之间来分发 MQTT 消息。比如针对物联网等 数据采集场景,会有比较多的设备在发送数据,通过共享订阅的方式可以在订阅端设置多个订阅者来实现这几个订阅者之间的工作负载均衡。
典型的物联网平台包括设备硬件、数据采集、数据存储、分析、Web / 移动应用等。EMQX 位于数据采集这一层,分别与硬件和数据存储、分析进行交互,是物联网平台的核心:前端的硬件通过 MQTT 协议与位于数据采集层的 EMQX 交互,通过 EMQX 将数据采集后,通过 EMQX 提供的数据接口,将数据保存到后台的持久化平台中(各种关系型数据库和 NOSQL 数据库),或者流式数据处理框架等,上层应用通过这些数据分析后得到的结果呈现给最终用户。
EMQX 公司主要提供三个产品,可在官网首页产品导航查看每一种产品;主要体现在支持的连接数量、产品功能和商业服务等方面的archlinux源码区别。
完整的 MQTT V3.1/V3.1.1 及 V5.0 协议规范支持;QoS0, QoS1, QoS2 消息支持;持久会话与离线消息支持;Retained 消息支持;Last Will 消息支持;TCP/SSL 连接支持;MQTT/WebSocket/SSL 支持;HTTP 消息发布接口支持;$SYS/# 系统主题支持;客户端在线状态查询与订阅支持;客户端 ID 或 IP 地址认证支持;用户名密码认证支持;LDAP 认证;Redis、MySQL、PostgreSQL、MongoDB、HTTP 认证集成;浏览器 Cookie 认证;基于客户端 ID、IP 地址、用户名的访问控制 (ACL);多服务器节点集群 (Cluster);支持 manual、mcast、dns、etcd、k8s 等多种集群发现方式;网络分区自动愈合;消息速率限制;连接速率限制;按分区配置节点;多服务器节点桥接 (Bridge);MQTT Broker 桥接支持;Stomp 协议支持;MQTT-SN 协议支持;CoAP 协议支持;Stomp/SockJS 支持;延时 Publish ($delay/topic);Flapping 检测;黑名单支持;共享订阅 ($share/:group/topic);TLS/PSK 支持;规则引擎;空动作 (调试);消息重新发布;桥接数据到 MQTT Broker;检查 (调试);发送数据到 Web 服务。
EMQ X 目前支持的操作系统:Centos6、Centos7、OpenSUSE tumbleweed、Debian 8、Debian 9、Debian 、Ubuntu .、Ubuntu .、Ubuntu .、macOS .、macOS .、macOS .、Windows Server 。产品部署建议 Linux 服务器,不推荐 Windows 服务器。安装的方式有很多种,可供自由选择:Shell脚本安装、包管理器安装、二进制包安装、ZIP压缩包安装、Homebrew安装、Docker运行安装、Helm安装、源码编译安装。
Dashboard界面查看基本信息。
身份认证是大多数应用的重要组成部分,MQTT 协议支持用户名密码认证,启用身份认证能有效阻止非法客户端的连接。EMQ X 中的PUB源码认证指的是当一个客户端连接到 EMQ X 的时候,通过服务器端的配置来控制客户端连接服务器的权限。EMQ X 的认证支持包括两个层面:MQTT 协议本身在 CONNECT 报文中指定用户名和密码,EMQ X 以插件形式支持基于 Username、ClientID、HTTP、JWT、LDAP 及各类数据库如 MongoDB、MySQL、PostgreSQL、Redis 等多种形式的认证;在传输层上,TLS 可以保证使用客户端证书的客户端到服务器的身份验证,并确保服务器向客户端验证服务器证书。也支持基于 PSK 的 TLS/DTLS 认证。
EMQ X 支持使用内置数据源(文件、内置数据库)、JWT、外部主流数据库和自定义 HTTP API 作为身份认证数据源。连接数据源、进行认证逻辑通过插件实现的,每个插件对应一种认证方式,使用前需要启用相应的插件。客户端连接时插件通过检查其 username/clientid 和 password 是否与指定数据源的信息一致来实现对客户端的身份认证。(v5.0以上默认集成)EMQ X 支持的认证方式:内置数据源、外部数据库、其他。认证结果:认证成功、认证失败、忽略认证(ignore)。
EMQ X 默认配置中启用了匿名认证,任何客户端都能接入 EMQ X。没有启用认证插件或认证插件没有显式允许/拒绝(ignore)连接请求时,EMQ X 将根据匿名认证启用情况决定是否允许客户端连接。
可以订阅多个主题。
安装 paho-mqtt:导入 Paho MQTT 客户端。
通过TCP连接:设置 broker、port、topic、client_id,连接 MQTT Broker。
通过SSL/TLS连接:设置 broker、叉叉 源码port、topic、client_id,连接 MQTT Broker,使用 CA certificate,设置用户名密码。
订阅主题:设置 on_message 回调函数,当收到消息时执行。
取消订阅:通过以下代码取消订阅,此时应指定取消订阅的主题。
发布消息:通过以下代码发布消息,设置消息内容、主题,调用 publish 方法。
接收消息:通过以下代码指定客户端对消息事件进行监听,并在收到消息后执行回调函数,将接收到的消息及其主题打印到控制台。
断开连接:如客户端希望主动断开连接,可以通过如下代码实现。
完整代码:导入 random、time、paho.mqtt.client as mqtt_client,设置 broker、port、topic、client_id,连接 MQTT Broker,设置 on_connect 回调函数,设置 publish 回调函数,运行客户端。
计算机应用基础(第3版)的课后练习答案
第一章填空:
计算机的发展趋势:巨型化 微型化 网络化 智能化 多媒体化
阶段:电子管计算机 晶体计算机 集成电路计算机 大规模计算机
用途:巨型机 大型机 小型机 工作站 微型机
特点:快速运算 计算精度高 存储功能强 逻辑判断能力 自动运行程序
硬件设备:CPU 总线系统 内存储器 外存储器 输入 输出设备
编码:国标码 内码 外码 汉字字形码
选择:
1-6 C D B D A C
判断:
XXVXX(X错V对)
第二章
填空:
快捷键:WIN+D
按住:shift 按住:ctrl
Ctrl+Z
左右 上下 综合
书写顺序 取大优先 兼顾直观 能连不交,能交不连
选择:
1-6 A D B B D B
判断:
VVXXV
第三章
填空:
菜单元 工具栏 工作区 状态栏
直看正文的宽度 设定左右的界限 直行缩进位置 制表符位置
左对齐 右对齐 两端对齐
横排 竖排
亮度 对比度 灰度
选择:
1-5 A B B D C
判断:
XVVV
第四章
填空:
输入数据 编辑数据 设置数据格式 排序数据 筛选数据
列宽 标准列宽
单元格格式
等于 参数
图表对象
选择:
1-6 A B A C C A
判断:
XVVXVV
第五章
填空:
远程中断联机 计算机网络 计算机网络互联
服务器模式 对等模式
环形网 星型网 总线网 混合型
TCP/IP协议 IPX/SPX协议 NetBEUI协议 AppleTalk协议
A类B类C类
选择:
CADCD
判断:
XXVV
第六章
选择:D B A C A A
第八章
填空:
多媒体硬件 软件
多媒体立机 多媒体输入设备 多媒体存储设备 多媒体输出设备 功能键 操控控动设备 信息采集 信息回收
熵编码 信息源码
选择:
B B A
判断:
VXV
《计算机应用基础》(第3版)一书是为高等院校的计算机基础课教学而编写的教材,内容包括:计算机信息技术基础知识,Windows XP的基本操作、资源管理、环境设置和常用附件使用,办公软件Word XP、Excel XP和PowerPoint XP的操作使用, Internet基础知识及Internet应用,用FrontPage XP制作网页,压缩工具、系统优化工具、图像工具、下载工具和杀毒工具等常用工具软件。
本书知识面广,内容丰富,并配《计算机应用基础(第二版)实训指导》和课件光盘。本书可作技术应用型本科教材,也可作高职高专教材。各院校在使用时可根据具体情况对教材中的内容进行取舍。
作者:刘刚
出版社:上海交通大学出版社
出版时间:年月
带你读脑电信号(EEG)源码(1)-ANN
搭建环境是第一步,包括安装包、源码和数据集。在运行程序前,确保环境平台与所需版本匹配,若遇安装问题,可随时寻求帮助。使用支持Python的编辑器,如免费且简洁的VSCode。
Python版本选择上,3.7.9版本较为适合机器学习相关应用,尽管最新版本可能达到3.9.6,但库的更新速度并不总能跟上语言版本的更新。库管理器方面,推荐使用默认的pip,方便管理和更新。
常用机器学习库包括但不限于Numpy、Pandas、Scikit-learn等,它们在数据处理、特征提取、模型构建等方面发挥关键作用。确保安装的库版本一致,按指定版本安装,以避免兼容性问题。
项目聚焦于脑计算机接口(BCI)研究,旨在通过解码大脑EEG信号实现有效的机器人控制,从而发展出脑机器人接口(BRI)。BCI旨在通过准确分类用户行动或认知想法,提升自由度控制。头皮采集的EEG信号经过预处理,去噪以产生高质量数据。时间-频率分析技术用于从EEG信号中提取关键特征。
人工神经网络(ANN)作为分类器,学习脑电信号特征,以实现精确输出分类。此工作对系统准确性的性能进行了全面评估,强调了结合时间-频率分析和ANN算法的重要性,分别用于脑电图特征提取与分类。
项目使用BCI运动数据集作为训练数据,ANN算法作为核心分类技术,最终准确率达到%。个人数据集、源码和运行过程的详细信息可进一步探讨和分享。
什么是PSOS
pSOS系统结构
pSOS是一个由标准软组件组成的,可剪裁的实时操作系统。其系统结构如图2.1所示
,它分为内核层、系统服务层、用户层。
1. 内核层
pSOS内核负责任务的管理与调度、任务间通信、内存管理、实时时钟管理、中断服
务;可以动态生成或删除任务、内存区、消息队列、信号灯等系统对象;实现了基于优
先级的、选择可抢占的任务调度算法,并提供了可选的时间片轮转调度。pSOS Kernel还
提供了任务建间通信机制及同步、互斥手段,如消息、信号灯、事件、异步信号等。
pSOS操作系统在Kernel层中将与具体硬件有关的操作放在一个模块中,对系统服务层
以上屏蔽了具体的硬件特性,从而使得pSOS很方便地从支持Intel x系列转到支持MC
XXX系列,并且在系统服务层上对不同应用系统不同用户提供标准的软组件如PNA+、
PHILE+等。
2. 系统服务层
pSOS系统服务层包括PNA+、PRPC+、PHILE+等组件。PNA+实现了完整的基于流的TCP
/IP协议集,并具有良好的实时性能,网络组件内中断屏蔽时间不大于内核模块中断屏蔽时
间。PRPC+提供了远程调用库,支持用户建立一个分布式应用系统。PHILE+提供了文件系
统管理和对块存储设备的管理。PREPC+提供了标准的C、C++库,支持用户使用C、C++语言
编写应用程序。
由于pSOS内核屏蔽了具体的硬件特性,因此,pSOS系统服务层的软组件是标准的、与
硬件无关的。这意味着pSOS各种版本,无论是对X系列还是MCXXX系列,其系统服务
层各组件是标准的、同一的,这减少了软件维护工作,增强了软件可移植性。
每个软组件都包含一系列的系统调用。对用户而言,这些系统调用就象一个个可重入
的C函数,然而它们却是用户进入pSOS内核的唯一手段。
3. 用户层
用户指的是用户编写的应用程序,它们是以任务的形式出现的。任务通过发系统调
用而进入pSOS内核,并为pSOS内核所管理和调度。
pSOS为用户还提供了一个集成式的开发环境(IDE)。pSOS_IDE可驻留于UNIX或DOS
环境下,它包括C和C++优化编译器、CPU和pSOS模拟仿真和DEBUG功能。
pSOS内核机制
§3.1 几个基本概念
3.1.1 任务
在实时操作系统中,任务是参与资源竞争(如CPU、Memory、I/O devices等)
的基本单位。pSOS为每个任务构造了一个虚拟的、隔离的环境,从而在概念上,一个任务
与另一个任务之间可以相互并行、独立地执行。任务与任务之间的切换、任务之间的通
信都是通过发系统调用(在有些情况下是通过ISR)进入pSOS Kernel,由pSOS Kernel完
成的。
pSOS系统中任务包括系统任务和用户任务两类。关于用户任务的划分并没有一个固
定的法则,但很明显,划分太多将导致任务间的切换过于频繁,系统开销太大,划分太少又
会导致实时性和并行性下降,从而影响系统的效率。一般说来,功能模块A与功能模块B是
分开为两个任务还是合为一个任务可以从是否具有时间相关性、优先性、逻辑特性和功
能耦合等几个方面考虑。
3.1.2 优先级
每个任务都有一个优先级。pSOS系统支持0~级优先级,0级最低,级最高。0级
专为IDLE任务所有,~级为系统所用。在运行时,任务(包括系统任务)的优先级
可以通过t_setpri系统调用改变。
3.1.3 任务状态
pSOS下任务具有三种可能状态并处于这三个状态之一。只有通过任务本身或其他任
务、ISR对pSOS内核所作的系统调用才能改变任务状态。从宏观角度看,一个多任务应用
通过一系列到pSOS的系统调用迫使pSOS内核改变受影响任务而从运行一个任务到运行另
一任务向前发展的。
对于pSOS kernel,任务在创建前或被删除后是不存在的。被创建的任务在能够运行
前必须被启动。一旦启动后,一个任务通常处于下面三个状态之一:
①Executing (Ready)就绪
②Running运行
③Blocked阻塞
就绪任务是未被阻塞可运行的,只等待高优先级任务释放CPU的任务。由于一个任务
只能由正运行的任务通过调用来被启动,而且任何时刻只能有一个正在运行的任务,所
以新任务总是从就绪态开始。
运行态任务是正在使用CPU的就绪任务, 系统只能有一个running任务。一般runni
ng任务是所有就绪任务中优先级最高的,但也有例外。
任务是由自身特定活动而变为阻塞的,通常是系统调用引起调用任务进入等待状态
的。所以任务不可能从ready态到blocked态,因为只有运行任务才能执行系统调用。
3.1.4 任务控制块
任务控制块TCB是pSOS内核建立并维护的一个系统数据结构,它包含了pSOS Kernel调
度与管理任务所需的一切信息,如任务名、优先级、剩余时间片数、当前寄存器状态等。
在有的RTOS中,任务的状态与任务TCB所处的队列是等同的。pSOS操作系统将二者分
为两个概念,例如任务处于阻塞状态,但它的TCB却处于消息等待队列、信号灯等待队列、
内存等待队列、超时队列之一。
pSOS启动时,将根据Configuration Table中的参数kc_ntask建立一个包含kc_ntask
个TCB块的TCB池,它表示最大并行任务数。在创建一个任务时,分配一个TCB给该任务,在
撤销一个任务时,该TCB将被收回。
3.1.5 对象、对象名及ID号
pSOS Kernel是一个面向对象的操作系统内核,pSOS系统中对象包括任务、memory
regions、memory partitions、消息队列和信号灯。
对象名由用户定义(4位ASCII字符),并且在该对象创建时作为系统调用obj_CREAT
E
的一个人口参数传给pSOS Kernel。pSOS Kernel反过来赋予该对象一个唯一的位ID号
。除obj_CREATE和obj_IDENT外,所有涉及对象的系统调用都要用到对象ID号。
创建对象的任务通过obj_CREATE就已经知道了该对象的ID号,其余任务可通过obj_
IDENT或通过全局变量(如果已经为该任务的ID号建立了一个全局变量的话)获取该对象
的ID号。对象ID号隐含了该对象控制块(如TCB、QCB)的位置信息,这一位置信息被pSO
S
Kernel用于对该对象的管理和操作,如挂起/解挂一个任务、删除一个消息队列等。
3.1.6 任务模式字Mode word.
每个任务带有一个mode word,用来改变调度决策或执行环境。主要有以下四个参
数
Preemption Enabled/Disabled.
Roundrobin Enabled/Disabled
Interupts Enabled/Disabled.
ASR Enabled/Disabled: 每个任务有一个通过as-catoh建立起来的异步信号服务例
程ASR。异步信号类似于软件中断。当ASR位为1时as-catch所指向的任务将会被改变执行
路径,先执行ASR,再返回原执行点。
§3.2 任务调度
3.2.1 影响动态调度效果的两个因素
pSOS采用优先级+时间片的调度方式。有两个因素将影响动态调度的效果:一是优先
级可变(通过t_setpri系统调用改变任务的优先级);二是任务模式字中的preemption
bit位和roundrobin bit位。preemption bit位决定不同优先级的任务是否可抢占,并和
roundrobin bit位一起决定任务的时间片轮转是否有效。
3.2.2 引起任务调度的原因及结果
pSOS系统中引起调度的原因有两条:
1. 在轮转方式下时间片到
2. pSOS系统调用引发任务调度。该系统调用可能是ISR发出的,也可能是某个任务发出的
pSOS任务调度的结果有两种:
1. 引起运行任务切换,这指的是
2. 不引起运行任务切换,这指的是
不论任务调度是否引发运行任务切换,都有可能引起一个或多个任务状态变迁。
3.2.3 运行任务的切换
一、何时切换
下面三种情况将引发运行任务切换:
1. 在时间片轮转方式下(此时任务模式字的roundrobin bit与preemption bit均为
enable),运行任务Task A的时间片用完,且Ready队列中有相同优先级的其它任务,则
Task A退出运行。
2. 在运行任务Task A的Mode word的preemption bit位为enable的前提下,若Task A发出
的某条相同调用引发一个优先级高于Task A的任务Task B从Block状态进入Reary状态,则
将Task B投入运行。
3. ISR使用I_RETURN系统调用,则ISR退出运行,pSOS Kernel选择Ready队列中优先级最高
的任务投入运行(这一任务并不一定是被ISR打断的前运行任务)。
二、如何切换
上述三类运行任务的切换,其具体的pSOS Kernel运作过程并非完全一样,但彼此之间
差别不大。为了简单起见,我们以
为例对切换过程作一简单叙述。这一过程可细分为4个步骤:
1. 任务A运行信息保存(_t_save proc far)
这一过程主要完成修改系统工作标志,保存切换点地址及运行信息、任务A栈调
整
栈
指针保存、栈切换、参数及返址入栈等一系列工作。
2.任务A入就绪队列(void t_in_chain)
这一过程将任务A的TCB块按优先级顺序插入就绪队列。
3.选择一个高优先级任务B(void t_choice( ))
按一定算法从就绪队列中选出最高优先级任务B的TCB块,并使运行指针指向它。
4.将任务B投入运行(_t_run proc far)
从系统栈切换到任务B栈,用任务B的TCB块中保存的信息恢复上次运行被打断的
地
,恢
复任务运行环境,于是任务B开始继续运行。
图3.1反映了典型任务切换过程中CPU控制权的转移、各堆栈活动生命期、任务活动
生命期等信息。图中
t1,t4为切换点 t2,t3为开/关中断
Tsch=t4-t1 // Tsch为任务切换时间
Tforbid=t3-t2 // Tforbid为中断禁止时间
它们是实时操作系统最重要的两个性能指标。