工具与软件:
您好!
目前我正在处理示例 basic_ble 外设配置文件项目。
#define UART_MAX_READ_SIZE 248 //MTU exchange value uint8_t uartReadBuffer[UART_MAX_READ_SIZE]; void UART_Init() { /* Create a UART in CALLBACK read mode */ UART2_Params_init(&uartParams); uartParams.readMode = UART2_Mode_CALLBACK; uartParams.readCallback = UARTCallback; uartParams.readReturnMode = UART2_ReadReturnMode_PARTIAL; uartParams.baudRate = 115200; uartParams.eventCallback = UARTEventCallback; uartParams.eventMask = UART2_EVENT_OVERRUN; uart = UART2_open(CONFIG_UART2_0, &uartParams); if (uart == NULL) { /* UART2_open() failed */ while (1) { } } // Setup an initial read UART2_read(uart, &uartReadBuffer, UART_MAX_READ_SIZE, 0); } void UARTCallback(UART2_Handle handle, void *buffer, size_t count, void *userArg, int_fast16_t status) { uartPacketSize = count; BLEAppUtil_invokeFunction(HandlingFunction,buffer); } typedef struct { uint8_t pkt_len; uint8_t *data; }api_data; void HandlingFunction(char *pData) { api_data *api_pkt_ptr = (api_data*)uartReadBuffer; uint16_t datalen = uartPacketSize; SimpleGattProfile_setParameter(SIMPLEGATTPROFILE_CHAR4, RemainDataLen,&uartReadBuffer[datalen]); memset(&uartReadBuffer[0], 0, sizeof(UART_MAX_READ_SIZE)); UART2_read(uart, uartReadBuffer, UART_MAX_READ_SIZE, 0); }
在从模块向移动设备发送248字节时、在移动设备中以单个数据块接收248 (MTU 交换值)。 如果我从 模块向移动设备发送250字节、则 在移动设备中以 单个块248 (MTU 交换值)接收剩余2个字节的数据将 不会接收。 这2个字节将在下一次数据包发送时接收。 其中 这2个字节没有发生 UART 读取回调。
不发生多达16字节的 UART 读取回调。 如果进行的回调字节多于16字节。
SDK 版本:simplelink_lowpower_f3_sdk_8_10_01_02 (外设)
CCS 版本:CCS 12.7.1
谢谢!
Vignesh。