我已经浏览了串口服务的代码,由于它是用在UART和SPS之间共享的指针设置的,所以我不确定将数据从应用程序发送到移动设备的最佳方式。例如,我想周期性地从传感器发送ASCII值,但是使用示例代码来做这件事的最佳方法是什么?我应该在内存中分配自己的指针,然后调用app_uart_push()吗?也许几行示例代码会有帮助。谢谢!
你好,
我建议实现一个定制服务来移动传感器数据。据我所知,你的传感器数据是周期性传输的谨慎数据集。应用笔记http://support.dialog-semiconductor.com/download/file/fid/885在一步一步的教程中介绍了如何构建自己的自定义服务。应用笔记还描述了如何设置通知,允许设备在数据变化时向智能手机发送数据。DSPS使用相同的基本方法(通过GATT的通知),对于需要流数据以非常高的数据速率传输的系统来说,它是一个很好的候选者,但对于区分数据包的周期性传输来说,它不是最好的候选者。使用自定义服务也使得实现应用程序的智能手机端变得更加容易。
好的,我去看看。是的,你是对的,它们将是非常小的,周期性的数据集,所以高数据流是不需要的。
亲爱的JBaczuk,新手的问题。你知道在SPS项目中哪里可以找到键盘输入的数据吗?我注意到uart_rx_callback()可以实现如下所示的函数及其定义
***************************************************************************************** @brief接收回调函数将处理传入的uart数据** @param[in] res (status: UART_STATUS_OK, UART_STATUS_ERROR, UART_STATUS_TIMEOUT)** @return没有*****************************************************************************************/
Static void uart_rx_callback(uint8_t res, uint32_t read_size){//从uart中调用函数如果(res = = UART_STATUS_OK){app_uart_push (rx_read_pointer RX_CALLBACK_SIZE rx_state_ptr);}
//调用uart超时isrelse if(res == UART_STATUS_TIMEOUT) / /设置静态状态{app_uart_push (rx_read_pointer read_size rx_state_ptr);}其他的{(1);//从未知源调用回调函数}
/ /我觉得回调uart_sps_read(rx_read_pointer, RX_CALLBACK_SIZE, &rx_state_ptr, &uart_rx_callback);
我跟踪了uart_rx_callback()中的uart_sps_read(),它的定义是:Void uart_sps_read(uint8_t *bufptr, uint32_t size, uint8_t *state, Void (*callback) (uint8_t, uint32_t)){/ /检查ASSERT_ERR (bufptr ! = NULL);ASSERT_ERR(大小! = 0);ASSERT_ERR (uart_sps_env.rx。bufptr = = NULL);
//准备RX参数uart_sps_env.rx。大小=大小;uart_sps_env.rx。bufptr = bufptr;uart_sps_env.rx。=状态;uart_sps_env.rx。回调=回调;
//启动数据事务uart_rec_data_avail_setf (1);/ / = SetBits16 (UART_IER_DLH_REG ETBEI_dlh0 1);}
我没有找到任何键盘输入。由于我想修改这个项目,使用非常小的,由MCU产生的周期性数据集来代替键盘输入的数据。(只是生成一个信号来模拟真实的数据),我需要知道数据读UART..
你能给我一些提示吗?谢谢!
如果这个问题能够得到回答,它将对我现在正在进行的项目有帮助。
你说的是键盘数据在通过BLE发送之前还是之后?对于Dialog来说,这可能是一个更好的问题,因为我没有花太多时间在SPS上,我为我的应用程序创建了一个自定义配置文件。
抱歉,我想说的是对话。我已经开始了我自己的话题,考虑一个有更多的问题给他们!是的,我只是想知道在代码中键盘数据是在哪里接收的,因为我在他们的例子中找不到它,这不是我们在项目中直接需要的东西,但我很好奇。
嗨NRenney,
如果我正确理解了这个问题,因为显然有一点混淆。您想知道从DSPS中UART接收的数据存储在哪里?从UART接收到的数据被放置在peripher_to_ble_buffer Ring缓冲区中(位于指向data_ptr成员的地址处)。
由于MT_dialog
嗨JBaczuk,
无法找到应用说明的资源链接!你知不知道有关申请须知的名称?那对我有很大帮助!
提前谢谢。
BlueSDK18
嗨BlueSDK18,
我假设你感兴趣有一个演示使用通知将发送数据中心,在这种情况下ble_app_peripheral已经证明,只写一个0 x01控制点特点和ADC 1上启用的通知为了开始数据值。在“教程”一节中也有一个教程,它将帮助你定制已经存在的自定义配置文件。您所引用的链接非常旧,并且链接到的文档很可能已经过时并从支持站点中删除了。
嗨MT_Dialog,
谢谢你对我问题的回复!答案是我需要知道的。
你好,
我建议实现一个定制服务来移动传感器数据。据我所知,你的传感器数据是周期性传输的谨慎数据集。应用笔记http://support.dialog-semiconductor.com/download/file/fid/885在一步一步的教程中介绍了如何构建自己的自定义服务。应用笔记还描述了如何设置通知,允许设备在数据变化时向智能手机发送数据。DSPS使用相同的基本方法(通过GATT的通知),对于需要流数据以非常高的数据速率传输的系统来说,它是一个很好的候选者,但对于区分数据包的周期性传输来说,它不是最好的候选者。使用自定义服务也使得实现应用程序的智能手机端变得更加容易。
好的,我去看看。是的,你是对的,它们将是非常小的,周期性的数据集,所以高数据流是不需要的。
亲爱的JBaczuk,
新手的问题。你知道在SPS项目中哪里可以找到键盘输入的数据吗?我注意到uart_rx_callback()可以实现如下所示的函数及其定义
****************************************************************************************
* @brief接收回调函数将处理传入的uart数据
*
* @param[in] res (status: UART_STATUS_OK, UART_STATUS_ERROR, UART_STATUS_TIMEOUT)
*
* @return没有
****************************************************************************************
*/
Static void uart_rx_callback(uint8_t res, uint32_t read_size)
{
//从uart中调用函数
如果(res = = UART_STATUS_OK)
{
app_uart_push (rx_read_pointer RX_CALLBACK_SIZE rx_state_ptr);
}
//调用uart超时isr
else if(res == UART_STATUS_TIMEOUT) / /设置静态状态
{
app_uart_push (rx_read_pointer read_size rx_state_ptr);
}
其他的
{
(1);//从未知源调用回调函数
}
/ /我觉得回调
uart_sps_read(rx_read_pointer, RX_CALLBACK_SIZE, &rx_state_ptr, &uart_rx_callback);
我跟踪了uart_rx_callback()中的uart_sps_read(),它的定义是:
Void uart_sps_read(uint8_t *bufptr, uint32_t size, uint8_t *state, Void (*callback) (uint8_t, uint32_t))
{
/ /检查
ASSERT_ERR (bufptr ! = NULL);
ASSERT_ERR(大小! = 0);
ASSERT_ERR (uart_sps_env.rx。bufptr = = NULL);
//准备RX参数
uart_sps_env.rx。大小=大小;
uart_sps_env.rx。bufptr = bufptr;
uart_sps_env.rx。=状态;
uart_sps_env.rx。回调=回调;
//启动数据事务
uart_rec_data_avail_setf (1);/ / = SetBits16 (UART_IER_DLH_REG ETBEI_dlh0 1);
}
我没有找到任何键盘输入。
由于我想修改这个项目,使用非常小的,由MCU产生的周期性数据集来代替键盘输入的数据。(只是生成一个信号来模拟真实的数据),我需要知道数据读UART..
你能给我一些提示吗?谢谢!
如果这个问题能够得到回答,它将对我现在正在进行的项目有帮助。
你说的是键盘数据在通过BLE发送之前还是之后?对于Dialog来说,这可能是一个更好的问题,因为我没有花太多时间在SPS上,我为我的应用程序创建了一个自定义配置文件。
抱歉,我想说的是对话。我已经开始了我自己的话题,考虑一个有更多的问题给他们!
是的,我只是想知道在代码中键盘数据是在哪里接收的,因为我在他们的例子中找不到它,这不是我们在项目中直接需要的东西,但我很好奇。
嗨NRenney,
如果我正确理解了这个问题,因为显然有一点混淆。您想知道从DSPS中UART接收的数据存储在哪里?从UART接收到的数据被放置在peripher_to_ble_buffer Ring缓冲区中(位于指向data_ptr成员的地址处)。
由于MT_dialog
嗨JBaczuk,
无法找到应用说明的资源链接!
你知不知道有关申请须知的名称?
那对我有很大帮助!
提前谢谢。
BlueSDK18
嗨BlueSDK18,
我假设你感兴趣有一个演示使用通知将发送数据中心,在这种情况下ble_app_peripheral已经证明,只写一个0 x01控制点特点和ADC 1上启用的通知为了开始数据值。在“教程”一节中也有一个教程,它将帮助你定制已经存在的自定义配置文件。您所引用的链接非常旧,并且链接到的文档很可能已经过时并从支持站点中删除了。
由于MT_dialog
嗨MT_Dialog,
谢谢你对我问题的回复!
答案是我需要知道的。
BlueSDK18