首页 » 软件开发 » 嵌入式开发4G模块的使用(指令数据发送模块远端)

嵌入式开发4G模块的使用(指令数据发送模块远端)

雨夜梧桐 2024-07-24 22:47:41 0

扫一扫用手机浏览

文章目录 [+]

嵌入式mcu与4G模块通过串口来实现连接,并通信。
第一步在mcu中先将串口配置好。
配置串口相关代码:

uart_gpio_t g4_uart_gpio={.gpio_uart_clock = RCC_AHB1Periph_GPIOC,.gpio_group = GPIOC,.gpio_tx = GPIO_Pin_6,.gpio_rx=GPIO_Pin_7,.gpio_pin_source_tx=GPIO_PinSource6,.gpio_pin_source_rx=GPIO_PinSource7,.gpio_af_uart=GPIO_AF_USART6};uart_nvic_t g4_uart_nvic={.uart_irq_channel = USART6_IRQn,.uart_irq_pp=0,.uart_irq_subp=1};uart_config_t g4_uart_config= {.uart= USART6, .uart_clock =RCC_APB2Periph_USART6,.baudrate = 115200,.uart_word_length=USART_WordLength_8b, .uart_stop_bits = USART_StopBits_1, .uart_parity = USART_Parity_No};uart_t g4_uart={.rx_irq_enable =1,.uart_config = &g4_uart_config,.uart_nivc = &g4_uart_nvic,.uart_gpio=&g4_uart_gpio};

二、AT指令

AT指令集是mcu串口与模块之间通信的数据协议。
AT指令大多数,以AT+命令开始,以<CR>作为结束。
AT指令集的数据回复,都是<CR><LF>结束的。
这样就非常方便进行程序开发
各模块厂商所设置的at指令集有些不同,但大多数都是通用的。

嵌入式开发4G模块的使用(指令数据发送模块远端) 软件开发
(图片来自网络侵删)

初始化发送的AT指令集:

at_command_t at_command[]={{"AT+IPR=460800\r\n",0,0,NULL,NULL,set_ipr,0},{"AT&W\r\n",0,0,NULL,NULL,save_option,0},{"AT+IPR?\r\n",1,0,"+IPR:",NULL,query_ipr,0},{"ATE0\r\n",1,0,"OK",NULL,ate1,0},{"AT+CGMI\r\n",1,0,"OK",NULL,query_cgmi,0},//{"AT+CGMM\r\n",1,0,"OK",NULL,query_cgmm,0},{"AT+CGMR\r\n",1,0,"OK",NULL,query_cgmr,0},{"AT+CPIN?\r\n",1,0,"+CPIN","+CME",query_cpin,0}, {"AT+CREG?\r\n",1,0,"+CREG",NULL,query_creg,0},{"AT+CGDCONT=1,\"IP\",\"CMNET\"\r\n",1,0,"OK",NULL,query_cgdcont,0},{"AT+MIPCALL=1\r\n",1,0,"+MIPCALL","ERROR",query_call_pdp,0},{"AT+MIPCALL?\r\n",1,0,"+MIPCALL","OK",query_pdp,0},{"AT+MIPHEX=1\r\n",1,0,"OK",NULL,save_miphex,0},{NULL,0,0,NULL,NULL,0}};

上述代码是一个结构体数组。
对于每一个AT指令,都对应于一个处理函数。
每次发送一个at指令,然后等待处理完此at指令后,才可以进行下一次的发送。
这样就不会出现混乱的现象(发送的at指令与接收到的数据不一致现象)

用at指令进行远程服务器连接

AT+MIPOPEN=<Socket_ID>,<Source_Port>,<Remote_IP>,<Remote_Port>,<Protocol>

其中socket_id为模块支持的socket编号,1-10

source_port可以为0,

remote_ip远端服务器地址,为IP或域名

remote_port远端服务器的端口号

protocol 协议类型 0 为tcp

用此命令连接远端服务器后,就可以实现数据的发送与接收。

数据发送指令为:

AT+MIPSEND=1\" +数据

AT+MIPPUSH=1

AT+MIPSEND即将数据发送至连接到的远端服务器上,但此时数据并没有立即发送至远端,而是缓存在模块内部中

AT+MIPPUSH=1 这个指令的意思是立即将数据发出

上述2个指令,需要联合使用,发送这2个指令前后需要一定时间的延迟,不然会出现发送失败的情况。

附一张发送数据并接收数找的图

+MTPRTCP由4G模块发向mcu端,此为从远端服务器接收到的数据内容。

标签:

相关文章

编程语言的温馨祝福,用代码编织新春佳节

随着新春佳节的临近,人们纷纷用各种方式表达对新年的祝福。在这个数字化的时代,编程语言也以其独特的魅力,为这个传统节日增添了一份科技...

软件开发 2024-12-31 阅读1 评论0

编程语言,科技发展的基石与未来趋势

在信息技术迅猛发展的今天,编程语言作为科技发展的基石,扮演着至关重要的角色。本文将从编程语言的历史、现状、发展趋势以及在我国的应用...

软件开发 2024-12-31 阅读1 评论0