STM32F103 4G Cat.1模块EC200S使用
一、简介
EC200S-CN 是移远通信最近推出的 LTE Cat 1 无线通信模块,支持最大下行速率 10Mbps 和最大上行速率 5Mbps,具有超高的性价比;同时在封装上兼容移远通信多网络制式 LTE Standard EC2x(EC25、EC21、EC20 R2.0、EC20 R2.1)和 EC200T/EG25-G/EG21-G 模块以及 UMTS/HSPA+ UC20/UC200T 模块,实现了 3G 网络与 4G 网络之间的无缝切换。EC200S-CN 还支持标准的 Mini PCIe 封装,以满足不同行业产品应用需求。
Quectel EC2x 模块具有嵌入式 TCP/IP堆栈,使主机可以通过 AT 命令直接上网。可以实现TCP客户端、UDP客户端、TCP服务器和UDP服务器。
二、AT指令
2.1 AT
测试AT指令功能是否正常,等待模块返回 OK。
ATOK
2.2 AT + CPIN?
查询 SIM 卡状态,返回 READY 则表示SIM卡正常,如果 20 秒后还无法识别 SIM 卡,重新启动模块。
AT+CPIN?+CPIN: READYOK
2.3 AT + CREG?
查询模组是否注册上GSM网络,如果 90秒后未能在 CS 上注册域名服务,重新启动模块。
如果返回 1 或 5 ,代表 CS 服务注册成功。
+CREG:0,1 表示已注册上本地网,+CREG:0,5表示注册上漫游网。
AT+CREG?+CREG: 0,1OK
2.4 AT + CGREG?
查询模组是否注册上GPRS网络,+CGREG:0,1 表示已注册上本地网,+CGREG:0,5表示注册上漫游网。
AT+CGREG?+CGREG: 0,1OK
2.5 AT + QICSGP=1,1,“CMNET”
该命令可用于配置<APN>,<username>,<password>等TCP / IP上下文参数。QoS设置可以由AT + CGQMIN,AT + CGEQMIN,AT + CGQREQ和AT + CGEQREQ配置 。
- AT+QICSGP=?:查询命令参数。
- AT+QICSGP=<contextID>:查询 contextID的配置信息。
- AT+QICSGP=<contextID>[,<context_type>,<APN>[,<username>,<password>)[,<authentication>]]]:配置 contextID信息。
- <contextID>:整数类型。上下文ID。范围是1-16。
- <context_type>:整数类型。协议类型。1(IPV4)、2(IPV4V6)。
- <APN>:字符串类型。接入点名称。移动CMNET,联通UNINET
- <username>:字符串类型。用户名。
- <password>:字符串类型。密码。
- <authentication>:整数类型。身份验证方法。0(没有)、1(PAP)、2(CHAP)、3(PAP或CHAP)。
- 返回信息:OK 或 ERROR。
AT+QICSGP=1,1,\"CMNET\",\"\",\"\",1OK
2.6 AT + QIDEACT=1
在激活GPRS场景之前先关闭GPRS场景,确保连接正确
AT+QIDEACT=1OK
2.7 AT + QIACT=1
激活移动场景
AT+QIACT=1OK
2.8 AT+QIOPEN
该命令用于打开套接字服务。
- AT+QIOPEN=?:查询命令参数。
- AT+QIOPEN=<contextID>,<connectID>,<service_type>,<IP_address>/<domain_name>,<remote_port>[,<local_po CONNECTrt>[,<access_mode>]] :打开 Socket 服务。
- <contextID> :整数类型。上下文ID。范围是1-16。
- <connectID> :整数类型。套接字服务索引。范围是0-11。
- <SERVICE_TYPE>:字符串类型。套接字服务类型。
- “ TCP ” :作为客户端启动TCP连接
- “ UDP ”:作为客户端启动UDP连接
- “TCP LISTENER” :启动TCP服务器以侦听TCP连接
- “UDP SERVICE” :启动UDP服务
- <IP_address>:字符串类型。
- 如果<service_type>是TCP或UDP ,则表示远程服务器的IP地址,例如 “220.180.239.212”。
- 如果<service_type>是TCP LISTENER或UDP SERVICE 地址,请输入“127.0.0.1”。
- <domain_name>:字符串类型。远程服务器的域名地址。
- <remote_port> :远程服务器的端口,仅在<service_type>为“TCP”或“UDP”时有效。范围是0-65535。
- <LOCAL_PORT> :本地端口。范围是0-65535。
- 如果<service_type>是“TCP LISTENER”或“UDP SERVICE”,则此参数必须指定。
- 如果<service_type>是“TCP”或“UDP”。如果<local_port>为0,那么本地端口将是自动分配。否则,将按指定分配本地端口。
- <access_mode> :整数类型。套接字服务的数据访问模式。
- 0: 缓冲区访问模式
- 1:直推模式
- 2:透明访问模式
- <err>:整数类型。操作的错误代码。请参阅第4章。
AT+QIOPEN=1,0,\"TCP\",\"180.97.81.180\",53540,0,1OK+QIOPEN: 0,0
Buffer模式,Push模式,透传模式。通过参数<access_mode>进行配置。
2.9 AT + QISEND
如果指定套接字服务的<access_mode>是缓冲区访问模式或直接推送模式,则数据可以是通过AT + QISEND发送。如果数据成功发送到模块,将返回“ SEND OK ” 。否则它将返回“ SEND FAIL ” 或“ ERROR ” 。“ SEND FAIL ” 表示发送缓冲区已满客户可以尝试重新发送数据。“ERROR”表示在发送过程中遇到错误 数据。客户应该延迟一段时间来发送数据。最大数据长度为1460字。“SEND OK”并不意味着数据已成功发送到服务器。客户可以查询数据是否通过AT + QISEND = <connectID>,0命令到达服务器。透传模式下不需要AT指令发送数据
三、TCP/IP AT命令拨号流程
四、复位模块
RESET_N 引脚可用于使模块复位。拉低 RESET_N 引脚至少 300 ms 后释放可使模块复位。RESET_N
信号对干扰比较敏感,因此建议在模块接口板上的走线应尽量的短,且需包地处理。
五、移植文件
5.1 board_ec200s.c
/********************************************************************** INCLUDES*/
#include "stdlib.h"
#include "string.h"
#include "stm32f10x.h"
#include "FreeRTOS.h"
#include "task.h" #include "board_ec200s.h" uint8_t sendCmd(char *pCmd, char *pRes, uint32_t timeOut, uint8_t sendNum);
void clearBuffer(void);
void reset(void);/********************************************************************** GLOBAL VARIABLES*/
uint8_t g_usart2RecvFinish = 0; // 串口2接收标志串口接收完成标志
char g_ec200sBuf[1024] = {0}; // 接收缓存
uint32_t g_ec200sCnt = 0; // 接收计数 /********************************************************************** PUBLIC FUNCTIONS*/
/**@brief 初始化@param 无@return 1 - 成功;0 - 失败
*/
uint8_t EC200S_Init(void)
{ printf("EC200S_Init\r\n");uint8_t result = 0;uint8_t step = 0;switch(step){case 0:if(sendCmd("AT\r\n","OK", 10, 5)) // 测试AT指令功能是否正常{step++;}else{printf("Err:AT\r\n");reset();break;} case 1:if(sendCmd("AT+CPIN?\r\n","+CPIN: READY", 20, 2)) // 查询SIM卡是否正常,返回ready则表示SIM卡正常{step++;}else{printf("Err:AT+CPIN?\r\n"); // 20秒内,无法识别SIM状态,重启模块reset();break;}case 2:if(sendCmd("AT+CREG?\r\n","+CREG: 0,1", 90, 2)) // 查询模组是否注册上GSM网络{step++; }else{printf("Err:AT+CREG?\r\n"); // 90秒内,没有注册上CS业务,重启模块 reset();break;}case 3:if(sendCmd("AT+CGREG?\r\n","+CGREG: 0,1", 60, 2)) // 查询模组是否注册上GPRS网络{step++; }else{printf("Err:AT+CGREG?\r\n"); // 60秒内,没有注册上PS业务reset(); break;}case 4:if(sendCmd("AT+QICSGP=1,1,\"CMNET\",\"\",\"\",1\r\n", "OK", 40, 3)) // 查询模组是否注册上GPRS网络{result = EC200S_NetConfig(); }else{printf("Err:AT+QICSGP=1,1\r\n"); // 如果3次都没停止成功或超过40秒没有回应,则重启模块reset();break;}}return result;
}/**@brief 网络配置@param 无@return 无
*/
void EC200S_GpioConfig(void)
{GPIO_InitTypeDef gpioInitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // 使能GPIOgpioInitStructure.GPIO_Pin = GPIO_Pin_8; // 选择要初始化的GPIOB引脚PB8gpioInitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 设置引脚工作模式为通用推挽输出 gpioInitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 设置引脚输出最大速率为50MHzGPIO_Init(GPIOB, &gpioInitStructure);
}/**@brief 网络配置@param 无@return 1 - 成功;0 - 失败
*/
uint8_t EC200S_NetConfig(void)
{ uint8_t result = 0;if(sendCmd("AT+QIDEACT=1\r\n", "OK", 40, 1)) // 在激活GPRS场景之前先关闭GPRS场景,确保连接正确{if(sendCmd("AT+QIACT=1\r\n", "OK", 150, 1)) // 激活移动场景{EC200S_Connect();} else // 等待150秒后,没有响应重启模块{printf("Err:AT+QIACT=1\r\n"); // 重启模块reset();}} else // 等待40秒后,没有响应重启模块{printf("Err:AT+QIDEACT=1\r\n"); // 重启模块reset();}
}/**@brief 连接TCP服务器@param 无@return 无
*/
void EC200S_Connect(void)
{if(sendCmd("AT+QIOPEN=1,0,\"TCP\",\"180.97.81.180\",53540,0,1\r\n", "+QIOPEN:", 150, 5)) {printf("Connect Success\r\n");} else{printf("Err:AT+QIOPEN=1,0\r\n");}
}/**@brief 发送数据到TCP服务器@param pString -[in] 发送数据@return 无
*/
void EC200S_Send(char *pString)
{if(sendCmd("AT+QISEND=0\r\n", ">", 60, 1)) {if(sendCmd("AT+QISEND=0,0\r\n", "OK", 5, 24)) // 2分钟后(每5秒查询一次,共24次){/* 发送数据成功,对方收到数据 */}else{printf("Err:AT+QISEND=0\r\n"); if(sendCmd("AT+QICLOSE=0\r\n", "OK", 10, 1)) // TCP连接出现异常,关闭TCP连接{printf("AT+QICLOSE\r\n");EC200S_Connect();}else{reset(); // 等待10秒,没有响应重启模块} }}else{reset(); // 等待60秒,没有响应重启模块}
}/**@brief 从TCP服务器接收数据@param pRecvDataBuf -[out] 接收数据@return 接收数据长度
*/
uint32_t EC200S_Receive(char *pRecvDataBuf)
{uint32_t recvDataLen = 0;if(g_isUsart2RecvFinish) // 如果串口接收完成{if(strstr((const char *)g_ec200sBuf, "+QIURC: \"recv\",0,") != NULL) // 如果检索到关键词{memcpy(pRecvDataBuf, g_ec200sBuf, g_ec200sCnt);recvDataLen = g_ec200sCnt;}clearBuffer();} return recvDataLen;
}/********************************************************************** LOCAL FUNCTIONS*/
/**@brief 发送AT命令@param pCmd -[in] 命令字符串@param pRes -[in] 需要检测的返回命令字符串@param timeOut -[in] 等待时间@param sendNum -[in] 命令发送次数@return 1 - 成功;0 - 失败
*/
uint8_t sendCmd(char *pCmd, char *pRes, uint32_t timeOut, uint8_t sendNum)
{uint8_t i = 0;uint32_t time;clearBuffer(); // 清空缓存 for(i = 0; i < sendNum; i++){time = timeOut * 10;USART_SendString(USART2, pCmd);while(time--){if(g_usart2RecvFinish) // 如果串口接收完成{if(strstr((const char *)g_ec200sBuf, pRes) != NULL) // 如果检索到关键词{printf("%s", g_ec200sBuf);return 1;}} vTaskDelay(100); // 等待100毫秒}clearBuffer();}return 0;
}/**@brief 清空缓存@param 无@return 无
*/
void clearBuffer(void)
{memset(g_ec200sBuf, 0, sizeof(g_ec200sBuf));g_ec200sCnt = 0;g_usart2RecvFinish = 0;
}/**@brief 重启模块@param 无@return 无
*/
void reset(void)
{printf("reset\n"); GPIO_ResetBits(GPIOB, GPIO_Pin_8);vTaskDelay(2000);GPIO_SetBits(GPIOB, GPIO_Pin_8);
}/****************************************************END OF FILE****************************************************/
4.2 board_ec200s.h
#ifndef _BOARD_EC200S_H_
#define _BOARD_EC200S_H_/********************************************************************** INCLUDES*/
#include "stm32f10x.h"/********************************************************************** GLOBAL VARIABLES*/
extern uint8_t g_usart2RecvFinish; // 串口2接收标志串口接收完成标志
extern char g_ec200sBuf[1024]; // 接收缓存
extern uint32_t g_ec200sCnt; // 接收计数/********************************************************************** API FUNCTIONS*/
uint8_t EC200S_Init(void);
void EC200S_GpioConfig(void);
uint8_t EC200S_NetConfig(void);
void EC200S_Connect(void);
void EC200S_Send(char *pString);
uint32_t EC200S_Receive(char *pRecvDataBuf);#endif /* _BOARD_EC200S_H_ */
六、使用方法
EC200S_GpioConfig();
EC200S_Init();
while(1) // 任务都是一个无限循环,不能返回
{EC200S_Send("TEST");vTaskDelay(10000); char recvDataBuf[256] = {0};int recvDataLen = EC200S_Receive(recvDataBuf);
}
/**@brief 串口2收发中断@param 无@return 无
*/
void USART2_IRQHandler(void)
{if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) // 接收中断{g_usart2RecvFinish = 1; // 串口2接收标志if(g_ec200sCnt >= sizeof(g_ec200sBuf)){g_ec200sCnt = 0; // 防止串口被刷爆}g_ec200sBuf[g_ec200sCnt++] = USART2->DR;USART_ClearFlag(USART2, USART_FLAG_RXNE);}
}
相关文章:
STM32F103 4G Cat.1模块EC200S使用
一、简介 EC200S-CN 是移远通信最近推出的 LTE Cat 1 无线通信模块,支持最大下行速率 10Mbps 和最大上行速率 5Mbps,具有超高的性价比;同时在封装上兼容移远通信多网络制式 LTE Standard EC2x(EC25、EC21、EC20 R2.0、EC20 R2.1&a…...
38、springboot为 spring mvc 提供的静态资源管理,覆盖和添加静态资源目录
springboot为 spring mvc 提供的静态资源管理 ★ Spring Boot为Spring MVC提供了默认的静态资源管理: ▲ 默认的四个静态资源目录: /META-INF/resources > /resources > /static > /public ▲ ResourceProperties.java类的源代码࿰…...
Go 输出函数
Go语言拥有三个用于输出文本的函数: Print()Println()Printf() Print() 函数以其默认格式打印其参数。 示例 打印 i 和 j 的值: package mainimport "fmt"func main() {var i, j string "Hello", "World"fmt.Print(…...
L1-037 A除以B(Python实现) 测试点全过
题目 真的是简单题哈 —— 给定两个绝对值不超过100的整数A和B,要求你按照“ A / B 商 A/B商 A/B商”的格式输出结果。 输入格式 输入在第一行给出两个整数 A A A和 B ( − 100 ≤ A , B ≤ 100 ) B(−100≤A,B≤100࿰…...
睿思BI旗舰版V5.3正式发布
发布时间:2023-7-20 主要更新内容: 1.增加3D地图功能 2.增加水球图 3.增加扇形图,在数据大屏 - 自定义组件中定义。 4.增加指标引导线功能,在数据大屏 - 自定义组件中定义。 5.详情页增加回调函数功能。 6.大屏/仪表盘模版下载,…...
基于Jenkins自动化部署PHP环境---基于rsync部署
基于基于Jenkins自动打包并部署Tomcat环境_学习新鲜事物的博客-CSDN博客环境 准备git仓库 [rootgit ~]# su - git 上一次登录:五 8月 25 15:09:12 CST 2023从 192.168.50.53pts/2 上 [gitgit ~]$ mkdir php.git [gitgit ~]$ cd php.git/ [gitgit php.git]$ git --b…...
学信息系统项目管理师第4版系列02_法律法规
1. 信息安全的法律体系可分为四个层面 1.1. 一般性法律法规,如宪法、国家安全法,国家秘密法 1.2. 规范和惩罚信息网络犯罪的法律,如刑法、《全国人大常委会关于维护互联网安全的决定》等 1.3. 直接针对信息安全的特别规定,如《…...
【大数据】Doris:基于 MPP 架构的高性能实时分析型数据库
Doris:基于 MPP 架构的高性能实时分析型数据库 1.Doris 介绍 Apache Doris 是一个基于 MPP(Massively Parallel Processing,大规模并行处理)架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知ÿ…...
【rust/egui】(五)看看template的app.rs:SidePanel、CentralPanel以及heading
说在前面 rust新手,egui没啥找到啥教程,这里自己记录下学习过程环境:windows11 22H2rust版本:rustc 1.71.1egui版本:0.22.0eframe版本:0.22.0上一篇:这里 SidePanel 侧边栏,如下图 …...
MTK6833_MT6833核心板_天玑700安卓5G核心板规格性能介绍
MTK6833安卓核心板采用台积电 7nm 制程的5G SoC,2*Cortex-A766*Cortex-A55架构,搭载Android12.0操作系统,主频最高达2.2GHz 。内置 5G 双载波聚合技术(2CC)及双 5G SIM 卡功能,实现优异的功耗表现及实时连网…...
Maven-Java代码格式化插件spring-javaformat
TOC 官方文档:点击进入 前言 项目研发过程中,随着团队人员的增加变更环境配置的不同,有些同学甚至没有格式化代码的习惯,导致编码风格不统一杂乱无章,为解决这一问题引入Spring提供的格式化代码插件。插件支持多种方…...
设计模式之八:模板方法模式
泡咖啡和泡茶的共同点: 把水煮沸沸水冲泡咖啡/茶叶冲泡后的水倒入杯子添加糖和牛奶/柠檬 class CoffeineBeverage { public:void prepareRecipe(){boilWater();brew();pourInCup();addCondiments();}private:void boilWater(){std::cout << "Boiling w…...
hive可以删除单条数据吗
参考: hive只操作几条数据特别慢 hive可以删除单条数据吗_柳随风的技术博客_51CTO博客...
python3-Flask实现Api接口
1、:python3-Flask实现Api接口_flask api_Shiro to kuro的博客-CSDN博客 2、 Flask框架的web开发01(Restful API接口规范)_flask patch post_~须尽欢的博客-CSDN博客...
微分享 - 超实用开发日常排查问题Linux运维命令
目录 CPUCPU基本信息CPU使用情况ps 命令可用于确定哪个进程占用了 CPU 内存free 网络查看端口curl 常用命令 文件df 、du 区别磁盘使用情况文件大小文件下载压缩&解压缩查找文件查找文件内容 进程CPU 使用来升序排序内存 使用升序排序 其他常用操作系统进本信息赋予文件执行…...
Pico如何使用C/C++选择哪个I2C控制器,以及SDA和SCL针脚
本文一开始讲述了解决方案,后面是我做的笔记,用来讲述我的发现流程和探究的 Pico I2C 代码结构。 前提知识 首先要说明一点:Pico 有两个 I2C,也就是两套 SDA 和 SCL。这点你可以在针脚图中名字看出,比如下图的 Pin 4…...
求生之路2私人服务器开服搭建教程centos
求生之路2私人服务器开服搭建教程centos 大家好我是艾西,朋友想玩求生之路2(left4dead2)重回经典。Steam玩起来有时候没有那么得劲,于是问我有没有可能自己搭建一个玩玩。今天跟大家分享的就是求生之路2的自己用服务器搭建的一个心路历程。 ࿰…...
Redis7之介绍(一)
1. 是什么 Redis:REmote Dictionary Server(远程字典服务器) Remote Dictionary Server( 远程字典服务)是完全开源的,使用ANSIC语言编写遵守BSD协议,是一个高性能的Key-Value数据库提供了丰富的数据结构,例如String、Hash、List、…...
基于Python+djangoAI 农作物病虫害预警系统智能识别系统设计与实现(源码&教程)
1.背景 随着科技的发展,机器学习技术在各个领域中的应用越来越广泛。在农业领域,机器学习技术的应用有助于提高农作物的产量和质量,降低农业生产的成本。本文针对农作物健康识别问题,提出一种基于机器学习方法的农作健康识别系统&…...
Kotlin Flow 转换以及上下游处理
本片文章主要介绍Flow上下游处理,上游一个Flow使用map,上游两个Flow使用zip,上游三个Flow及以上使用combine 1、下面代码展示了upStreamFlow作为上游,downStreamFlow作为下游,通过对upStreamFlow使用map操作符函数将…...
深度学习3. 强化学习-Reinforcement learning | RL
强化学习是机器学习的一种学习方式,它跟监督学习、无监督学习是对应的。本文将详细介绍强化学习的基本概念、应用场景和主流的强化学习算法及分类。 目录 什么是强化学习? 强化学习的应用场景 强化学习的主流算法 强化学习(reinforcement learning) …...
TCP/IP网络江湖武艺传承:物理层与通信江湖的幕后
目录 〇、引言:进入现代通信技术的江湖 一、数字信号与模拟信号:传承与差异...
智慧能源管理系统助力某制造企业提高能源利用效率
随着全球能源需求不断增加和能源价格的上涨,企业和机构日益意识到能源管理的重要性。传统的能源管理方式不仅效率低下,还容易造成资源浪费和环境污染。因此,许多企业开始探索采用智慧能源管理系统来提高能源利用效率,降低能源成本…...
opencv/C++ 人脸检测
前言 本文使用的测试资源说明: opencv版本:opencv 4.6.0 人脸检测算法 Haar特征分类器 Haar特征分类器是一个XML文件,描述了人体各个部位的Haar特征值。包括:人脸、眼睛、鼻子、嘴等。 opencv 4.6.0自带的Haar特征分类器&…...
UE4/5的Custom节点:在VScode使用HLSL(新手入门用)
目录 custom节点 VSCode环境安装 将VSCode里面的代码放入Custom中 custom节点 可以看到这是一个简单的Custom节点: 而里面是可以填写代码的: 但是在这里面去写代码会发现十分的繁琐【按下enter后,不会换行,也不会自动缩进】 …...
小研究 - J2EE 应用服务器的软件老化测试研究
软件老化现象是影响软件可靠性的重要因素,长期运行的软件系统存在软件老化现象,这将影响整个业务系统的正常运行,给企事业单位带来无可估量的经济损失。软件老化出现的主要原因是操作系统资源消耗殆尽,导致应用系统的性能下降甚至…...
Tomcat和Servlet基础知识的讲解(JavaEE初阶系列16)
目录 前言: 1.Tomcat 1.1Tomcat是什么 1.2下载安装 2.Servlet 2.1什么是Servlet 2.2使用Servlet来编写一个“hello world” 1.2.1创建项目(Maven) 1.2.2引入依赖(Servlet) 1.2.3创建目录(webapp&a…...
开源在大数据和分析中的角色
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
C#,《小白学程序》第四课:数学计算
1 文本格式 /// <summary> /// 《小白学程序》第四课:数学计算 /// 这节课超级简单,就是计算成绩的平均值(平均分) /// 这个是老师们经常做的一件事。 /// </summary> /// <param name"sender"></…...
SparkML机器学习
SparkML 机器学习: 让机器学会人的学习行为, 通过算法和数据来模拟或实现人类的学习行为,使之不断改善自身性能。 机器学习的步骤: 加载数据特征工程 数据筛选: 选取适合训练的特征列, 例如用户id就不适合, 因为它特性太显著.数据转化: 将字符串的数据转化数据类型…...
建网站做日租房/广州网站营销优化qq
为什么80%的码农都做不了架构师?>>> UIButton 1.创建方式: UIButton*btn [UIButton buttonWithType:<#(UIButtonType)#>]; 常用的按钮类型有: UIButtonTypeCustom(自定义,一般) UIButt…...
win7系统如何重装wordpress/站长之家ip查询
方法一: mysql_real_escape_string – 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 ! $sql "select count(*) as ctr from users where username ".mysql_real_escape_string($username)." and pas…...
外语网站建设/免费人脉推广软件
一、使用环境如下二、配置如下:在该页面下方找到 Categories\Translation安装插件打开Safari英文网站开始可以开始翻译网站了另外一种 “有道翻译”参见[Mac OS] Safari 使用“有道词典”一键翻译网页 (一)转载于:https://blog.51cto.com/leo…...
数据分析案例网站/无锡今日头条新闻
服务器终端输入命令 jupyter notebook --no-browser --port8889 本地终端输入命令 ssh -N -f -L localhost:8888:localhost:8889 usernameip username和ip替换为服务器的username和ip地址 本地打开浏览器,http://localhost:8888/ 即可访问 可能出现的问题 如果ju…...
乌兰察布做网站/全文搜索引擎有哪些
Latex 另起一段缩进,解决空白问题 1.一般的方法:两次回车,直接空两行就可以了 2.遇到格式问题,可用以下方法解决 a. 用mathtype生成空格的tex代码:{\rm{ }} b.加入换行符号:\ c.缩进两个空格的代码如下…...
商城类网站和o2o网站/最近的新闻摘抄
题目大意 给出一个整数n(1<n<200)n (1 < n < 200)n(1<n<200)。 求出任意一个它的倍数m,要求m必须只由十进制的 0 或 1 组成。 思路分析 首先暴力枚举肯定是不可能的 1000ms 想不超时都难,而且枚举还要解决大数问题。 解题方法&am…...