GD32F10 串口通信
1. 什么是通信
通信,指人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递,从广义上指需要信息的双方或多方在不违背各自意愿的情况下采用任意方法,任意媒质,将信息从某方准确安全地传送到另方。通信双方如果想正确传输数据就需要约定不违背的协议。
通信在不同的环境下有不同的解释,在出现电波传递通信后通信(Communication)被单一解释为信息的传递,是指由一地向另一地进行信息的传输与交换,其目的是传输消息。
然而,通信是在人类实践过程中随着社会生产力的发展对传递消息的要求不断提升使得人类文明不断进步。
在各种各样的通信方式中,利用“电”来传递消息的通信方法称为电信(Telecommunication),这种通信具有迅速、准确、可靠等特点,且几乎不受时间、地点、空间、距离的限制,因而得到了飞速发展和广泛应用;
在现今因电波的快捷性使得从远古人类物质交换过程中就结合文化交流与实体经济不断积累进步的实物性通信(邮政通信)被人类理解为制约经济发展的阻碍。
在古代,人类通过驿站、飞鸽传书、烽火报警、符号、身体语言、眼神、触碰等方式进行信息传递。
在现代科学水平的飞速发展,相继出现了无线电、固定电话、移动电话、互联网甚至视频电话等各种通信方式。通信技术拉近了人与人之间的距离,提高了经济的效率,深刻地改变了人类的生活方式和社会面貌。
1. 分类
1. 按传输媒质分类
有线通信:是指传输媒质为导线、电缆、光缆、波导、纳米材料等形式的通信,其特点是媒质能看得见,摸得着(明线通信、电缆通信、光缆通信、光纤光缆通信)。
无线通信:是指传输媒质看不见、摸不着(如电磁波)的一种通信形式 [2] 。
(微波通信、短波通信、移动通信、卫星通信、 散射通信)。
2. 按信道中传输的信号分类
模拟信号:凡信号的某一参量(如连续波的振幅、频率、相位,脉冲波的振幅、宽度、位置等)可以取无限多个数值,且直接与消息相对应的,模拟信号有时也称连续信号。 这个连续是指信号的某一参量可以连续变化。
数字信号:凡信号的某一参量只能取有限个数值,并且常常不直接与消息相对应的,也称离散信号 [1] 。
3. 按工作频段分类
长波通信。
中波通信。
短波通信。
微波通信。
4. 按调制方式分类
基带传输:是指信号没有经过调制而直接送到信道中去传输
的通信方式。
频带传输:是指信号经过调制后再送到信道中传输,接收端
有相应解调措施的通信方式。
5.按通信双方的分工及数据传输方向分类。
对于点对点之间的通信,按消息传送的方向,通信方式可分为单工通信、半双工通信及全双工通信三种。
所谓单工通信,是指消息只能单方向进行传输的一种通信工作方式。单工通信的例子很多,如广播、遥控、无线寻呼等。这里,信号(消息)只从广播发射台、遥控器和无线寻呼中心分别传到收音机、遥控对象和BP 机上。
所谓半双工通信方式,是指通信双方都能收发消息,但不能同时进行收和发的工作方式。对讲机、收发报机等都是这种通信方式。
所谓全双工通信,是指通信双方可同时进行双向传输消息的工作方式。在这种方式下,双方都可同时进行收发消息。很明显,全双工通信的信道必须是双向信道。生活中全双工通信的例子非常多,如普通电话、手机等。
2. 组成
实现信息传递所需的一切技术设备和传输媒质的合称为通信系统。
信源:消息的产生地,其作用是把各种消息转换成原始电信号,称之为消息信号或基带信号。电话机、电视摄像机和电传机、计算机等各种数字终端设备就是信源。
发送设备:将信源和信道匹配起来,即将信源产生的消息信号变换为适合在信道中搬移的场合,调制是最常见的变换方式。对需要频谱搬移场合,调制是最常见的变换方式。对数字通信系统来说,发送设备常常又分为信源编码与信道编码。
信道:传输信号的物理媒质。
噪声源:是通信系统中各种设备以及信道中所固有的,为了分析方便,把噪声源视为各处噪声的集中表现而抽象加入到信道。
接收设备:完成发送设备的反变换,即进行解调、译码、解码等等。它的任务是从带有干扰的接收信号中正确恢复出相应的原始基带信号来。
信宿:传输信息的归宿点,其作用是将复原的原始信号转换成相应的信息
2. 通信的传输方式。
现在普遍双工比较多。
3. 通信中的并行,串行
现在普遍串行比较多。
4. 通信中的同步,异步。
5. (USART)异步通信 的数据帧格式。
1.接收方怎么知道你什么时候发送。当发送完怎么知道你发送结束。所以在发送一个字节时会先发送一个起始位。在空闲的时候因为是高电平。当发送起始位是0,当接收方收到0就知道你要发送数据了就准备好接收数据。当发完一个字节时。这时又会发送一个停止位1。当接收方接收到停止位1就知道你发送完了。发送一个字节需要发送10个位。起始位(一位)+ 一个字节(八位) + 起始位(一位)。如图:奇偶校验位可以先不考虑。
2. 具体发送方多久发送一个bit呢?
从而引出波特率。如果波特率是9600。那么1/9600s传输1bit。
1s传输9600bit。但对于接收方以多大的速度去接收呢。如果速度慢会丢bit。一般采样频率是
传输频率的16倍。这样才能保证稳定不丢。
如果单片机是发送方。笔记本电脑是接收方。我们不需要考虑接收问题。笔记本电脑硬件会自己处理。但是显示接收的上位机软件要配置跟下位机一样波特率,停止位,数据位,是否有校验位。
如果单片机是接收方。笔记本电脑是发送方。需要考虑采样频率的问题。
3. 具体波特率怎么产生呢?
在库函数里设置波特率参数。就可以产生。有相应的硬件电路。我们不需要管。如果像有些51单片机是没有波特率产生电路的。需要用一个定时器配置来产生。
对于异步通信字节与字节传输是可以间隔传输的。接收方接收到起始就知道有数据来。接收到停止位知道一个字节接收完毕。等一下字节也是同样方式。
6. USART的框图
对于收发就看圈的部分即可
7. dome (串口发送数据)
使用串口0 RX:PA9 TX:PA10
串口初始化步骤:(这个dome没用中断)
usart_comm.h
#ifndef USART_COMM_H
#define USART_COMM_H
/**
@brief: 串口处理的模块
*/#include "gd32f10x.h"void usart0_init(uint32_t baudval);void usart0_send_byte(uint8_t ch);void usart0_send_string(uint8_t *ch);#endif
usart_cmm.c
#include "usart_comm.h"/**
*@brief: usart0的初始化
*@param baudval: 波特率
*@retval NONE
*/
void usart0_init(uint32_t baudval){/* 初始化时钟和对应的io口 */rcu_periph_clock_enable(RCU_GPIOA);rcu_periph_clock_enable(RCU_USART0);gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9); /* TX 推挽复用 */gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_10); /* RX 浮空输入 */// 配置usart0的工作参数usart_deinit(USART0); /* 重置初始化 */usart_baudrate_set(USART0, baudval); //波特率usart_parity_config(USART0, USART_PM_NONE); //无奇偶校验usart_word_length_set(USART0, USART_WL_8BIT); //bit长度usart_stop_bit_set(USART0, USART_STB_1BIT); //停止位usart_transmit_config(USART0, USART_TRANSMIT_ENABLE); //使能发送usart_receive_config(USART0, USART_RECEIVE_ENABLE); //使能接收usart_enable(USART0); /* 使能串口 */
}/**
*@brief: usart0发送一个字节
*@param ch:待发送字节
*@retval NONE
*/
void usart0_send_byte(uint8_t ch){usart_data_transmit(USART0, ch);while(usart_flag_get(USART0, USART_FLAG_TBE)==RESET); /* 等待发送完成 */
}/**
*@brief: usart0发送字符串
*@param ch:待发送字符串指针
*@retval NONE
*/
void usart0_send_string(uint8_t *ch){uint32_t k = 0;while(*(ch+k) != '\0'){usart0_send_byte(*(ch+k));k++;}
}
main.c
#include "systick.h"
#include "usart_comm.h"int main(){systick_config();usart0_init(9600);while(1){usart0_send_string((uint8_t *)"hello UART.\n"); //自动会填充字符串结束符'\0'delay_1ms(1000); //等待1s}
}
结果:
8. dome (串口发送接收数据中断)
通过上位机发指令来控制下位机的LED,继电器的操作。
继电器硬件图:
J1接到PB15. 控制PB15来控制继电器是否工作。
LED硬件图:
具体上下位机的协议规定:
一帧有5个字节:帧头(0xFF),设备ID,设备号,设备指令,帧尾(0x00).
relay_ctrl.h(继电器)
#ifndef RELAY_CTRL_H
#define RELAY_CTRL_H#include "gd32f10x.h"//定义继电器序号的宏
#define RELAY_1 0x01void relay_init(void);void relay_connect(uint8_t relay_num);
void relay_disconnect(uint8_t relay_num);#endif
relay_ctrl.c(继电器)
#include "relay_ctrl.h"// 继电器控制io口的初始化
void relay_init(void){rcu_periph_clock_enable(RCU_GPIOB);gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_15);//默认让继电器断开relay_disconnect(RELAY_1);
}// 控制继电器吸合
void relay_connect(uint8_t relay_num){switch(relay_num){case RELAY_1:gpio_bit_set(GPIOB, GPIO_PIN_15);break;default:break;}
}// 控制继电器断开
void relay_disconnect(uint8_t relay_num){switch(relay_num){case RELAY_1:gpio_bit_reset(GPIOB, GPIO_PIN_15);break;default:break;}
}
led_ctrl.h(LED)
#ifndef LED_CTRL_H
#define LED_CTRL_H#include "gd32f10x.h"//LED序号的宏定义
#define LED_1 0x01
#define LED_2 0x02void led_init(void);void led_open(uint8_t led_num); //led点亮
void led_close(uint8_t led_num); //led熄灭#endif
led_ctrl.c(LED)
#include "led_ctrl.h"void led_init(void){rcu_periph_clock_enable(RCU_GPIOB);gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0|GPIO_PIN_1);led_close(LED_1);led_close(LED_2);}//led点亮
void led_open(uint8_t led_num){switch(led_num){case LED_1:gpio_bit_set(GPIOB, GPIO_PIN_0);break;case LED_2:gpio_bit_set(GPIOB, GPIO_PIN_1);break;default:break;}
}//led熄灭
void led_close(uint8_t led_num){switch(led_num){case LED_1:gpio_bit_reset(GPIOB, GPIO_PIN_0);break;case LED_2:gpio_bit_reset(GPIOB, GPIO_PIN_1);break;default:break;}
}
usart_comm.h(串口)
#ifndef USART_COMM_H
#define USART_COMM_H
/**
@brief: 串口处理的模块
*/#include "gd32f10x.h"// 定义数据帧的宏
#define HEX_HEAD 0xFF
#define HEX_TAIL 0x00
#define LED_ID 0x01
#define RELAY_ID 0x02void usart0_init(uint32_t baudval);void usart0_send_byte(uint8_t ch);void usart0_send_string(uint8_t *ch);void deal_rec_buff(void); // 串口通信协议hex数据帧缓存处理函数#endif
usart_comm.c(串口)
#include "usart_comm.h"
#include "led_ctrl.h"
#include "relay_ctrl.h"uint8_t recv_buff[5]; /* 保存结束的数据 */
uint8_t recv_buff_len = 0;/**
*@brief: usart0的初始化
*@param baudval: 波特率
*@retval NONE
*/
void usart0_init(uint32_t baudval){/* 初始化时钟和对应的io口 */rcu_periph_clock_enable(RCU_GPIOA);rcu_periph_clock_enable(RCU_USART0);gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9); /* TX 推挽复用 */gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_10); /* RX 浮空输入 */// 配置usart0的工作参数usart_deinit(USART0);usart_baudrate_set(USART0, baudval); //波特率usart_parity_config(USART0, USART_PM_NONE); //无奇偶校验usart_word_length_set(USART0, USART_WL_8BIT); //bit长度usart_stop_bit_set(USART0, USART_STB_1BIT); //停止位usart_transmit_config(USART0, USART_TRANSMIT_ENABLE); //使能发送usart_receive_config(USART0, USART_RECEIVE_ENABLE); //使能接收usart_enable(USART0); /* 使能串口 */// 使能usart0的中断usart_interrupt_enable(USART0, USART_INT_RBNE);/* 中断优先级 */nvic_irq_enable(USART0_IRQn, 2U, 2U);usart0_send_string((uint8_t *)"usart0 opened succeed.");}/**
*@brief: usart0发送一个字节
*@param ch:待发送字节
*@retval NONE
*/
void usart0_send_byte(uint8_t ch){usart_data_transmit(USART0, ch);while(usart_flag_get(USART0, USART_FLAG_TBE)==RESET); /* 等待发送完成 */
}/**
*@brief: usart0发送字符串
*@param ch:待发送字符串指针
*@retval NONE
*/
void usart0_send_string(uint8_t *ch){uint32_t k = 0;while(*(ch+k) != '\0'){usart0_send_byte(*(ch+k));k++;}
}// USART0的中断响应函数
void USART0_IRQHandler(void){uint8_t temp;if(SET == usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE)){usart_interrupt_flag_clear(USART0, USART_INT_FLAG_RBNE);temp = usart_data_receive(USART0);if(temp == HEX_HEAD){ //数据帧帧头recv_buff_len = 0;recv_buff[recv_buff_len] = temp;recv_buff_len++; }else if(temp == HEX_TAIL){ //数据帧帧尾if(recv_buff_len == 4){recv_buff[recv_buff_len] = temp;deal_rec_buff();}else{usart0_send_string((uint8_t *)"error");}}else{if(recv_buff_len > 0 && recv_buff_len < 4){recv_buff[recv_buff_len] = temp;recv_buff_len++;}else{usart0_send_string((uint8_t *)"error");}}}
}// 串口通信协议hex数据帧缓存处理函数
void deal_rec_buff(void){switch(recv_buff[1]){case LED_ID: //LED的控制if(recv_buff[3] == 0x01){led_open(recv_buff[2]);}else if(recv_buff[3] == 0x02){led_close(recv_buff[2]);}break;case RELAY_ID: //继电器的控制if(recv_buff[3] == 0x01){relay_connect(recv_buff[2]);}else if(recv_buff[3] == 0x02){relay_disconnect(recv_buff[2]);}break;default: //出错usart0_send_string((uint8_t *)"error");break;}
}
main.c
#include "systick.h"
#include "usart_comm.h"
#include "led_ctrl.h"
#include "relay_ctrl.h"int main(){systick_config();usart0_init(9600); /* 波特率:9600 */led_init();relay_init();while(1){}
}
相关文章:
GD32F10 串口通信
1. 什么是通信 通信,指人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递,从广义上指需要信息的双方或多方在不违背各自意愿的情况下采用任意方法,任意媒质,将信息从某方准确安全地传送到另方。通信双方如果想正确传输…...
QT常用控件介绍
QT信号与槽机制 connect (A,SIGNLA(aaa()),B, SLOT(bbb())); GUI继承简介 布局管理器 垂直布局水平布局网格布局表单布局 输出控件 Label: 标签Text Browser: 文本浏览器Graphics View : 图形视图框架Calendar Widget: 日历控件LCD Number: 液晶字体数…...
[FineReport]安装与使用(连接Hive3.1.2)
一、安装(对应hive3.1.2) 注:服务器的和本地的要同时安装。本地是测试环境,服务器的是生产环境 1、服务器安装 1、下载 免费下载FineReport - FineReport报表官网 向下滑找到 2、解压 [rootck1 /home/data_warehouse/software]# tar -zxvf tomcat…...
黑马mysql教程笔记(mysql8教程)基础篇——数据库相关概念、mysql安装及卸载、数据模型、SQL通用语法及分类(DDL、DML、DQL、DCL)
参考文章1:https://www.bilibili.com/video/BV1Kr4y1i7ru/ 参考文章2:https://dhc.pythonanywhere.com/article/public/1/ 文章目录 基础篇数据库相关概念(数据库DataBase(DB)、数据库管理系统DataBase Management Sy…...
最新AI智能创作系统源码V2.6.2/AI绘画系统/支持GPT联网提问/支持Prompt应用
一、AI创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的AI智能问答系统和AI绘画系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图…...
神器 CodeWhisperer
这两天看到了好多关于 Amazon CodeWhisperer 针对个人用户终身免费使用的消息,便抽空简单来重点介绍下如何在 VS Code 这款 IDE 上安装和使用 CodeWhisperer。 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视…...
GraphQL全面深度讲解
目录 一、GraphQL 是什么 二、GraphQL 规范 数据模型 字段 参数 三、运行示例 四、优势和劣势 优势 劣势 一、GraphQL 是什么 GraphQL 是一种用于 API 的查询语言,也是一个基于服务端的运行引擎。 GraphQL 提供了一套完整的规范和描述用于查询 API…...
9.1 链表
链表:数据结构,一堆数据的集合,链表的每一项都是结构体,都使用指针指向下一个结构体。 数组的缺点:由于数组的地址是连续的,对数组的数据进行增、删、改后数据不连续,需要较大的运算量才能实现…...
分布式文件系统FastDFS实战
1. 分布式文件系统应用场景 互联网海量非结构化数据的存储需求: 电商网站:海量商品图片视频网站:海量视频文件网盘:海量文件社交网站:海量图片 2.FastDFS介绍 https://github.com/happyfish100/fastdfs 2.1简介 …...
手机自动直播系统源码交付与代理加盟注意事项解析!
随着直播行业的不断发展,手机自动直播已经成为了人们生活中不可或缺的一部分。手机无人直播软件成了香饽饽,各类手机实景直播APP大批量涌现。因为创业和技术门槛低,市场需求高,所以成了最火热创业赛道。那么如果是不懂技术的人群&…...
NodeJS 如何连接 MongoDB
初始化: yarn init使用命令: yarn add mongodb新建 index.js 文件: const MongoClient require(mongodb).MongoClient; const db_name "fly_articleDb"; const url mongodb://127.0.0.1:27017;(async function () {const cli…...
基于Java的老年人体检管理系统设计与实现(源码+lw+部署文档+讲解等)
文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…...
燃气安全如何保障?万宾燃气管网监测系统时刻感知管网运行态势
近年来随着我国城镇化建设的加快,燃气已经成为每个家庭的必需品。然而,每年夏季频繁发生的燃气爆炸事故,已经严重危害人民生命财产安全危害社会公共安全和公共利益。为了保障燃气安全运行,近日,许多城市都在大力推进燃…...
2. selenium学习
Selenium 学习 简介 Selenium 是一个用于自动化浏览器的工具,它提供了多种编程语言的支持,包括 Python、Java、C# 等。它可以模拟用户在浏览器中的操作,比如点击按钮、填写表单、提交数据等。Selenium 具有强大的功能和灵活的定制性&#x…...
数学建模Matlab之评价类方法
大部分方法来自于http://t.csdnimg.cn/P5zOD 层次分析法 层次分析法(Analytic Hierarchy Process, AHP)是一种结构决策的定量方法,主要用于处理复杂问题的决策分析。它将问题分解为目标、准则和方案等不同层次,通过成对比较和计算…...
json能够存储图片吗?
JSON 本身并不适合存储图片,因为它是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。JSON 数据格式简单,只包含键值对,因此它主要用于存储和传输文本数据。 然而,你可以将图片转换为 …...
C语言中自定义类型讲解
前言:C语言中拥有三种自定义类型,这三种自定义类型是怎么运用呢?在内存中又是怎么存储的呢?通过这篇文章我们来逐个讲解讲解。 三种类型分别是: 1.结构体 – 通俗的来讲就是可以把不同类型的变量放在一个集合中 2.枚举…...
Win10系统中GPU深度学习环境配置记录
运行环境 系统:Win10 处理器 Intel(R) Core(TM) i7-9700K CPU 3.60GHz 3.60 GHz 机带 RAM 16.0 GB 设备 ID A18D4ED3-8CA1-4DC6-A6EF-04A33043A5EF 产品 ID 00342-35285-64508-AAOEM 系统类型 64 位操作系统, 基于 x64 的处理器 显卡:NVIDIA GeF…...
pycharm一直没显示运行步骤,只是出现waiting for process detach
pycharm一直没显示运行步骤,只是出现waiting for process detach;各类音乐免费软件;最棒的下载torch-geometric-CSDN博客(不太推荐)我强烈推荐这个:_waiting for process detachhttps://blog.csdn.net/weix…...
管道读写特点以及设置成非阻塞
管道的读写特点: 使用管道时,需要注意以下几种特殊的情况(假设都是阻塞I/O操作) 1.所有的指向管道写端的文件描述符都关闭了(管道写端引用计数为0),有进程从管道的读端 读数据,那么管…...
(c++)类和对象 下篇
目录 1.再次了解构造函数 2. Static成员 3. 友元 4. 内部类 5.匿名对象 6.拷贝对象时的一些编译器优化 1.再次了解构造函数 1.1 构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。 class Date { pub…...
Tomcat报404问题的原因分析
1.未配置环境变量 按照需求重新配置即可。 2.IIs访问权限问题 注意:这个问题有的博主也写了,但是这个问题可有可无,意思是正常情况下,有没有都是可以访问滴放心 3.端口占用问题 端口占用可能会出现这个问题,因为tomcat的默认端口号是8080,如果在是运行tomcat时计算机的…...
《发现的乐趣》作者费曼(读书笔记)
目录 一、书简介 二、作者理查德•费曼 费曼式思维 教育与传承 三、个人思考 四、笔记 科学家眼中的花之美 关于偏科 父亲教育我的方式 知道一个概念和真正懂得这个概念有很大区别 我没有义务去成全别人对我的期望 诺贝尔奖——够格吗? 探究世界的游戏规…...
第5章-宏观业务分析方法-5.3-主成分分析法
目录 5.3.1 主成分分析简介 协方差矩阵 方差 协方差 协方差矩阵...
IDEA 使用
目录 Git.gitignore 不上传取消idea自动 add file to git撤销commit的内容本地已经有一个开发完成的项目,这个时候想要上传到仓库中 Git .gitignore 不上传 在项目根目录下创建 .gitignore 文件夹,并添加内容: .gitignore取消idea自动 add…...
如何使用 ChatGPT 创建强大的讲故事广告
shadow: 使用AI技术来辅助创作故事越来越流行,从事营销相关工作的人员需要不断适应和学习新的技术和工具,以应对行业的变化和挑战。 如何使用ChatGPT创建讲故事的广告: A. 确定品牌故事和信息传递B. 确定目标受众C. 开发概念D. 使…...
【C语言深入理解指针(4)】
1.回调函数是什么? 回调函数就是一个通过函数指针调用的函数。 如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数时,被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅…...
qt中弱属性机制
目录 简介: 详解: 实例: 易错地方: 简介: 使用弱属性机制,可以存储临时的值用于传递判断。可以通过widget->dynamicPropertyNames()列出所有弱属性名称,然后通过widget->proper…...
软断言你也学不会
断言是测试用例的一部分,也是测试工程师开发测试用例的核心。断言通常集成在单元测试和集成测试中,断言分为硬断言和软断言。 硬断言是我们狭义上听到的普通断言:当用例运行后得到的[实际]结果与预期结果不匹配时,测试框架将停止测试执行并抛…...
【推荐系统】多任务学习模型
介绍一些多任务学习模型了解是如何处理多任务分支的。 ESSM, Entire Space Multi-Task Model 阿里提出的ESSM全称Entire Space Multi-Task Model,全样本空间的多任务模型,有效地解决了CVR建模(转化率预估)中存在的两个非常重要…...
中美网站建设/收录网站查询
C语言编译器报错C语言编译器报错及其解决编译器: TDM-GCC 4.7.1 32-bit执行 gcc.exe...gcc.exe "C:\Users\Administrator\Desktop\test1\2045.c" -o "C:\Users\Administrator\Desktop\test1\2045.exe" -m32 -g3 -I"F:\software(软件安装包)\Dev-cpp\M…...
品牌 网站建设/网站工具查询
Vscode是微软推出的一款优秀的ide开发工具,界面简洁美观、默认支持中文,拥有丰富的插件,支持Windows,OS X和Linux。内置JavaScript、TypeScript和node.js支持,vscode的定位位于编辑器与IDE之间,但是更像一个…...
企业网站风格/微信推广软件
2019独角兽企业重金招聘Python工程师标准>>> How to implement the function that supports concurrent downloading? 在看完 小心,AsyncTask 不是萬能的 以及 深入研究 IntentService 原始碼 這兩篇文章後,我想你應該已經對如何寫個正確處理…...
网站编辑怎么做内容分类/谷歌浏览器官网下载安装
我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式。1、JSON官方2、GSON3、FastJSON4、jacksonJSON操作涉及到的类:public class Student {private int id;private String name;private int age;public int getId() {retu…...
东莞网络建站公司/深圳高端seo公司助力企业
一、什么是缓存雪崩 当缓存服务器宕机或者在某一个时间段大量缓存集中失效,这时所有的请求都直接查询后端数据库,给数据库造成极大的压力甚至是宕机,从而引起应用服务器雪崩。 二、缓存雪崩的解决方案 对于缓存服务宕机造成的缓存雪崩&…...
深圳西丽网站建设公司/百度的人工客服电话
特征 单个3 V电源操作(2.7 V至3.6 V) SNR70 dBc至65 MSPS时的奈奎斯特 SFDR85 dBc至65MSPS时奈奎斯特低功率: 300 mW至65 MSPS差分输入,带500 MHz带宽 片上参考和SHA DNL0.4 LSB 灵活模拟输入:1 V p-p至2 V p-p范围 偏…...