计算机网络:
MAC地址(英语:Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC位址,以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址 [1] 。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址
网关(Gateway)又称网间连接器、协议转换器。默认网关在网络层以上实现网络互连是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连。【说明:由于历史的原因,许多有关TCP/IP的文献曾经把网络层使用的路由器称为网关,在今天很多局域网采用都是路由来接入网络,因此通常指的网关就是路由器的IP!】
默认网关必须是电脑自己所在的网段中的IP地址,而不能填写其他网段中的IP地址
IP地址和网关不能一样bai,TCP/IP协议规定,网du络的数据包首先访问网关地址,找zhi到指定的网关地址后,再访问该网关地址上的daoIP地址,如果网管地址和IP地址一样,造成冲突,则无法正常访问
问:
无线路由器设置wifi 加密方式选择wpa,3600秒自动换密钥,那么自己怎么登陆?
答:那个密匙是用来加密无线信号的,跟你登陆路由器没有关系。电脑连接无线路由器信号仍然用着你原先设定的密码,不会变。另外,WPA加密方式比较容易被软件破解,建议你尽量不用这种方式
WEP:使用一个静bai态的密钥来加密所有的通信,那么如果网管人员想更新密钥,就得亲自访问每台主机
WPA:与之前WEP的静态密钥不同,WPA需要不断的转换密钥。WPA采用有效的密钥分发机制
WPA2:实现了802.11i的强制性元素,特别是Michael算法被公认彻底安全的CCMP(计数器模式密码块链消息完整码协议)讯息认证码所取代
ESP8266
ai cloud 人工智能云
厂商:安信可
URL(Uniform Resource Locator,统一资源定位符),它是WWW的统一资源定位标志,就是指网络地址
SSID(Service Set Identifier):
RSSI:这个理解起来更简单,就是通过STA扫描到AP站点的信号强度。
AP(Access Point):无线接入点
ESP8266总共有多达16个GPIO管脚。
ESP8266EX 集成了⼀一个通⽤用的 10bit 精度的 ADC。可检测的模拟输⼊入电压范围在 0 到 1V。该 ADC主要⽤用于检测传感器输出或是电池电量等。 在 EXP8266EX 发包时不可使⽤用 ADC,否则将会导致电压值的不准确。
AT指令是应用于终端设备与PC应用之间的连接与通信的指令。AT 即Attention。每个AT命令行中只能包含一条AT指令;对于AT指令的发送,除AT两个字符外,最多可以接收1056个字符的长度(包括最后的空字符)。
什么是透传模式?
透传就是指不需要关心wifi协议是如何实现的。所需要做的就是A通过串口发数据,B通过串口收数据,整个过程中A串口和B串口就像是用导线直接连接起来了一样。则对于开发人员来看,就是完全透明的。
更简单地理解就是:
如果不开启透传模式,我们怎么发送数据呢?在每次发送数据前都必须先发送指令AT+CIPSEND=,例如:
AT+CIPSEND=4
OK
//在 > 后面输入要上传的数据
但是一旦开启了透传模式,我们就不需要在每次发送数据前都发送指令AT+CIPSEND=了,只需要发送一次AT+CIPSEND,之后发送的所有内容全部当成是数据了!
但是这也存在一个问题,要是我后来又想发送命令了,但是却也当成是数据发送过去了。这可怎么办?
这就要退出透传模式了。怎么退出,发送数据"+++"就可以了。注意:此时“+++”后面,不接“发送新行”!
strstr((const char*)USART3_RX_BUF,(const char*)str);
char * strstr ( const char *, const char * );
strstr函数要求输入的参数必须是const char *类型的,所以强制转换一下
若str2是str1的子串,则先确定str2在str1的第一次出现的位置,并返回此位置到str1末尾的所有字符;如果str2不是str1的子串,则返回NULL。(注:若想返回str2在str1第一次出现的位置,不是这个函数)
跟AT指令集手册一样要打上?和=
s = va_arg(ap, const char *);
for ( ; *s; s++)
{
USART_SendData(USARTx,*s);
while( USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET );
}
*s是判断s指向的内容不为0,s++是指向下一个内存,这个是循环遍历数组s,直到找到一个为0的元素为止,一般用来遍历字符串,因为字符串的结束符\0的ASCII码就是0,所以遇到\0就会退出循环。
keil中
if (!value)
{
*ptr++ = 0x30;
*ptr = 0;
return string;
}
value为int类型,if(!10)结果为0,keil非零整数取反为0
//整形转字符,stm32不支持标准的itoa,这里自己实现
char *myitoa(int value, char *string, int radix)
{
int i, d;
int flag = 0;
char *ptr = string;
/* This implementation only works for decimal numbers. */
if (radix != 10)
{
*ptr = 0;
return string;
}
if (!value)
{
*ptr++ = 0x30;
*ptr = 0;
return string;
}
/* if this is a negative value insert the minus sign. */
if (value < 0)
{
*ptr++ = '-';
/* Make the value positive. */
value *= -1;
}
for (i = 10000; i > 0; i /= 10)
{
d = value / i;
if (d || flag)
{
*ptr++ = (char)(d + 0x30);
value -= (d * i);
flag = 1;
}
}
/* Null terminate the string. */
*ptr = 0;
return string;
} /* NCL_Itoa */
//字符串转整形,stm32不支持标准的atoi,这里自己实现
int myatoi(const char *str)
{
int s=0;
uint8_t falg=0;
while(*str==' ')
{
str++;
}
if(*str=='-'||*str=='+')
{
if(*str=='-')
falg=1;
str++;
}
while(*str>='0'&&*str<='9')
{
s=s*10+*str-'0';
str++;
if(s<0)
{
s=2147483647;
break;
}
}
return s*(falg?-1:1);
}
WIFI模块中,AP和STA模式bai中分别意思是:
1、AP:也就是无线接入点,是一个无线网络的创建者,是网络的中心节点。一般家庭或办公室使用的无线路由器就是一个AP。Access Point,提供无线接入服务,允许其它无线设备接入,提供数据访问,一般的无线路由/网桥工作在该模式下。AP和AP之间允许相互连接
2、STA站点就是每一个连接到无线网络中的终端(如笔记本电脑、PDA及其它可以联网的用户设备)都可称为一个站点 Station, 类似于无线终端,sta本身并不接受无线的接入,它可以连接到AP,一般无线网卡即工作在该模式
C语言
va_list,vsprintf
https://blog.csdn.net/ZKR_HN/article/details/99558135
https://www.runoob.com/cprogramming/c-standard-library-stdarg-h.html
功能
C库函数 int vsprintf(char *str,const char *format,va_list arg)使用 参数列表格式化 输出到字符串
参数
str 指向一个字符串数组的指针
format 这是一个字符串,包含了要被写入到字符串str的文本(format可以是包含嵌入的format标签,这些标签可以被随后的附加参数中指定的值替换,并按需格式化)
format具体讲解
一般形式:%[flags][width][.precision][length]specifier
specifier为必选参数,跟我们常用的printf参数没什么两样,比如%d表示十进制数,%c表示字符。具体细节如下表: