标注的博客| 安全研究| 渗透测试| APT

首页

gprs/stm32/标准

作者 ludvik 时间 2020-02-22
all

您好。

继续与GSM-调制解调器和stm32描述。上一篇文章探讨了与调制解调器的相互作用作为一个电话)(

如前一个例子所示,这里使用两个USART A,一个定时器和LED输出。也就是说,除了一个-添加输出)PA0)没有什么新的控制继电器,通过它锁模块……

这是必要的,与董事会,模块将被关闭,并放弃所有的设置。

工作方式如下:

启动时,自动设置USART的速度为A-57600,并开始发送配置指令的功能。

gprs.c.)发送这些命令时,程序将检查模块的响应,如果程序出错,程序将暂停,并开始闪烁(

预调是在程序开始,块…

所有发生的事情)和成功的命令,和错误)出现在终端。

在错误处理单元…

while(1) // мигаем 5 секунд и ресетим плату { count_err++; HAL_GPIO_TogglePin(ER_LED_GPIO_Port, ER_LED_Pin); HAL_Delay(100); //if(count_err 49) HAL_NVIC_SystemReset(); }

……有一个评论功能,您可以重新计算费用)和它的模块。错误处理不仅在初始配置,但在未来的工作。

♪♪该函数传递两个参数)作为一个例子,两个数字被发送到GET请求服务器…

现在,参数查询已被评论,并提供了一个简单的测试网站。如果你下载一个程序,你会得到你想要的页面…

要将数据发送到服务器,您必须有这个服务器,并创建一个文件来检查您的工作。

……

?php $today = date("Y.m.d H:i:s"); //получаем текущие дату и время $argument_a = $_REQUEST['a']; //получаем значение посланной переменной "а" $argument_b = $_REQUEST['b']; //получаем значение посланной переменной "b" echo "Hello, reciv - "." $argument_a "." $argument_b ".", date - ". "$today"; ?

取消上一行并填写您的地址。参数可能是更多的,但你必须确保字符串)从AT开始不超过64个字符。

如果一个字符串是更大的,然后发送它的部分,只有最后一部分包含字符

♪♪

我的意思是,如果你有这样的线…

然后发送看起来像这样…

回来的时候,他们送的东西和日期…

然后在功能进行测试,如果一切都好的话,发送数据命令—

GET

-POST

HEAD

然后又进行测试,如果成功的话,从服务器发送一个读命令—

下面描述整个过程略为详细一些。

数据被读取1024字节)(可以放大到usart:/u ring.h)和输出到终端。处理数据的地方写的是“你可以问一个问题。

///////////////////////////////// чтение ответа сервера ///////////////////////////////////// if(flag) { flag = 0; HAL_Delay(500); char read_buf[GPRS_RX_BUFFER_SIZE] = {0,}; while(gsm_available()) { uint16_t i = 0; memset(read_buf, 0, GPRS_RX_BUFFER_SIZE); while(gsm_available()) { read_buf[i++] = gsm_read(); if(i GPRS_RX_BUFFER_SIZE - 1) break; } HAL_UART_Transmit(DEBUG, (uint8_t*)"\n----------\nREAD_BUF:\n----------\n", strlen("\n----------\nREAD_BUF:\n----------\n"), 1000); HAL_UART_Transmit(DEBUG, (uint8_t*)read_buf, strlen(read_buf), 1000); // тут можно парсить ответ } }

我有一些评论,我不知道该怎么做。一方面,这可能是一个一次性的错误),假设您定期发送数据,而服务器由于某种原因没有接受请求,并将继续正常工作,而另一方面,这可能是一个长期的问题)(最简单的解决方案是在那里添加一个bug计数器,如“如果你有十次,然后再回扣费用。”

让我看看发生了什么事,让我在终端的命令…

返回好

0-数据已收到的GET-查询.200-服务器响应代码1270-科尔-在接收的字节。

当通过终端发送命令,数据将被读取到一个函数,在无限周期的gsm.eu可用)。

如果在一段时间内(大约4小时)不发送任何东西给服务器,GPRS连接将被中断,模块发送通知

♪♪要恢复连接,需要发出一个命令

♪♪在代码中有一个处理这种情况…

else if(strstr(buf, "+SAPBR") != NULL) { if(strstr(buf, "DEACT") != NULL) { set_comand(ATSAPBR11); // установить соединение } }

所有的命令都在文件中描述

,在“互联网”部分。

如果在无限循环中取消功能

数据将每分钟发送一次…

TCP

这几乎是相同的,只有在查询服务器的方法的差异。开始时进行调整,检查和错误处理……

添加功能

代码中所有评论都是为了检查各种状态)。在文件中

♪♪

与网络的所有工作都是在功能

♪♪

请求包含下列命令…

发送到一个港口和地址模块,然后发送到“连接好”。如果你不指定的ip-AT+CIPSTART=“,”TCP,“”134.123.45.67“”80”,那么你可以不配置DNS-Server)(命令set.u comand)ATCDNSKFG更新;//安装DNS服务器在程序开始时

-这个指令告诉模块,现在将输入数据(a=33b=55。”该模块将发送一个邀请的象征。”然后你可以输入数据。为了让模块意识到数据输入已经结束,您可以发送到服务器,您必须发送一个字符。

下一页)

如果你给一个命令是这样的-AT+CIPSEND=23)数字是一个数字的字节数发送给指定的字符数后,模块将发送数据到服务器

没有必要引入。

数据行(通常的GET查询)看起来像这样:

确认数据发送模块返回“SEND OK”。然后你可以从服务器上检索的响应…

当我们完成了数据接收,我们发送一个连接关闭命令“+”CIPCLOSE。然而,可能会发生这样的情况,当我们阅读数据时,模块本身将自动关闭连接,然后这个命令将返回错误-

这没有什么大不了的。顺便说一句,所有错误的模块是由operation not allowed响应。

函数

这是毫无疑问的,但没有什么能阻止你把你想要的东西给她。

如果你不发送任何东西很长一段时间,该模块将停用GPRS和发送消息“DEACT”——这是一个无限周期的处理。

在例子中,它提供了一个机会,打电话给一个模块,当你确定你想做什么,例如重新启动。其他功能可以添加到第一部分。

使用此模块作为服务器,你必须有一个SIM卡的白色IP)(APN设置将是不同的)和一个小的初始化更改。代替

要发出命令

,其中1表示启动服务器,而80则是端口。当有人连接到服务器,模块将发送消息

♪♪下一步怎么办我不知道,因为我没有尝试过,但显然,你需要的答案就像TCP-例。禁用服务器命令

♪♪

而且,更重要的是,一个例子,从thingspeak数据传输和阅读。

谢谢你.

聊天室

STM32电视聊天室

论坛