由于不知道设备MAC地址,先搜索设备,搜索结果存入线性表中,通过下标来获得蓝牙设备[0]、蓝牙[1]...实验室有三个BioRadio无线生理电信号采集设备,只使用一台,所以通过下标[0]获取MAC地址,获取的MAC地址为十六进制的表示的一个string字符串,需要转换成long类型来匹配 设备获取函数,传入long类型的MAC地址后即可获得设备,至此蓝牙设备和电脑连接成功。代码如下:
#using "BioRadioSDK.dll"
using namespace System;
using namespace GLNeuroTech;
using namespace Devices;
using namespace Common;
using namespace BioRadio;
//BioRadioDeviceManager类主要帮助搜索和创建一个BioRadioDevice对象,可以理解为设备管理器
//BioRadioDevice类提供蓝牙连接、configure配置、信号获取的方法
gcroot <BioRadioDeviceManager^> Manager;
gcroot <BioRadioDevice^> Bio_1;//定义第一个神经电设备
//返回一个数组 数组内包含所有被发现的蓝牙设备 每个数组元素包含着自己的设备信息
cli::array<BluetoothDeviceInfo^> ^Bio_List = Manager->DiscoverBluetoothDevices();
//通过下标[0]获得第一个设备的MAC地址
cli::array<wchar_t, 1> ^Bio_1_MacId = Bio_List[0]->MacId->ToCharArray();
//省略把Bio_1_MacId转为long类型
Bio_1 = Manager->GetBluetoothDevice(Bio_1_MacId);
获得设备信息,以便采集数据
获得SignalGroup类的返回类型,SignalGroup包含了设备的诸多信息,比如通道数,各种类型的数据
gcroot <SignalGroup^>SignalGroup;
//The signal group that contains signals from Biopotential sensors, if any are enabled.
SignalGroup = Bio_1->BioPotentialSignals;
点击开始按钮后,By calling StartAcquisition(),The device will then begin streaming signal data to your application. The BioRadio API receives the data from the BioRadio and makes it available to applications using the various Signal groups. Signal groups are collections of signals that share certain properties, such as sample rate or physical location on the device.Each signal group contains zero or more signals, based on the configuration of the device.
Bio_1->StartAcquisition();
//或许这是获得第一通道的信息
Signal_0= SignalGroup->default[0];
//获得BioRadio的采样频率
int SampleRate_0 = Signal_0->SamplesPerSecond;
//转到GetData1()数据处理函数
//调用GetScaledValueArray()获取数据
cli::array<double, 1> ^GetData_0 = Signal_0->GetScaledValueArray();
//存入vector<double> v 中
for (int i = 0; i != GetData_0->length; ++i)
{
v.push_back(GetData_0[i]);
}
后面就是数据处理过程了.
其他用法见:BioRadio API