浏览网络发现在宝岛台湾的一些网站有很多有趣而且质量高的博客,特意搬过来和大家一起分享学习下。





QCC512x 与QCC302X基于ADK6.X 的蓝牙系列设备信息修改,可以用BlueSuite3,当前安装的是BlueSuite 3.2.1 ,可以cd C:\Program Files (x86)\QTIL\BlueSuite 3.2.1 运用CMD 命令

cd C:\Program Files (x86)\QTIL\BlueSuite 3.2.1。

详见 ADK6.X  configcmd  命令。   如果量产的话需要运用BlueSuite 库来写量产工具,可以参阅BlueSuite 安装路径下的文档,此处用TestEngine 的库运用C++语言程序来修改设备信息

image.png

1、开发环境设置

开发环境:C++(Microsoft Visual Studio)

头文件:TestEngine.h

库文件:TestEngine.lib

运行环境:Windows 系统,TestEngine.dll 相关DLL,为了使得工具能够运行,可以把TestEngine.dll 相关DLL所在文件夹路径:C:\Program Files (x86)\QTIL\BlueSuite 3.2.1,设置成Path环境变量,这样工具程序就可以动态调用DLL相关库运行了。

image.png

2、开发流程

打开Microsoft Visual Studio 集成开发环境,新建à Win32-> console application,输入Project名BT_Info_Mag,选择console application—>Empty project->Finish 确认。

添加 BT_Info_Mag.cpp,代码如下:
  1. #include "include\\testengine.h"
  2. #include
  3. #include
  4. #include
  5. #include
  6. #include
  7. #include
  8. #include
  9. #include
  10. #include
  11. using namespace std;
  12. char _pskey_bdaddr_[]  =  "{0xff03,0x5B,0x02}";//蓝牙地址
  13. char _devicename_[] = ""QCC302X-Self_Left"";//蓝牙名字
  14. uint32 iHandle(0);
  15. uint16 maxLen(256);
  16. uint16 count(0);
  17. static const char* const CFG_DB_PARAM = "hyd.sdb:QCC512X_CONFIG";
  18. int main(int argc, char** argv){
  19.     uint32 iHandle = 0;
  20.     cout << "Trying to connect..." << endl;
  21.     iHandle = openTestEngine(TRB, "1", 0, 5000, 0);
  22.     //iHandle = openTestEngine(USBDBG, "1", 0, 5000, 0);
  23.     if(iHandle != 0)
  24.     {
  25.          cout << "Connected!" << endl;
  26.          // Perform all your testing here
  27.          // Initialise the configuration cache
  28.          int32 success = teConfigCacheInit(iHandle, CFG_DB_PARAM);
  29.          // Read the configuration into the cache from the device
  30.          uint16 unused = 0;
  31.          if (success == TE_OK)
  32.          {
  33.              success = teConfigCacheRead(iHandle, NULL, unused);
  34.          }
  35.          else
  36.          {
  37.              cout << "teConfigCacheRead failed!" << endl;
  38.          }
  39.         
  40.          // Write Bluetooth address
  41.          if (success == TE_OK)
  42.          {
  43.              success = teConfigCacheWriteItem(iHandle, "bt15:PSKEY_BDADDR", _pskey_bdaddr_);
  44.              if (success != TE_OK)
  45.              {
  46.                   cout << "curator15:PSKEY_BDADDR returned error" << endl;
  47.              }
  48.              else
  49.              {
  50.                   cout << "curator15:changed PSKEY_BDADDR, successful " << endl;
  51.              }
  52.          }
  53.          // Write Friendly name
  54.          {
  55.              success = teConfigCacheWriteItem(iHandle, "bt15:PSKEY_DEVICE_NAME", _devicename_);
  56.              if (success != TE_OK)
  57.              {
  58.                   cout << "curator15:PSKEY_DEVICE_NAME returned error" << endl;
  59.              }
  60.              else
  61.              {
  62.                   cout << "curator15:PSKEY_DEVICE_NAME successful " << endl;
  63.              }
  64.          }
  65.          if (success == TE_OK)
  66.          {
  67.              success = teConfigCacheWrite(iHandle, NULL, unused);
  68.          }
  69.          {
  70.              char value[1000];
  71.              uint32 maxLen;
  72.              success = teConfigCacheReadItem(iHandle, "bt15:PSKEY_BDADDR", value, &maxLen);
  73.              if (success != TE_OK)
  74.              {
  75.                   cout << "curator15:PSKEY_BDADDR failed" << endl;
  76.              }
  77.              else
  78.              {
  79.                   printf("BT Add:%s",value);
  80.                   cout << "curator15:PSKEY_BDADDR successful " << endl;
  81.              }
  82.          }     
  83.          //////readout the Bluetooth Name
  84.          if (success == TE_OK)
  85.          {
  86.              success = teConfigCacheRead(iHandle, NULL, unused);
  87.          }
  88.          {
  89.              char value[1000];
  90.              uint32 maxLen;
  91.              success = teConfigCacheReadItem(iHandle, "bt15:PSKEY_DEVICE_NAME", value, &maxLen);
  92.              if (success != TE_OK)
  93.              {
  94.                   cout << "curator15:PSKEY_DEVICE_NAME failed" << endl;
  95.              }
  96.              else
  97.              {
  98.                   printf("BT Name:%s",value);
  99.                   cout << "curator15:PSKEY_DEVICE_NAME successful " << endl;
  100.              }
  101.          }  
  102.          closeTestEngine(iHandle);
  103.     }
  104.     else
  105.     {
  106.          cout << "Failed to connect" << endl;
  107.     }
  108.     getch();
  109. }


然后把TestEngine.lib 添加进来,就可以编译通过
image.png