init
This commit is contained in:
116
EC800M.c
Normal file
116
EC800M.c
Normal file
@@ -0,0 +1,116 @@
|
||||
#include "EC800M.h"
|
||||
|
||||
char GPSDATA[GPSDATA_LENGTH];
|
||||
int GPSDATA_LEN;
|
||||
|
||||
void uart_send_string(const char *str)
|
||||
{
|
||||
size_t len = strlen(str);
|
||||
uart_write_blocking(GPS_UART, (const uint8_t *)str, len);
|
||||
}
|
||||
|
||||
void uart_read_string()
|
||||
{
|
||||
while (uart_is_readable(GPS_UART)) {
|
||||
char c = uart_getc(GPS_UART);
|
||||
|
||||
if (GPSDATA_LEN < GPSDATA_LENGTH - 1) {
|
||||
GPSDATA[GPSDATA_LEN++] = c;
|
||||
GPSDATA[GPSDATA_LEN] = '\0';
|
||||
}
|
||||
|
||||
sleep_ms(1);
|
||||
}
|
||||
}
|
||||
|
||||
void uart_read_string_until_response(const char *expected_response)
|
||||
{
|
||||
int response_len = strlen(expected_response);
|
||||
char response_buffer[1024]; // 假设响应不会超过 100 个字符
|
||||
|
||||
int i = 0;
|
||||
while (1) {
|
||||
while (uart_is_readable(GPS_UART)) {
|
||||
char c = uart_getc(GPS_UART);
|
||||
GPSDATA[i++] = c;
|
||||
GPSDATA[i] = '\0'; // 添加字符串结束符
|
||||
if (strstr(GPSDATA, expected_response) != NULL) {
|
||||
return; // 找到了预期的响应,退出循环
|
||||
}
|
||||
}
|
||||
sleep_ms(1); // 等待一小段时间再继续读取
|
||||
}
|
||||
}
|
||||
|
||||
// 重置数据缓冲区
|
||||
void reset_data()
|
||||
{
|
||||
memset(GPSDATA, 0, GPSDATA_LENGTH);
|
||||
GPSDATA_LEN = 0;
|
||||
}
|
||||
|
||||
int EC800M_INIT()
|
||||
{
|
||||
uart_init(GPS_UART, 2400);
|
||||
gpio_set_function(9, GPIO_FUNC_UART); // UART1_TX
|
||||
gpio_set_function(8, GPIO_FUNC_UART); // UART1_RX
|
||||
int __unused actual = uart_set_baudrate(GPS_UART, GPS_UART_BAUD_RATE);
|
||||
uart_set_hw_flow(GPS_UART, false, false);
|
||||
uart_set_format(GPS_UART, 8, 1, UART_PARITY_NONE);
|
||||
//uart_set_fifo_enabled(GPS_UART, false);
|
||||
|
||||
uart_send_string("AT+QGPSCFG=\"outport\",\"uartdebug\"\r\n");
|
||||
sleep_ms(100);
|
||||
uart_read_string();
|
||||
|
||||
uart_send_string("AT+QGPSCFG=\"nmeasrc\",1\r\n");
|
||||
sleep_ms(100);
|
||||
uart_read_string();
|
||||
|
||||
uart_send_string("AT+QGPSCFG=\"gpsnmeatype\",63\r\n");
|
||||
sleep_ms(100);
|
||||
uart_read_string();
|
||||
|
||||
uart_send_string("AT+QGPSCFG=\"gnssconfig\",1\r\n");
|
||||
sleep_ms(100);
|
||||
uart_read_string();
|
||||
|
||||
uart_send_string("AT+QGPSCFG=\"autogps\",0\r\n");
|
||||
sleep_ms(100);
|
||||
uart_read_string();
|
||||
|
||||
uart_send_string("AT+QGPSCFG=\"apflash\",0\r\n");
|
||||
sleep_ms(100);
|
||||
uart_read_string();
|
||||
|
||||
uart_send_string("AT+QGPS=1\r\n");
|
||||
sleep_ms(100);
|
||||
uart_read_string();
|
||||
|
||||
// 打印第一次初始化输出
|
||||
printf("%s %d\n", GPSDATA, strlen(GPSDATA));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
char *EC800M()
|
||||
{
|
||||
uart_send_string("AT+QGPSLOC=0\r\n");
|
||||
uart_read_string_until_response("OK");
|
||||
sleep_ms(100);
|
||||
//printf("%s %d\n", GPSDATA, strlen(GPSDATA));
|
||||
|
||||
//printf("\r\n");
|
||||
|
||||
return GPSDATA;
|
||||
}
|
||||
|
||||
char *EC800M_GPS_DATA_PARSING(char *GPS_DATA)
|
||||
{
|
||||
char *p = NULL;
|
||||
p = strstr(GPSDATA, "QGPSLOC:");
|
||||
|
||||
printf("%s\n", p);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user