【Wio Terminal】输入/输出

news/发布时间2024/5/15 8:53:28

输入/输出

  • 一、概述
    • 1、硬件原理图
      • Terminal引脚分布及功能
      • Wio Terminal Grove端口引脚分配
  • 二、使用Wio Terminal上的Grove模拟端口
    • 1、RPI 模拟引脚
    • 2、Grove引脚配置
    • 3、示例
  • 三、使用 Wio Terminal上的Grove数字端口
    • 1、RPI 数字引脚
    • 2、Grove引脚配置
      • 将 Grove I2C 端口用作数字端口
    • 3、示例
    • 4、PWM 输出示例代码(伺服器)
    • 5、UART 串行通信
  • 四、在 Wio Terminal 上使用Grove I2C端口
    • 1、端口配置
    • 2、示例
  • 五、在 Wio Terminal 上使用 SPI
    • 1、端口配置
    • 2、软件配置
  • 六、Grove 端口
    • 1、Wio Terminal 与 Grove - TDS 传感器
      • 库安装
      • 完整代码
    • 2、Wio Terminal 配合 Grove - OLED 显示屏
      • 库安装
      • U8g2初始化
      • 完整代码
    • 3、Wio Terminal 与 Grove - 温度传感器
      • 库安装
      • 完整代码
    • 4、Wio Terminal 与 Grove - GPS 传感器
      • 库安装
      • 完整代码

一、概述

1、硬件原理图

Terminal引脚分布及功能

在这里插入图片描述
Wio Terminal的SAMD51微控制器引出了40个GPIO引脚,这与Raspberry Pi的引脚布局相同。
要使用这些引脚,只需使用上面定义的引脚名称即可!有些引脚具有多功能,因此可以通过不同的方式引用。

For more information, please check variant.h for more information

Wio Terminal Grove端口引脚分配

在这里插入图片描述
正如你所看到的,Wio Terminal上有两个可用的Grove端口。一个是默认的I2C端口,另一个是可配置的数字/模拟引脚,它也可以用于PWM输出。两个Grove端口都可以用作数字端口。

二、使用Wio Terminal上的Grove模拟端口

在这里插入图片描述
本节展示了如何在 Wio Terminal 上使用模拟输入。要在 Wio Terminal 上使用模拟引脚,您必须使用 RPI 引脚。

1、RPI 模拟引脚

树莓派引脚定义为:

  • RPI_A0 -> RPI_A8

2、Grove引脚配置

要使用 Grove 可配置 A/D 端口作为模拟端口,只需按以下方式定义:

void setup() {pinMode(A0, INPUT);
}

现在,将 Grove 传感器连接到物理引脚!

3、示例

在此示例中,使用 Grove Loudness传感器进行演示:

void setup() {Serial.begin(115200);pinMode(A0, INPUT);
}
void loop() {int loudness = analogRead(A0);Serial.print("Loudness: ");Serial.println(loudness);delay(50);
}

三、使用 Wio Terminal上的Grove数字端口

在这里插入图片描述
本节展示了如何将 Wio Terminal 上的 Grove 端口用作数字端口。您可以使用此功能轻松玩转 Grove 生态系统!

1、RPI 数字引脚

树莓派引脚定义为:

  • RPI_D0 -> RPI_D8

2、Grove引脚配置

要使用 Grove 可配置 A/D 端口作为数字端口,只需按以下方式定义:

void setup() {pinMode(D0, INPUT); //Configure UART TX as Digital port
}

将 Grove I2C 端口用作数字端口

在 Wio Terminal 上,Grove I2C 端口也可以用作数字端口:

void setup() {pinMode(PIN_WIRE_SCL, INPUT); //Defined SCL of I2C port as Digital Input

现在,将 Grove 传感器连接到物理 Grove 端口!

注意:要了解更多定义的引脚名称变体,请检查原理图和 variant.h 文件

3、示例

在此示例中,使用 Grove 按钮和 Grove LED 进行演示:

#define BUTTON D0 //Button to Grove UART Port
#define LED PIN_WIRE_SCL //LED to Grove I2C Portvoid setup() {Serial.begin(115200);pinMode(BUTTON, INPUT);pinMode(LED, OUTPUT);
}void loop() {int buttonState = digitalRead(BUTTON);Serial.print("Button State: ");Serial.println(buttonState);if (buttonState == HIGH) {digitalWrite(LED, HIGH);}else {digitalWrite(LED, LOW);}delay(50);
}

