Delphi 10.4 社区版安卓下蓝牙的一个问题

delphi 蓝牙 TBluetoothLE delphi 蓝牙 TBluetoothLE、TBluetoothLEManager BLE http://docwiki.embarcadero.com/RADStudio/Seattle/en/Using_Bluetooth_Low_Energy 指定UUID HRSERVICE: TBluetoothUUID = '{0000180D-0000-1000-8000-00805F9B3... 阅读详情

蓝牙控件有这么一个方法:

var

ACharacteristic: TBluetoothGattCharacteristic;

ACharacteristic := BluetoothLE1.GetCharacteristic(AService, My_Characteristic_ID); 

但是,这个方法可能会返回 nil,不是这个 ACharacteristic 不存在,而是一个 bug。这个 bug 在 Delphi 10.3.3 社区版就存在,10.4 还在。

在执行上述方法获得一个 TBluetoothGattCharacteristic 对象之前,必须执行这段代码:

  for i := 0 to  AService.Characteristics.Count -1 do
  begin
    if AService.Characteristics[i].UUID = My_Characteristic_ID then
    begin
      ACharacteristic := Aservice.Characteristics[i];
      Break;
    end;
  end;

通过一次循环后,再次使用 BluetoothLE1.GetCharacteristic 这个方法,就能获得正确的结果了。

既然循环能获得结果,不循环不能获得结果,那么,这个方法存在的意义是什么?不如需要的地方,直接使用循环就好了。所以,这应该是一个 bug。

Delphi 经典蓝牙(android)控件演示APK 1. Delphi 精简蓝牙(android)控件演示APK 2. 可以直接使用,连接任何经典蓝牙设备并首发数据 立即下载

相关推荐

delphi 蓝牙VCL——BlueToothFramewor,有demo

delphi的蓝牙控件,有示例可操作研究一下是怎样进行连接通信的。也可用于红外,串口通信。

Delphi 的 Blooth LE(蓝牙4.0) 编程原理简介

首先,Delphi 官方的例子程序里面,有BLE的例子,可以先参考。 蓝牙的不同版本:2.0 3.0 4.0 其通讯协议有很大的不同。4.0 就是 BLE,低功耗蓝牙。 以下是我经过自己写例子代码操作蓝牙设备的测试摸索后对BLE蓝牙编程原理的理解。安卓手机上测试通过。 Delphi 提供了BLE的控件:TBluetoothLE 拖一个控件放到界面上,设置控件的 Enable 为 T

pcplayer的博客 6559

Delphi经典蓝牙控件(android版)源代码

1. Delphi 经典蓝牙控件(Android)源代码 2. 直接可以连接经典蓝牙设备 3. 包括说明文件 4. 包括演示文件的源代码

【Delphi】经典蓝牙控件(Android)

