中移M5311-NBIOT-OPENCPU开发-HTTP串口收发器

中移M5311-NBIOT-OPENCPU开发-HTTP串口收发器

实现功能:单片机串口发送HTTP-GET请求给M5311,M5311发送HTTP请求,接受返回数据,M5311串口发送回单片机

opencpu_uart_demo.c

#include "m5311_opencpu.h"

#define OPENCPU_MAIN_UART HAL_UART_1

 unsigned char uart_cmd = 0;
 char buffer[300];
 char *pbuf;


//uart中断回调函数
static void user_uart_callback(hal_uart_callback_event_t status, void *user_data){
   pbuf = buffer;
   int temp1;
   if(status == HAL_UART_EVENT_READY_TO_READ)
   {
	   memset(buffer,0,300);
       temp1 = opencpu_uart_receive(OPENCPU_MAIN_UART, pbuf, 300);
	   uart_cmd = 'f';
   }
}

/*
  打印函数
*/
void opencpu_printf (const char *str, ...){

    static unsigned char s[600]; //This needs to be large enough to store the string TODO Change magic number
	int i,j;
	unsigned char *p;
    va_list args;
    int str_len;

    if ((str == NULL) || (strlen(str) == 0))
    {
        return;
    }
    va_start (args, str);
    str_len = (unsigned int)vsprintf ((char*)s, str, args);
    va_end (args);
    p =s;
	while(str_len > 0)
	{
		j = opencpu_uart_send(OPENCPU_MAIN_UART, p, str_len);
		p=p+j;
		str_len = str_len - j;
	}
}
void custom_uart_init(void)
{
	opencpu_uart_open(OPENCPU_MAIN_UART,HAL_UART_BAUDRATE_115200,user_uart_callback);
}

m5311_opencpu.c

#include "m5311_opencpu.h"


extern unsigned int OC_DEBUG_CHANNEL;


void send_http_data(){
	char* url;

	url = "";
    char *name = (char *) malloc(strlen(url) + strlen(pbuf));
    sprintf(name, "%s%s", url, pbuf);

    httpclient_t client = {0};
    httpclient_data_t client_data = {0};
    char *buf = NULL;
    buf = pvPortMalloc(600);
    if (buf == NULL) {
        opencpu_printf("Malloc failed.\r\n");
        return;
    }
    memset(buf, 0, sizeof(buf));
    client_data.response_buf = buf;  
    client.timeout_in_sec = 20;
    client_data.response_buf_len = 600;
	oc_httpclient_get(&client, name, &client_data);
    opencpu_printf("%s\r\n",client_data.response_buf);


}

void test_all_in_one(){
	custom_uart_init();
    opencpu_lock_light_sleep(); 		// 禁止进入休眠

	//获取网络注册状态,并阻塞等待网络注册成功
	while(opencpu_cgact()!=1){
		vTaskDelay(10);
	}
	opencpu_printf("networkSuccess\n");
	uart_cmd = 0;
	while(1){
		if(uart_cmd == 'f'){
			uart_cmd = 0;
			//opencpu_printf("data:%s \r\n",pbuf);
			send_http_data();
		}
		
		vTaskDelay(10);
	}
}

//opencpu主任务函数
void opencpu_task_main()
{
  test_all_in_one();
  vTaskDelete(NULL);
}


/*
 新建opencpu任务,这个函数用户不可更改
*/
void test_opencpu_start()
{
	 xTaskCreate(opencpu_task_main,"opencpu",1024,NULL,TASK_PRIORITY_NORMAL,NULL);
}

m5311_opencpu.h

// 增加一行 
extern char buffer[300];

猜你喜欢

转载自blog.csdn.net/qq_33259323/article/details/113735184