4、PWM 输出示例代码(伺服器)

在此示例中,使用 Grove 伺服器来演示 PWM 输出:

#include <Servo.h>
Servo myservo;int pos = 0;void setup() {myservo.attach(D0); //Connect servo to Grove Digital Port
}void loop() {for (pos = 0; pos <= 180; pos += 1) {// in steps of 1 degreemyservo.write(pos);delay(15);}for (pos = 180; pos >= 0; pos -= 1) {myservo.write(pos);delay(15);}
}

注意:要在 Wio Terminal 上使用 Servo 库,请包含适用于 SAMD51 功能的 Adafruit 版本。

5、UART 串行通信

在 Wio Terminal 中的 USB Serial:Serial
扩展的UART接口:Serial1

四、在 Wio Terminal 上使用Grove I2C端口

本节展示了如何在 Wio Terminal 上使用 Grove I2C 端口,你可以简单地使用这个即插即用功能与 Grove 生态系统配合使用!

1、端口配置

要使用 Wio Terminal 上的 Grove I2C 端口,只需将使用 I2C 协议的 Grove 传感器连接到 Wio Terminal 上的物理 I2C 端口即可。

注意:请记得在 Arduino IDE 中包含传感器库。有关如何安装库的更多信息,请参考此链接。

2、示例

在这个例子中,我们使用 Grove LCD 来进行演示。这是从 RGB LCD 库中取出的“HelloWorld”示例。

#include <Wire.h>
#include "rgb_lcd.h"rgb_lcd lcd;const int colorR = 255;
const int colorG = 0;
const int colorB = 0;void setup()
{// 设置 LCD 的列数和行数lcd.begin(16, 2);lcd.setRGB(colorR, colorG, colorB);// 想LCD打印一条信息lcd.print("hello, world!");delay(1000);
}void loop() 
{// 将光标设置到第1行第0列:// (注意:第1行是第2行,因为计数从0开始):lcd.setCursor(0, 1);// 打印自复位以来的秒数:lcd.print(millis()/1000);delay(100);
}

五、在 Wio Terminal 上使用 SPI

本节将演示如何在 Wio Terminal 上使用 SPI(Serial Peripheral Interface,串行外设接口)。你可以使用它来控制其他设备!

1、端口配置

在这里插入图片描述
正如你所看到的,物理 SPI 引脚如下:

  • MOSI -> GPIO 19
  • MISO -> GPIO 21
  • SCK -> GPIO 23
  • SS -> GPIO 24

2、软件配置

在 Arduino 中,所有的 SPI 引脚都是预定义的,并且你可以按照以下方式访问它们:

  • MOSI -> PIN_SPI_MOSI
  • MISO -> PIN_SPI_MISO
  • SCK -> PIN_SPI_SCK
  • SS -> PIN_SPI_SS

六、Grove 端口

本节将介绍如何使用 Wio Terminal 与 Grove 生态系统 配合使用。
借助 Grove,您能够使用更简单的连接方式快速构建原型!

1、Wio Terminal 与 Grove - TDS 传感器

使用 Grove - TDS 传感器 与 Wio Terminal 在折线图上显示实时 TDS 读数

库安装

  • 需安装LCD库与Line Charts库

完整代码

将 Grove TDS 传感器连接到 Wio Terminal 的 Grove D/A 引脚,上传代码并检查结果!

#include"seeed_line_chart.h" //include the library
TFT_eSPI tft;#define max_size 50 //maximum size of data
doubles data; //Initilising a doubles type to store data
TFT_eSprite spr = TFT_eSprite(&tft);  // Sprite #define sensorPin A0 //Analog pinint sensorValue = 0;
float tdsValue = 0;
float Voltage = 0;void setup() {pinMode(sensorPin, INPUT);tft.begin();tft.setRotation(3);spr.createSprite(TFT_HEIGHT,TFT_WIDTH);
}void loop() {spr.fillSprite(TFT_WHITE);sensorValue = analogRead(sensorPin);Voltage = sensorValue*5/1024.0; //Convert analog reading to VoltagetdsValue=(133.42*Voltage*Voltage*Voltage - 255.86*Voltage*Voltage + 857.39*Voltage)*0.5; //Convert voltage value to TDS valueif (data.size() == max_size) {data.pop();//this is used to remove the first read variable}data.push(tdsValue); //read variables and store in data//Settings for the line graph titleauto header =  text(0, 0).value("TDS Reading").align(center).valign(vcenter).width(tft.width()).thickness(3);header.height(header.font_height() * 2);header.draw(); //Header height is the twice the height of the font//Settings for the line graphauto content = line_chart(20, header.height()); //(x,y) where the line graph beginscontent.height(tft.height() - header.height() * 1.5) //actual height of the line chart.width(tft.width() - content.x() * 2) //actual width of the line chart.based_on(0.0) //Starting point of y-axis, must be a float.show_circle(true) //drawing a cirle at each point, default is on..value(data) //passing through the data to line graph.color(TFT_RED) //Setting the color for the line.draw();spr.pushSprite(0, 0);delay(50);
}

2、Wio Terminal 配合 Grove - OLED 显示屏

如果你需要一个第二屏幕与Wio Terminal配合使用,Grove - OLED Display 0.96"将是一个完美的选择。它可以用来显示图形和数据,为Wio Terminal增加更多的交互功能。

库安装

  • 在Arduino IDE中从库管理器安装U8g2库。

U8g2初始化

使用u8g2的软件I2C初始化OLED显示屏,并将SCL用作clock,SDA用作Data:

U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);

