QCC512x 与QCC302X无论是基于ADK6.X,还是新的 ADK 架构,蓝牙系列量产所需应用,可以用BlueSuite3,当前安装的是BlueSuite 3.3.5,可以cd C:\Program Files (x86)\QTIL\BlueSuite 3.3.5 运用CMD 命令
cd C:\Program Files (x86)\QTIL\BlueSuite 3.3.5
详见:“ ADK6.X 通过 configcmd 命令查看并修改设备的相应信息”
如果量产的话需要运用BlueSuite 库来写量产工具,可以参阅BlueSuite 安装路径下的文档,
蓝牙耳机与 PC 连接的 Debug端口可以分为 TRB 与 USB 。客户一般关注以下问题:
- 电脑上连接几台耳机设备,(所谓一拖多,一台PC可以连接多台耳机)
- 连接的 Debug端口是什么,TRB 还是 USB
此处用TestEngine 的库运用C语言程序来修改枚举设备Debug端口,可以统计出,连接的耳机数量,以及连接的Debug 端口
1、开发环境设置
开发环境:C++(Microsoft Visual Studio)
头文件:TestEngine.h
库文件:TestEngine.lib
运行环境:Windows 系统,TestEngine.dll 相关DLL,为了使得工具能够运行,
可以把TestEngine.dll 相关DLL所在文件夹路径:C:\Program Files (x86)\QTIL\BlueSuite 3.3.5,
设置成Path环境变量,这样工具程序就可以动态调用DLL相关库运行了。
2、开发流程
打开Microsoft Visual Studio 集成开发环境,新建à Win32-> console application,
输入Project名BT_Info_Mag,选择console application—>Empty project->Finish 确认。
添加 BT_Info_Mag.cpp,代码如下:详见附件源文件,登录即可下载
//BT_Info_Mag.cpp
#include "include\\testengine.h"
#include "include\\TestFlash.h"
#include "iostream"
#include"conio.h"
#include"Windows.h"
using namespace std;
#include "vector"
using namespace std;
#include
#define _Test_Engine_
vector split(const string &s, const string &seperator){
vector result;
typedef string::size_type string_size;
string_size i = 0;
while(i != s.size()){
//找到字符串中首个不等于分隔符的字母;
int flag = 0;
while(i != s.size() && flag == 0){
flag = 1;
for(string_size x = 0; x < seperator.size(); ++x)
if(s[i] == seperator[x]){
++i;
flag = 0;
break;
}
}
//找到又一个分隔符,将两个分隔符之间的字符串取出;
flag = 0;
string_size j = i;
while(j != s.size() && flag == 0){
for(string_size x = 0; x < seperator.size(); ++x)
if(s[j] == seperator[x]){
flag = 1;
break;
}
if(flag == 0)
++j;
}
if(i != j){
result.push_back(s.substr(i, j-i));
i = j;
}
}
return result;
}
int IGetAvailablePorts(vector& ports,vector& trans)
{
int32 status;
uint16 maxLen(256);
uint16 count(0);
char* portsStr = new char[maxLen];
char* transStr = new char[maxLen];
int k=0;
#if defined(_Test_Engine_)
status = teGetAvailableDebugPorts(&maxLen, portsStr, transStr, &count);
while( (status != TE_OK || count == 0))
#else
status = flGetAvailablePorts(&maxLen, portsStr, transStr, &count);
while( (status != TFL_OK || count == 0) )
#endif
{
k++;
printf("teGetAvailableDebugPorts %d 次失败\r\n",k);
Sleep(900);
#if defined(_Test_Engine_)
status = teGetAvailableDebugPorts(&maxLen, portsStr, transStr, &count);
#else
status = flGetAvailablePorts(&maxLen, portsStr, transStr, &count);
#endif
if(k>=6){
delete[] portsStr;
delete[] transStr;
return status&&count;
}
}
#if defined(_Test_Engine_)
if( status != TE_OK && maxLen != 0 )
#else
if( status != TFL_OK && maxLen != 0 )
#endif
{
// Not enough space - resize the storage
delete[] portsStr;
portsStr = new char[maxLen];
delete[] transStr;
transStr = new char[maxLen];
#if defined(_Test_Engine_)
status = teGetAvailableDebugPorts(&maxLen, portsStr, transStr, &count);
#else
status = flGetAvailablePorts(&maxLen, portsStr, transStr, &count);
#endif
}
ports=split( portsStr,(const std::string ) ","); // Use these for user selection (e.g. drop down list)
trans=split( transStr, (const std::string )","); // Use these to open a transport
delete[] portsStr;
delete[] transStr;
#if defined(_Test_Engine_)
return status&&count;
#else
return !status&&count;
#endif
}
int main(int argc, char** argv){
int32 status;//是否枚举出端口
vector m_vPorts; // The human readable port strings (e.g. "USBDBG(100)")
vector m_vTrans; // The transport option strings (e.g. "SPITRANS=USBDBG SPIPORT=1")
status=IGetAvailablePorts(m_vPorts,m_vTrans);
if(status){
printf("DebugPorts:\n");
int i=1;
for(vector::iterator iter1=m_vPorts.begin(); iter1!=m_vPorts.end(); ++iter1 ){
printf("DebugPorts %d :%s\r\n",i++,iter1->c_str());
}
printf("DebugPorts Trans:\n");
i=1;
for(vector::iterator iter1=m_vTrans.begin(); iter1!=m_vTrans.end(); ++iter1 ){
printf("DebugPorts Trans %d :%s\r\n",i++,iter1->c_str());
}
}
}
然后把TestEngine.lib 添加进来,就可以编译通过

3、运行结果
QCC512x 与QCC302X 系列的板子,通过 USB 连上PC, 运行应用程序,能够成功枚举出,所有的 Debug 端口
把 #define _Test_Engine_ 去掉,我们用的就是 TestFlash 的库,与 Test_Engine 类似,运行结果一样!
以上是本篇博文的全部内容,
大大通方案与博文,十分精彩,引人入胜,如果不在登录状态的看官,
大大通则视为“匆匆之过客”很快就“不见庐山真面目”了,
看的正过瘾啊!怎么会这样,急死人了,怎么办?
各位看官!不要着急!只需一个小小的动作而已:登录!
没账号咋办? 很简单,请扫描下面二维码注册
而且还附带小编联系方式,各位看官,如有疑问,
请在博文下方评论留言,或者私信给我,
收到之后会第一时间回复哦,想要了解更多内容,
请多多关注小编与大大通平台,
我们会不断分享最新的热点技术
评论