在用 Delphi 开发手机APP的时候,肯定会遇到使用蓝牙功能,蓝牙按照发展版本不同,区分为经典蓝牙和低功耗蓝牙,本文介绍的是经典蓝牙的Delphi控件,由于IOS没有开放经典蓝牙功能,所以本文讨论的只是Android的经典蓝牙控件。 开发蓝牙功能的时候,需要调用一些列的函数,比较繁杂,于是我们就将这些功能封装成控件,控件只提供简单的2个属性,8个函数和一个事件就可以立即使用手机的经典蓝牙功能。 控件源说明及代码下载(源代码位于2.5中) 控件Demo下载(APK) 全部源代码(...

sensor_WU 博客 3034

delphi 蓝牙插件及例子demo

压缩包里是BlueToothFramework插件和例子demo。 插件安装方法是把source里的所有文件放到delphi的lib文件夹下面, 注意是把里面的文件而不是source文件夹。 然后执行对应的版本dpk就可以安装了。 demo是例子,把所有bf插件都用上了。想用什么要自己往外摘了。。 自己写的个简单的例子。只用到了bfclient。 我也只用到了它。记得设置uuid。

delphi xe10 蓝牙串口通讯DEMO

通过delphi xe10 的标准串口协议进行通讯的例子,很好用的demo

Delphi 10.4 社区版的动画有 BUG

做了个简单的小程序,主要功能有蓝牙。放了一个 TCircle 在上面,给它增加了一个 TColorAnimation 用于接收到蓝牙数据的时候,变化颜色闪烁,作为接收到数据的提示。 在 WIDNDOWS 底下运行正常; 在 Android 32 底下运行正常; 在 Android 64 底下运行,过几分钟就会出现异常提示:raised exception class Segmentation fault (11).,然后程序就崩溃了。 以为是蓝牙部分导致的问题,彻底把蓝牙部分的代码屏蔽掉,问题依旧存

pcplayer的博客 504

delphi xe android 蓝牙扫描

自己写的ble 蓝牙检索程序,用于寻找蓝牙的服务uuid 和特征uuid

蓝牙的一个 bug

Delphi 10.4.2 社区版。 TBluetoothLE 控件,启动蓝牙设备扫描后,有两个事件: 1. OnDiscoverLEDevice;发现一个设备也触发,因此会不停地触发。 2. OnEndDiscoverDevices;扫描结束触发。 什么是扫描结束呢?因为启动扫描是: BluetoothLE1.DiscoverDevices(ScanningTime); 所以,应该就是ScanningTime 这个时间到了。可以理解为扫描动作的超时值。 但是,在 WINDOWS 底下,这.

pcplayer的博客 675

HC08ble_hc08安卓10_hc08蓝牙通讯_蓝牙DELPHI_delphible_delphi10蓝牙_

delphi 10下HC08蓝牙通讯程序,支持安卓和ios平台

基于STM32的半导体制冷片温度控制

制冷片温度控制,温控范围15℃~45℃,本人菜鸡一枚,大佬绕路。 #include "stm32f10x_gpio.h" #include "relay.h" void relay_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//Ê...

大白兔的博客 9015

安卓蓝牙打印XE10资源介绍:安卓蓝牙打印解决方案

安卓蓝牙打印XE10资源介绍:安卓蓝牙打印解决方案 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在移动设备开发领域,特别是在安卓平台上,蓝牙打印功能一直是一个挑战。安卓蓝牙打印XE10项目,正是为解决这一痛点而生的开源解决方案。它为开发者提供了一个高效、稳定的蓝牙打印框架,适用于Delphi XE10开发环境,让安卓设备的蓝牙打印变得更加简单。 项目技术分析 安卓蓝...

gitblog_06717的博客 635

UFS Link Startup全流程解析:从硬件初始化到链路稳定的5个关键阶段

本文详细解析了UFS Link Startup的全流程,从硬件初始化到链路稳定的5个关键阶段,包括初始化阶段、数据通道发现、数据通道重新对齐、链路启动收尾和能力交换阶段。通过时序分析、代码实现和实际案例,帮助开发者掌握UFS协议链路启动的技术细节,确保设备与主机之间的可靠通信。

weixin_30687051的博客 430

Delphi 11 安卓的蓝牙权限申请

上一篇博客里面的代码,演示如何申请安卓的权限。

pcplayer的博客 970

stm32f407等芯片(HAL库)时钟频率修改(乱码)

其他片子及库文件未知、未验证,只是在使用stm32f407ZG配置串口打印的时候,出现乱码,就从以下几方面定位问题: 1. 确认串口GPIO相关配置; 2. 确认波特率等参数; 3. 确认时钟频率; 结果这次使用YH的串口打印程序在ZDYZ的开发板调试项目工程(有点另类...),做功能验证,就出现了以上问题,出于好奇开始调试,最终发现是时钟频率问题。 看到下图这个配置,因为ZDYZ开发板使用的是8MHz外部晶振(好像默认的是25MHz,如图2),所以他这里PLL_M是25,不是推荐值,感...

bulefire2009的博客 5515

人工智能训练师技能等级认定四级技能考核试卷-样题4

本文为人工智能训练师四级技能考核试卷,包含六个实操考核项目,总时长150分钟。考核内容涵盖:1)车牌数据集规范评估与格式处理;2)车牌数据集采集代码修改与数据处理;3)房价预测数据集加载、预处理与可视化分析;4)车牌标注数据集审核与修正;5)螺丝螺母检测数据集的平台创建与共享;6)螺丝螺母数据的去噪处理与标注优化。要求考生使用Python编程、数据处理平台和标注工具完成各项任务,重点考察数据加载、格式转换、缺失值处理、数据可视化、标注审核及平台操作等技能。所有操作需在配备Python3.7和深度学习平台的W

weixin_42221934的博客 348

Delphi 10.4.2 社区版开发的 APP 在 Google play 发布成功

这个 APP 在 Google Play 的地址: 蓝牙食品温度计APP地址点这里 简单说明 1. Google Play 的发布,目前有一些新的要求。按照网上搜索出来的资料去做。没什么问题。这里对我来说有两个要求是需要特别投入一点工作的: 1.1. 目前发布,必须是 AAB 文件而不是 APK 文件; 1.2. 目前发布,必须是 Android API level 30,但 Delphi 10.4.2 只支持到 29;我前面有文章提到如何做。 2. 需要写一份隐私政策文件。 发布后,等了

pcplayer的博客 1071

AI赋能传染病建模:从数据到动力学模型的本地实践指南