使用说明:

  • 调用 u8g2.firstPage()。
  • 开始一个 do-while 循环。
  • 在循环体中:使用常规的绘图命令绘制内容。
  • 只要 u8g2.nextPage() 返回 true,就继续循环。

如需更多信息,请访问 u8g2 的相关资源。

完整代码

将 Grove 0.96" OLED 显示屏连接到 Grove I2C 引脚并检查结果!

#include <U8g2lib.h>U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);const unsigned char WAVE[] PROGMEM = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0xFF,0x00,0x0F,0xF0,0x00,0xFC,0x03,0xFF,0xC0,0x3F,0xFC,0x00,0xFE,0x07,0xFF,0xE0,0x7F,0xFE,0x00,0x1F,0xFF,0x81,0xFF,0xF8,0x1F,0xC0,0x0F,0xFF,0x00,0xFF,0xF0,0x0F,0xC0,0x03,0xFC,0x00,0x3F,0xC0,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x7E,0x00,0x07,0xE0,0x00,0xF8,0x01,0xFF,0x80,0x1F,0xF8,0x00,0xFC,0x03,0xFF,0xC0,0x3F,0xFC,0x00,0xFF,0x0F,0xFF,0xF0,0xFF,0xFF,0x00,0x1F,0xFF,0x81,0xFF,0xF8,0x1F,0xC0,0x07,0xFE,0x00,0x7F,0xE0,0x07,0xC0,0x01,0xF8,0x00,0x1F,0x80,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0xFF,0x00,0x0F,0xF0,0x00,0xF8,0x01,0xFF,0x80,0x1F,0xF8,0x00,0xFE,0x07,0xFF,0xE0,0x7F,0xFE,0x00,0x3F,0xFF,0xC3,0xFF,0xFC,0x3F,0xC0,0x0F,0xFF,0x00,0xFF,0xF0,0x0F,0xC0,0x07,0xFE,0x00,0x7F,0xE0,0x07,0xC0,0x00,0xF0,0x00,0x0F,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x18,0x00,0x01,0x80,0x00,0xF0,0x00,0xFF,0x00,0x0F,0xF0,0x00,0xFC,0x03,0xFF,0xC0,0x3F,0xFC,0x00,0xFF,0x0F,0xFF,0xF0,0xFF,0xFF,0x00,0x1F,0xFF,0x81,0xFF,0xF8,0x1F,0xC0,0x0F,0xFF,0x00,0xFF,0xF0,0x0F,0xC0,0x03,0xFC,0x00,0x3F,0xC0,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};void setup() {u8g2.begin();
}void loop() {u8g2.firstPage();do {u8g2.setFont(u8g2_font_t0_16b_mr);u8g2.drawXBMP(40, 0, 50, 50, WAVE);u8g2.setCursor(20, 60);u8g2.print("Wio Terminal");} while (u8g2.nextPage());
}

