公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

xin cháo cong dông,tôi co mt min to min trs BME280 + ML8511 trs pSoC 6 BLE Gi d'liuc bi'c bi'n qua bi'n qua bi'n qua biech qua biéng biéng biéng biéng töng t ván dáabout:麻省理工学院,khi nhun d'liu float d'ng thái,tôi không thán thán bit gia tia tia ctím,n
hun d'liu float d'ng thán,...


tôi dím tím tím thi giai pháp pháp co thèn dèn dái va sác tách ra tách ra trén tách ra trén chèn dán dán mác tách ra tr'ng d " án mitz!"
tôi dáno và va vávn dábout la psoC 6 BLE không thi chui de liu'u du dáu dáu du dáu dáu dáu du dáu dáu du du du do
Tôi không biet nhng gi tôi dang lám co dung không? và li xèy ra dáu?
Hy víng mui ngōi co them qua dán và giup tôi sa li!
Cam an

0 点赞
5 回复数
Translation_Bot
Community Manager
Community Manager
Community Manager

请帮帮我!
非常感谢!

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

你好@KhoaNguyen

CAN使用 uint8_t 数组作为数据类型,并设置字符串的最大长度,例如 24。

ADSW_0-1695911690804.png

然后 CAN 使用字符串的 strlen 将字符串复制到数据字段和数据长度。

因此,你需要为字符串创建一个新的数据结构并更新你的 sensor_param 结构。

...
typedef struct{
    uint8_t *data;
    uint8_t len;
}content_str;

typedef struct{
    content_t ml8511;
    content_t temp;
    content_t humi;
    content_t pres;
    content_t data;
    content_str data_str;
}sensor_param;

...

CAN将字符串复制到 ble_param.data_str.data 中变量和字符串长度放入 ble_param.data_str. len变量。
然后更新通知,将 ble_param.data_str.data 的变量复制到关贸总协定自定义字符的值.val 中,例如:

 notificationPacket.handleValPair.attrHandle = CY_BLE_SENSOR_CHUOIDATA_CHAR_HANDLE;
        notificationPacket.handleValPair.value.val = ble_param.data_str.data;
        notificationPacket.handleValPair.value.len = ble_param.data_str.len > 24 ? 24 : ble_param.data_str.len;


热烈的问候,
ADSW

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

谢谢你的帮助!
但我仍然不明白“那么你 CAN使用 字符串的 strlen 将字符串复制到数据字段和数据长度 。"。 希望你 CAN 解释得更清楚,给我举个例子
谢谢!

0 点赞
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

你好!
在我编辑项目后,数据已发送!
但是我仍然遇到发送的数据字符串不是我想要的样子的问题,
例如 data = " 31.21;1012.80;77.00;18.64。" 那么发送的数据是 " 31.2 "
我不知道问题出在哪里? 请帮我修好它非常
感谢!

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

你好@KhoaNguyen

我稍后会检查您的代码,而不是您 CAN 进行简单的修改。
您需要将自定义字符的数据类型设置为 uint8_t [](数组),然后设置长度。

来自你的代码(在 ble_handler.c 里面 ), CAN 创建数据字符串并将其连接到自定义 char 值

if( NotificationEnabled.data == 1 && ble_param.data.handler == (uint8_t)WRITE_NOTIF )
    {
        char str_uv[10], str_P[10], str_T[10], str_H[10];
        char txt_buf[44]; 
        sprintf(txt_buf,"%s;%s;%s;%s",ftoa(ble_param.temp.value,str_T,2)
                                                     ,ftoa(ble_param.pres.value,str_P,2)
                                                     ,ftoa(ble_param.humi.value,str_H,2)
                                                     ,ftoa(ble_param.ml8511.value,str_uv,2));
        
        UART_PutString("data ble :");
        UART_PutString(txt_buf);
        notificationPacket.connHandle = cy_ble_connHandle[0];
        notificationPacket.handleValPair.attrHandle = CY_BLE_SENSOR_CHUOIDATA_CHAR_HANDLE;
        notificationPacket.handleValPair.value.val = (uint8_t*)txt_buf;
        notificationPacket.handleValPair.value.len = strlen(txt_buf);
        ble_param.data.handler = (uint8_t)DO_NOTHING;
        Cy_BLE_GATTS_Notification(&notificationPacket);  
    };


我试过用你之前的那个,这就是我的结果

 

ADSW_1-1695978817673.png


热烈的问候,
ADSW

 

0 点赞