微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 数据分包发送

数据分包发送

时间:10-02 整理:3721RD 点击:

嗨,亲们:

    我将cc2541当做从机,向手机App发送数据(28Bytes),用的是GATTServApp_ProcessCharCfg()方法。由于数据>20Bytes,所以我分成两个14字节的字符串分开发送。

下面是我的周期函数:

        stat = SimpleProfile_GetParameter( SIMPLEPROFILE_CHAR3, &valueToCopy); 

        if( stat == SUCCESS )
        {

            SimpleProfile_SetParameter( SIMPLEPROFILE_CHAR4, sizeof(uint8), &valueToCopy);

         }

        sprintf((char *)pBuffer, "%04d",2016);      //year(+4)       
        ……
        sprintf((char *)pBuffer + 24, "%02d",99); //一直往pBuffer中拷贝数据,共28个字节
        numBytes = osal_strlen(pBuffer);
        SK_SetParameter( SK_UART_ATTR, numBytes, pBuffer );  //发送函数

接着是我的发送函数:

bStatus_t SK_SetParameter( uint8 param, uint8 len, void *pValue )
{
  bStatus_t ret = SUCCESS;
  switch ( param )
  {

    case SK_UART_ATTR:
      if ( len > 0)
      {        
     #ifdef HAL_UART_TRANS
       

        //发送第一段字符串(前14Bytes)

        char *p = pValue;
        osal_memcpy(skKeyPressed, p, len - 14);
        skKeyPressed_len = len - 14;
        GATTServApp_ProcessCharCfg( skConfig, skKeyPressed, FALSE,
                                    simplekeysAttrTbl, GATT_NUM_ATTRS( simplekeysAttrTbl ),
                                    INVALID_TASK_ID );        
       

        //发送第二段字符串(后14Bytes)

        for(int i=0;i<len-14;i++)
        {
          skKeyPressed[i] = 0;
        }  
        p = p + 14;
        osal_memcpy(skKeyPressed, p, 14);
        skKeyPressed_len = 14;
        GATTServApp_ProcessCharCfg( skConfig, skKeyPressed, FALSE,
                                    simplekeysAttrTbl, GATT_NUM_ATTRS( simplekeysAttrTbl ),
                                    INVALID_TASK_ID );

}

    可是这样干就是不行,调试结果:有几组是正确的(string1+string2),但是发着发着就错了(string2+string2……),就是第二段会连着发……why?

然而已经过去一天了,Ti的大牛们呢?请问是什么问题……探讨探讨~~

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top