这次我们来看一个将 AI 与传染病动力学建模结合的前沿方向。想象一下,你手头有一份流感爆发的病例数据,传统的建模方法可能需要复杂的微分方程和大量的手动调参,而 AI 模型能否直接从数据中“学习”出传播规律,甚至自动跑通整个建模流程?这正是当前研究的热点。根据《Nature》的最新综述,人工智能正在重塑传染病流行病学建模,从参数推断、趋势预测到多源数据融合,AI 技术为解决传统建模中的计算瓶颈和数据难题提供了全新路径。 对于开发者、数据科学家或公共卫生领域的研究者而言,最关心的是:这套方法能不能在本地跑起来?

weixin_29051811的博客 298

delphi android 蓝牙,Android实例-Delphi开发蓝牙官方实例解析(XE10+小米2+小米5)

【实例简介】2.保证无毒3.简单,方便,实用4.实例可以自行改用5.如有非法,本人无法律责任,由改动代码人负责!6.需要更多本人作品,查找标签“朱建强”7.请下载,杀毒后再使用!【实例截图】【核心代码】Android实例-Delphi开发蓝牙官方实例解析(XE10小米2小米5)├── AndroidManifest.template.xml├── Android实例-Delphi开发蓝牙官方实例解...

weixin_39995351的博客 714

多机器人编队人工势场法协同避障算法原理及实现

ROS及SLAM进阶教程(十一)多机器人编队人工势场法协同避障算法原理及实现避障算法原理避障算法仿真 多机器人协同编队需要将理论和实践紧密地结合起来,其应用包括编队队形生成、保持、变换和路径规划与避障等等都是基于图论的理论基础完成的。 详细请参考ROS及SLAM进阶教程(八)多机器人协同编队算法原理及实现 自主避障功能是机器人编队在各种环境中保持自身安全的重要功能,在编队的基础上加入避障的功能,机器人可扫描到一定范围内的障碍物(包括其他机器人),在即将与之发生冲突时提前规避冲突,以保证自身的安全性,同时

Redglass的博客 1万+

2026年职业院校技能大赛中职移动应用与开发—数字生活APP原型设计参考答案(含素材)

本模块以产品原型为目标,考查参赛选手熟练收集、分析和归纳客户需求,清晰梳理业务流程,熟练使用UI设计软件进行产品UI/UE设计,掌握正确的UI配色方案,设计出符合业务逻辑的人体工学移动App 原型优秀作品。

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 568

Delphi 7到Delphi 10.4.1代码迁移实战:关键挑战与解决方案

本文详细探讨了从Delphi 7到Delphi 10.4.1的代码迁移实战,重点分析了跨平台兼容性、64位迁移、Unicode字符串处理等关键挑战,并提供了实用解决方案。文章涵盖VCL与FMX框架选择、第三方组件处理、数据库迁移等核心问题,帮助开发者顺利完成现代化新版本迁移,提升开发效率和代码质量。

weixin_30555125的博客 508

使用 MATLAB/Simulink 构建一个基于PID控制的直流电机速度调节系统模型

直流电机(DC Motor)因其结构简单、成本低廉、易于控制等特点,广泛应用于各种工业自动化和家用电器中。PID控制器作为最常用的控制策略之一,在直流电机的速度调节系统中具有重要应用价值。通过合理调整比例(P)、积分(I)、微分(D)三个参数,可以实现对电机速度的精确控制。本教程将带你使用构建一个基于PID控制的直流电机速度调节系统模型,涵盖电机模型构建、PID控制器设计、系统仿真与调试等多个方面。本文介绍了如何使用构建一个基于PID控制的直流电机速度调节系统模型。

amy_mhd的博客 217

Android实例-Delphi开发蓝牙官方实例解析(XE10+小米2+小米5)

    相关资料:1.http://blog.csdn.net/laorenshen/article/details/411498032.http://www.cnblogs.com/findumars/p/5149128.html   一、理清概念1.蓝牙设备:是指代有蓝牙通信的手机、电脑、平板、打印机、耳机等。2.设备名称:是指设备打开蓝牙功能后,在其他设备中显示的名字,如图1用的...

weixin_34293911的博客 1147

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

DELPHI XE Android 开发笔记

DELPHI XE Android 开发笔记 第一次编译时,设定android SDK: F:\RAD Studio XE6\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk F:\RAD Studio XE6\PlatformSDKs\android-ndk-r9c C:\Program Files\Java\jdk1.7.0_40 SD...

qq_27702861的博客 2301

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

delphixe 安卓 android操作 打电话,摄像头,定位等

XE6 不支持JStringToString、StringTojString、StrToJURI:use Androidapi.Helpers //Splash Image Delphi XE5,XE6,XE7编译的程序在Android下启动会有一段时间黑屏,以前需要用Java扩展Activity增加Splash显示, 现在Delphi XE7增加了Splash Image显示功能了。 步骤: 1...

yygyyygy1233的博客 1272

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: Delphi 10.4 社区版的 WebBrowser 在安卓下的问题
下一篇: FireMonkey 使用剪贴板
pcplayer
博客等级 码龄26年 633粉丝 284原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值