This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR6043:用于通过 MSP430板上的 NB-IoT 发送数据的 API

Guru**** 2387080 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1312829/msp430fr6043-api-for-sending-data-thru-nb-iot-on-msp430-board

器件型号:MSP430FR6043

场景: 我有一个旧开发人员的现有代码、但此代码根本没有任何文档。 该代码使用下面的 set ipaddress 将收集到的数据发送到本地服务器。  

METER_READ_INTERVAL = (((uint32_t)wm_configs.commInverval)*60*1000)/METER_READ_COUNT;
if(strlen(wm_configs.ipAddress) <= 0) strcpy(wm_configs.ipAddress, "211.108.69.210");

现在、我需要将其更改为将其发送到云服务器的代码、但我还不熟悉此平台。 问题在于、后端开发人员使用 API 保存数据、因此我需要对 code composer 代码执行 curl 命令。  

卷曲示例:  

curl -X 'POST' \
'43.200.235.148:3000/.../meter' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"imei": "sensor4",
"readCycle": 1,
"dataCount": 4,
"volume": 1.872135249111801,
"forward": 1,
"reversed": 1,
"interval1": 1,
"interval2": 2,
"interval3": 3,
"batP": 68,
"batV": 3456,
"temp": 2378,
"chsum": 3573,
"reading_time": "2023-08-23T16:00:00.856Z"
}'

是否可以使用 code composer 在 MSP430上执行此操作、还是应该使用其他方法来执行? 谢谢。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否要将这些字符保存在 MSP430中?

    我认为您可以将它们另存为字符串、并将其放在数组或结构中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Eason、

    感谢您答复我的问题。  

    它当前位于数据包中。

    我有以下用于设置数据包的代码:

    void nbiot_set_packet(){
         nb_packet.read_cycle = 1;
         nb_packet.data_count = METER_READ_COUNT;
         nb_packet.data = nb_read_volume_list[METER_READ_COUNT-1];

         int i, j;
         for(i=0, j=METER_READ_COUNT-2; i<METER_READ_COUNT-1; i++, j--){
              nb_packet.interval[i] = (int16_t)(nb_read_volume_list[METER_READ_COUNT-1] - nb_read_volume_list[j]);
         }

         nb_packet.bat_p = meter_data.bat_p;
         nb_packet.bat_v = meter_data.bat_v;
         nb_packet.temp = meter_data.temp;
         nb_packet.chsum = 0;

         uint8_t* p_buf = (uint8_t*)&nb_packet;
         for(i=0; i<sizeof(nb_packet_t)-2; i++) nb_packet.chsum += p_buf[i];
    }

    然后、我有以下用于发送收集到的数据包的代码:

    void nbiot_send_packet(){
         int i;
         char* hex = "0123456789ABCDEF";
         int packet_len = sizeof(nb_packet_t);
         sprintf((char*)nb_tx_buf, "AT+NSOSD=0,%d,", packet_len);
         int len = strlen((char*)nb_tx_buf);
         uint8_t* p_buf = &(nb_tx_buf[len]);
         uint8_t* p_packet = (uint8_t*)&nb_packet;
         nb_packet.chsum = 0;

         for(i=0; i<sizeof(nb_packet_t)-2; i++) nb_packet.chsum += p_packet[i];

         for(i=0; i<packet_len; i++){
              p_buf[i*2] = hex[(p_packet[i] >> 4) & 0x0F];
         p_buf[i*2+1] = hex[p_packet[i] & 0x0F];
         }

         nb_tx_buf[len+(packet_len*2)] = '\0';
         nbiot_tx((const char*)nb_tx_buf, strlen((char*)nb_tx_buf));
    }

    我要尝试做的是、将  nbiot_send_packet ()  转换为将使用 HTTP POST 发送数据的代码。 我曾尝试过为其使用 curl、也尝试过 HTTP Post、但在  sys/socket.h 上会出现相同的错误、因此我认为我需要先制作套接字? 是这样吗?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    抱歉、我不知道 HTTP POST 或 Curl。 将消息转换为 HTTP POST 结构完全是在做这项工作。 我认为这纯粹是一项软件工作、与 MCU 没有关系。 我会要求您尝试咨询互联网或聊天。 它将为您提供更好的答案。