各自与自己所在板子上的stm32f405通过SPI连接,从机发送简单的随机数,在主机端接收信号。
目前我已经可以实现主机和从机的init和建立连接的过程。我设置从机的CHAR_VALUE_LENGTH=1(我看到有帖子/指导说明说,具体出处记不清了,这里要设置的比实际需要传输的数据长度大3,但是我一开始设置为15,同样不行),通过aci_gatt_add_service和aci_gatt_add_char添加一个characteristics,并在建立连接之后设置LED闪烁,通过aci_gatt_update_char_value发送数据。从机所发送的数据我可以通过手机上的BLE-Scanner接收到,hex这里数据确实是在变化而且确实是我想发送的数据(我暂时还想不明白为什么只能看到hex的形式,但是在value那里却是乱码,不过我猜这个应该影响不大)
在主机端,我已经可以正确初始化设备并且通过aci_gap_create_connection根据已知的从机bdaddr正确建立主从连接(从机端LED有相应的建立连接后的状态响应并且返回状态值BLE_STATUS_SUCCESS)。接着我使用aci_gatt_disc_char_by_uuid和aci_gatt_read_using_char_uuid,但是无法得到从机发送的数据,而且主机的程序也无法进入到aci_gatt_disc_read_char_by_uuid_resp_event、aci_gatt_notification_event这些程序中(我在aci_gatt_notification_event程序中设置了receiveData函数用来传递接收到的数据并进行接下来的处理)。对于characteristics的UUID我在主机和从机的函数中给出的是相同的,没有进行顺序的颠倒(我个人猜测在函数中不需要颠倒顺序,只是在手机中读到的UUID的话要颠倒顺序,不知道对不对)
不知道各位大佬们有没有遇到我的这种问题或者有没有经验能够告知小弟一二,哪里做错了应该怎么解决,非常感谢大佬们的意见和帮助!
|