3、Wio Terminal 与 Grove - 温度传感器

本节将介绍如何使用 Grove - 温度传感器与 Wio Terminal 配合,以显示实时的周围环境温度读数。

库安装

  • 需安装LCD库与Line Charts库

完整代码

将 Grove 温度传感器连接到 Wio Terminal 的 Grove D/A 引脚,上传代码并检查结果!

#include"seeed_line_chart.h" //include the library
#include <math.h>TFT_eSPI tft;#define max_size 50 //maximum size of data
doubles data; //Initilising a doubles type to store data
TFT_eSprite spr = TFT_eSprite(&tft);  // Sprite const int B = 4275;               // B value of the thermistor
const int R0 = 100000;            // R0 = 100k
const int pinTempSensor = A0;     // Grove - Temperature Sensor connect to A0void setup() {pinMode(pinTempSensor, INPUT);tft.begin();tft.setRotation(3);spr.createSprite(TFT_HEIGHT,TFT_WIDTH);
}void loop() {spr.fillSprite(TFT_DARKCYAN);int a = analogRead(pinTempSensor);float R = 1023.0/a-1.0;R = R0*R;float temperature = 1.0/(log(R/R0)/B+1/298.15)-273.15; // convert to temperature via datasheetif (data.size() == max_size) {data.pop();//this is used to remove the first read variable}data.push(temperature); //read variables and store in data//Settings for the line graph titleauto header =  text(0, 0).value("Temperature Reading").align(center).color(TFT_WHITE).valign(vcenter).width(tft.width()).thickness(2);header.height(header.font_height() * 2);header.draw(); //Header height is the twice the height of the font//Settings for the line graphauto content = line_chart(20, header.height()); //(x,y) where the line graph beginscontent.height(tft.height() - header.height() * 1.5) //actual height of the line chart.width(tft.width() - content.x() * 2) //actual width of the line chart.based_on(0.0) //Starting point of y-axis, must be a float.show_circle(true) //drawing a cirle at each point, default is on..y_role_color(TFT_WHITE).x_role_color(TFT_WHITE).value(data) //passing through the data to line graph.color(TFT_RED) //Setting the color for the line.draw();spr.pushSprite(0, 0);delay(50);
}

4、Wio Terminal 与 Grove - GPS 传感器

本节将介绍如何使用 Grove - GPS Sensor 与 Wio Terminal 配合,以获取实时的 GPS 信息。GPS 传感器本身输出的是 NMEA 格式的 GPS 数据,我们将使用 TinyGPSPlus 库来解析这些数据,将其转换为可读的信息。

库安装

  • 需安装TinyGPSPlus库

完整代码

将 Grove GPS 传感器连接到 Wio Terminal 的 Grove I2C 引脚(左侧),上传代码并在串行监视器(波特率:9600)中检查结果!

#include <TinyGPS++.h>
#include <wiring_private.h>static const uint32_t GPSBaud = 9600;// The TinyGPS++ object
TinyGPSPlus gps;// The serial connection to the GPS device - Left side Grove connector.
// Left side Grove connector shares pins with I2C1 of 40 pin connector.
static Uart Serial3(&sercom3, PIN_WIRE_SCL, PIN_WIRE_SDA, SERCOM_RX_PAD_1, UART_TX_PAD_0);void setup()
{Serial.begin(115200);Serial3.begin(GPSBaud);pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT);pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT);
}void loop()
{// This sketch displays information every time a new sentence is correctly encoded.while (Serial3.available() > 0)if (gps.encode(Serial3.read()))displayInfo();if (millis() > 5000 && gps.charsProcessed() < 10){Serial.println(F("No GPS detected: check wiring."));while(true);}
}void displayInfo()
{Serial.print(F("Location: ")); if (gps.location.isValid()){Serial.print(gps.location.lat(), 6);Serial.print(F(","));Serial.print(gps.location.lng(), 6);}else{Serial.print(F("INVALID"));}Serial.print(F("  Date/Time: "));if (gps.date.isValid()){Serial.print(gps.date.month());Serial.print(F("/"));Serial.print(gps.date.day());Serial.print(F("/"));Serial.print(gps.date.year());}else{Serial.print(F("INVALID"));}Serial.print(F(" "));if (gps.time.isValid()){if (gps.time.hour() < 10) Serial.print(F("0"));Serial.print(gps.time.hour());Serial.print(F(":"));if (gps.time.minute() < 10) Serial.print(F("0"));Serial.print(gps.time.minute());Serial.print(F(":"));if (gps.time.second() < 10) Serial.print(F("0"));Serial.print(gps.time.second());Serial.print(F("."));if (gps.time.centisecond() < 10) Serial.print(F("0"));Serial.print(gps.time.centisecond());}else{Serial.print(F("INVALID"));}Serial.println();
}void SERCOM3_0_Handler()
{Serial3.IrqHandler();
}
void SERCOM3_1_Handler()
{Serial3.IrqHandler();
}
void SERCOM3_2_Handler()
{Serial3.IrqHandler();
}
void SERCOM3_3_Handler()
{Serial3.IrqHandler();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.bcls.cn/oiUI/2205.shtml

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

华为笔记本原厂系统镜像恢复安装教程方法

1.安装方法有两种&#xff0c;一种是用PE安装&#xff0c;一种是华为工厂包安装&#xff08;安装完成自带F10智能还原&#xff09; 若没有原装系统文件&#xff0c;请在这里远程恢复安装&#xff1a;https://pan.baidu.com/s/166gtt2okmMmuPUL1Fo3Gpg?pwdm64f 提取码:m64f …

S-35390A计时芯片介绍及开发方案

计时芯片 S-35390A芯片是计时芯片&#xff0c;一般用来计算时间。低功耗&#xff0c;宽电压&#xff0c;受温度影响小&#xff0c;适用于很多电路。它有一个问题&#xff0c;不阻止用户设置不存在的时间&#xff0c;设置进去之后计时或者闹钟定时会出错。 规格书阅读 首先我…

并查集例题(连通块中点的数量)C++(Acwing)

代码&#xff1a; #include <iostream>using namespace std;const int N 100010;int n, m; int p[N], cnt[N];int find(int x) {if (p[x] ! x) p[x] find(p[x]);//优化return p[x]; }int main() {cin >> n >> m;for (int i 1; i < n; i ){p[i] i;cn…

公司新招了个腾讯拿38K的人,让我见识到了什么才是测试天花板

5年测试&#xff0c;应该是能达到资深测试的水准&#xff0c;即不仅能熟练地开发业务&#xff0c;而且还能熟悉项目开发&#xff0c;测试&#xff0c;调试和发布的流程&#xff0c;而且还应该能全面掌握数据库等方面的技能&#xff0c;如果技能再高些的话&#xff0c;甚至熟悉分…

力扣45. 跳跃游戏 II

Problem: 45. 跳跃游戏 II 文章目录 题目描述思路复杂度Code 题目描述 思路 Problem: 55.跳跃游戏 该题在上述的基础上&#xff0c;我们每次先求取当前可跳区间内的最远距离farthest;每当走到当前的区间胃部时&#xff08;end i&#xff09;&#xff1a;跳跃步数加一(jumps)&a…

各种手型都合适,功能高度可定制,雷柏VT9PRO mini和VT9PRO游戏鼠标上手

去年雷柏推出了一系列支持4KHz回报率的鼠标&#xff0c;有着非常敏捷的反应速度&#xff0c;在游戏中操作体验十分出色。尤其是这系列4K鼠标不仅型号丰富&#xff0c;而且对玩家的操作习惯、手型适应也很好&#xff0c;像是VT9系列就主打轻巧&#xff0c;还有专门针对小手用户的…

从故宫修建看「软件物料清单」的重要性 @安全历史01

故宫&#xff0c;这座中国传统文化的重要代表和象征性建筑已屹立近600年&#xff0c;是世界上现存规模最大、保存最为完整的木质结构古建筑之一。 故宫之所以能至今保存完好&#xff0c;除持续保护和修缮外&#xff0c;其使用的木材和砖石等材料也经过了精挑细选&#xff0c;保…

【进程创建】

目录 进程创建的方式查看进程pid 调用系统调用创建子进程fock函数做了的工作子进程刚开始创建的状态 一个变量&#xff0c;两个不同的值 进程创建的方式 1.在操作系统上输入的指令。 2.已经启动的软件。 3.程序员在代码层面上调用系统调用创建进程。 linux中第一个创建的进程是…

JAVA电商平台 免 费 搭 建 B2B2C商城系统 多用户商城系统 直播带货 新零售商城 o2o商城 电子商务 拼团商城 分销商城

涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis …

深度解析Sora的核心技术

Sora要解决的核心问题 Sora面临的挑战是将不同类型的视觉信息&#xff0c;如视频、文本、图像和声音等&#xff0c;整合为一种共同的表征形式。这种转换是实现统一训练过程的关键&#xff0c;旨在将各类数据集中到一个训练框架中&#xff0c;以便于进行大规模的统一学习。简而…

HTTPS网络通信协议基础

目录 前言&#xff1a; 1.HTTPS协议理论 1.1协议概念 1.2加密 2.两类加密 2.1对称加密 2.2非对称加密 3.引入“证书” 3.1证书概念 3.2数据证书内容 3.3数据签名 4.总结 前言&#xff1a; 了解完HTTP协议后&#xff0c;HTTPS协议是HTTP协议的升级加强版&#xff0c…

二进制方式安装MySQL并备份数据库

一、openEuler二进制方式安装MySQL 8.0.28版本 1.1 获取软件包 [rootopenEuler3 ~]# wget -c https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz 1.2 解压软件包 [rootopenEuler3 ~]# dnf install -y tar xz [rootopenEuler3 ~]# t…

SpringBoot+WebSocket实现即时通讯(二)

前言 紧接着上文《SpringBootWebSocket实现即时通讯&#xff08;一&#xff09;》 本博客姊妹篇 SpringBootWebSocket实现即时通讯&#xff08;一&#xff09;SpringBootWebSocket实现即时通讯&#xff08;二&#xff09;SpringBootWebSocket实现即时通讯&#xff08;三&…

基于python-socket构建任务服务器(基于socket发送指令创建、停止任务)

在实现ia业务服务器时需要构建一个python-socket客户端&#xff0c;1、要求能与服务器保持心跳连接&#xff0c;每10秒钟发送一次心跳信号&#xff1b;2、要求能根据socket服务器发送的指令创建或终止一个定时任务。 为此以3个类实现该功能&#xff0c;分别为socket通信类&…

【鸿蒙系统学习笔记】TypeScript开发语言

一、背景 HarmonyOS 应用的主要开发语言是 ArkTS&#xff0c;它由 TypeScript&#xff08;简称TS&#xff09;扩展而来&#xff0c;在继承TypeScript语法的基础上进行了一系列优化&#xff0c;使开发者能够以更简洁、更自然的方式开发应用。值得注意的是&#xff0c;TypeScrip…

CSS基础属性

【三】基础属性 【1】高度和宽度 &#xff08;1&#xff09;参数 width&#xff08;宽度&#xff09;&#xff1a;用于设置元素的宽度。可以使用具体的数值&#xff08;如像素值&#xff09;或百分比来指定宽度。 height&#xff08;高度&#xff09;&#xff1a;用于设置元…

深信服技术认证“SCCA-C”划重点:深信服超融合HCI

为帮助大家更加系统化地学习云计算知识&#xff0c;高效通过云计算工程师认证&#xff0c;深信服特推出“SCCA-C认证备考秘笈”&#xff0c;共十期内容。“考试重点”内容框架&#xff0c;帮助大家快速get重点知识 划重点来啦 *点击图片放大展示 深信服云计算认证&#xff08;S…

Android 沉浸式状态栏

过时的API //设置默认隐藏虚拟按键&#xff0c;虚拟按键显示后为半透明protected open fun hideNavigationBarAndFullScreen() {val flags: Int// This work only for android 4.4flags if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {// This work only for a…

用HTML5实现动画

用HTML5实现动画 要在HTML5中实现动画&#xff0c;可以使用以下几种方法&#xff1a;CSS动画、使用<canvas>元素和JavaScript来实现动画、使用JavaScript动画库。重点介绍前两种。 一、CSS动画 CSS3 动画&#xff1a;使用CSS3的动画属性和关键帧&#xff08;keyframes&…

论文阅读_用模型模拟记忆过程

英文名称: A generative model of memory construction and consolidation 中文名称: 记忆构建和巩固的生成模型 文章: https://www.nature.com/articles/s41562-023-01799-z 代码: https://github.com/ellie-as/generative-memory 作者: Eleanor Spens, Neil Burgess&#xff…
推荐文章