好,大家好,呃,基于之前咱们为大家讲解过如何去使用使用这个 h b c i 跟 open b h b b c i 的一些相关的一些知识,然后这一节呢为大家去分享如何使用, 如何使用这个 usdk 的。然后就是一个拍审安拍审安装包的形式去获取脑电数据跟互联网电数据。 然后首先我们看第一个 demo, 然后我们这里会引入一个 brainflow 的,然后我们再给大家分享的资料里面会有这个 brainflow 的一个安装包,安装的形式也很简单,各位大 大家分享过,然后就放在拍审的一个安安装包的一个呃,包里面放,放在里面就可以了,然后就这样去做引入脚本,到时候我们会给到大家。 然后我们看第一个 demo 的就是我们去建立一个连接,建立一个连接以后,这里有几个参参数要大家去做设置的。 第一个首先是 ip, 就是 ip, 就是我们在硬件上面显示的 ip 地址,然后我们是局网的 ip 地址。第二个是端口,端口是指我们电脑上面那个端口,一般九五二七,九五二八这样子的一些端口都可以。 然后再就是一个 bot id, bot id 是指我们的一个设备型号,因为我们对于脑对于我们这边提供的一 一个设备有五通道,有八通道的,有十六通道的,有三十二通道跟六十四通道的,所以我们对应不同的 id 会对链接到不同的型号,我们这一次用到的是 八通道,所以我们选拨了 id 是五,如果十六通道的就是五幺六三十二通道的就五三二,然后六十四通道的就五六四, 好吧,然后当我们这些参数整理好以后呢,我们就初始化一个对象,然后建立一个连接,如果如果建立连接以后就可以输出,然后我们就可以这个指令就是 就是硬件开始采集数据,然后我们等待三秒钟,然后结束数据,然后把数据获取出来,然后存在一个文件里面。注意这里我们 去做数据获取的时候,因为拍成有缓存词的大小,一个大小的,所以在这里的时候,这里我们会有两有两种方式,第一种方式是我们用 咦是是大的,这里会有一个文件的一个写,直接写一个文件的形式。第二个方式是我们在进行一分钟或者两分钟的时候进行是数据的获取,这两种方式都可以,但是如果一直去做存储的话,然后内内存缓存会 会溢出,后面的数据就无效了,程序会报错。是,所以这里大家注意一下,然后这个地方是获取一个,就是我们我们下面会讲到如何进行打标,这里就是我们获取打标的一个圈圈呢,就是我们的数据, 等一会我们去看数据,数据的一个打标的 channel 是在哪里,然后我们打印出来,然后我们打标,然后 channel, 呃,通过这个数据的某一个某一个通道,然后获取他的打标信息,然后输出出来。 ok, 我们现在去运行一下, 好三秒以后,然后我们就可以获取到,然后因为我们默认的数据打标的数据是零,每一条数据后面都会跟一个零,当我们进行打标的时候,他就会这里从零会变成一个其他的,所以当我们 进行要进行打标的时候,就不能不能打标为零。然后我们的一个通道是在二十二通道,看一下我们这里的一个数据的通道呢,是有四 二十四,就是呃行有列,有二十四列,有二十四列,然后第二十二列就是在倒数第二列 是我们的一个打标信息前面的一些信息,第一个是自然的一个叠加,第二个是一二三四五六七八, 然后一二三数,一二三四五六七八,这八个是我们八通道后面是我们去预留的一些数据,为大家以后做一些扩通,然后我们的功能去做叠加预留的数据,所以这个文件格式就是这样子的。 ok, 我们看第二个我们去实时的获取数据,然后然后去打印,就是在我们的有一些需求里面,那 我们会实时的会获取,然后对于知识做判断这些,然后我们如何去做,然后这里给大家做了演示,打开 它的核心是有一有一个它的核心就是这么一个函数,我们去获取,我们去这里我们的 ip 二幺九 ip 要改一下,改成我们的 ip, 然后地址,然后这里的这个时间我们可以默认,然后这里的 ip 地址, 然后我们后面会为大家讲到一个如何进行一个如何进行一个那个产量率的改变,因为我们默认的产量率是一千赫兹, 然后我们可以改成五百赫兹或两百五十赫兹,然后这里还是一样的我们的 ip 端口,这些前面的都是不变的,就是我们如果要实时的进行数据采集的时候, 然后我们加上这么一句函数,就是我们在这里一秒钟把数据采集一下,然后打印一下它的 它的长度。但是我们最后这里的数据,它是不不会进行一个数据,在缓存词里面拿出数据的,但是我们前面这里会有一行数据,对吧?然后这个 是获取所有的数据,当我们这里获取所有的数据以后呢,是把我们之前进行老店采集的一个一个数据在缓存词里面全部拿出来,拿出来以后那个缓存词里面就没有了。然后这一段函数呢是指我们当前 目前这个时刻,然后要从这个时刻往前获取多少多少长度,他这里是长度,然后我们时间乘以我们的产量率,就是一个数据的一个长度了。 好比如说我们要两秒的数据的时候,然后我们乘以一千一千赫兹就是两千的成长率,好吧,我们大概 find, ok, 这里就是两千赫兹,呃,两千的一个数据,没有两千赫兹就一千赫兹两秒, 然后我们这里就不断的打印,然后这里的数据咱们做实时检测做什么的就可以去在这里去处理了。 ok, 然后这个是实时 检测的一个,当我们拿到实时检测以后呢,可能会要进行一个波形的一个绘图,这里会有给大家展示一下如何进行一个波形。我们拿到实时的数据以后进行波形波形的一个绘制, 我们还是这样的,然后我们设置,当然这个波形呢,我们只是为大家去做了一个绘制,但是具体怎么绘一个脑电图啊?然后大小是怎么样的?大家可能要根据自己 的一些拍摄的一些其他的绘图软件,然后进行一些调整,然后这里我们会加了几行,然后就是我们要有一个滤波,因为如果不滤波的话,那 个数据很看起来很奇怪,所以我们加了两个,一个滤波,一个带通滤波,一个带主滤波,就是我们滤除五十赫兹的公平干扰跟三十到三到四十五赫兹的一个老店,这里是做了一个机械漂移的一个校正,好吧,然后这里 okay, 这里就是我们在一一直在画画一个脑电的一个图,当然当然这里的脑电图也不不太对,然后我们会有会 要进行一系列的处理,然后大小啊,然后这些进行处理以后才能画的比较像样, ok, 然后这就是我们的一个画图 涂完了以后,然后这边是我们的一个打标跟数据,打标的时候我们刚刚给大家讲过,我们之前给大家讲过呢,就是在我们的 channel 呢, cha channel 那边呢,会有一个 呃,获取获取这个 channel, 然后播了 id 的时候获取 channel, 然后我们把数据存到这里,存到这里,然后我们在 给大家说一下,就是打标的时候,我们最重要的是这个函数,当我们在上面进行十年化以后,我们要在哪个地方打标,就就进行这个函数的一个调用, 然后我们打标的信息要非零我们都可以去,我们在某项任务的开始打标为一,某项任务的结束我们打标为二,这样子来进行一个, ok, 我们运行一下给大家看一下,好吧,然后我们还是一样的需要把这里的 ip 修改一下,然后这里的一个 id 修改一下, ok 啊,我们这里进行一个打标。 ok, 我们这里打标以后呢,这里一个 mark, 我们这里存取的信息就是这样子的,然后存取信息呢,我们拿到最后倒是第二年,对吧?我们看一下,应该是有一个, 有一,这个一二三四五六七八,这里数据太多了,然后可能看不看不见,然后 我们在这里我们看直接看这个程序,然后我们在程序的时候,我们去获取这个打标的信息,他为非零的时候,我们把这个 level 就一去做便利,便利的时候我们当他非零的时候进行一个输出,输出输出在这里,然后我们获取一个,比如说我们要获取七百毫米, 这就是在这个时刻打标的这个 id, 然后往前往后加七百毫米,获取到一个七,如果我们往前就是 index 在这这这个地方, index 在前面,距 index 减七百的,就是打标的信前跟打标后要一个信息, 要一个数据,一个脑电的一个数据,然后我们结束以后呢,我们就进行一个数据的一个一个释放,然后断开连接, ok, 打标这里,然后我们做副列变换跟功率谱的一个变化,然后副列变换,就是说我们当我们采集到一些数据以后呢,我们要进行一个处理 啊,这里呢也为大家介绍一些 s d k, s d k, 我们集成了比较啊,当然我们有一个文档的,我们也是会发给大家,就最基础的用法来说,我们会进行一个滤波,然后进行一些 进行一些奔 pass, 一些滤波等一系列的方法,然后这个地方我们就没有为大家去洗,我们拍下一个吧, 下一个会有一个公里补的一个计算,前面那个 demo 没有写完,这里对 这个地方呢就是我们获取到信息以后,我们进行一个极限漂移,极限漂移然后去除公平干扰,五十赫兹的公平干扰跟六十赫兹的公平干扰,不同的国不同国家有不同国家的一个公平,所以这里这里我们没有必要去去除六十赫兹的一个公平, 然后我们获取了 psd, 然后这里一个信息让我给大家不理解, ok, 刚刚在这里我们就会报错,为什么呢?因为我们这里的 ip 地址跟我们的一个 id 不对,对吧? 然后这里就会一直卡在这里,当如果大家去运行脚本的时候,发现这里 a 不对,然后然后我们会看到这里这里会有 i p a 的 dress, i p a 的 dress, 这个地方就是我 输入要去发送给硬件的一个 ip, 要建立一个 tcp 的一个连接,然后我们发现有这么样的一个报错,那有有几种可能,第一就是我们没有连接, 没有连接同一个 wifi, 没有连接同一个 wifi, 他的 ip 地址找不到。第二就是我们的一个 ip 地址也不对。还有一种呢就是我们 进行一个数据连接好了,但是我们没有数据,我们获取不到数据,就是我们到这里我们发现这里的数据都会空,做了好好久的时间发现都会空,那你一个, 那你一个问题就是就是咱们的问题就是在于说这里的报的 id 跟咱们用的硬件的型号没对应上,所以这这里几个问题一定要一定要注意一下,让我们这里运行 啊,我们等待十秒钟,十秒钟他就可以绘制一个,对,他就可以绘制,然后我们保存的数据。 a, 哦,这里我们没有做数据保存, 我们在这里 啊,我们这里呢插进行了一个数据的一个你,你就应该绘制一下, 咱们就应该绘制一下这个,你绘制应该还要有一个地方, 咱们就是绘制完了要画一下这个图为咱们前面没有保存,所以这里的数据没有,这里要注意一下,所以当我们采集完数据以后一定要保存。 ok, 十秒以后我们等待, 对,这里就有一个啊,我们这里绘制的一个数据,然后但是我们可能前面的会比较奇怪, 让我们从十开始,然后这里十开始的时候速度就看到会比较正常一点,因为零赫兹那个线漂移都会比较大,这个重新开始 我们再来进行。 ok, 我们等待十秒钟,他采集十秒的数据, 这里好像就没有数据,就是太小了,因为我们现在的一个呢,一个数据是我们没有空接的,所以这里的数据就没有。然后在大家进行一个绘制的时候呢啊,可能 ft 的时候它是没有什么数据给大家这里注意,哎,我们这里给大家哦,刚刚为大家讲的时候漏奖了一点,就是我们这里可以直接设置产量率的,产量率呢是在这里会有一这么一个函数, 就是我们在这个地方可以去, 我们可以等于一千赫兹,也可以等于两百五十赫兹,或者等于五百赫兹, 我们看这里,这里就是一千赫兹,我们默认给的是一千赫兹,所以两百五十赫兹,五百赫兹,这是改变一个太阳率,我们改变一个太阳率,还有一个方式是我们去 进行一个数据的一个,我们进行一个数据的一个保存,数据的保存有几种形式,首先第一个就是为大家讲到的 讲到的去获取,去直接通过报的 id 进行一个获取,还有一种方式,还有一种方式是进行一个 稍等,我把这个函数为大家找我们刚刚讲到了如何进行一个数据的一个采用率,然后我们在这里有个 starts, start, 呃, start stream, 就是我们开始采集数据,然后我们有一个函数是这样子的,然后我们写一个文件,文件这个呢是根据我们自己的一个相对地地址来的, 然后这个保存的是 c s v 的格式,然后前面是一个 buffer, 就是我们的缓存区,当我们的脑电的数据的缓存区多大以后,我们把数据存存起来,然后这个地方呢就是我们 我们如果不想进行那个就是我们从 ball data 直接获取这段函数,我们从缓冲区一直拿的话,那我们就可以自动的把我们的脑电数据保存在这个文件里面, ok, 这就是我们所有的一个脑电的 大大概的一个一,这就是我, ok, 这就是我们为大家讲解的基础的 s, d, k 的一个用法,然后大家可以参照我们的一个这个 demo, 然后进行一个一个脑电的一个前 记得 passion 的一个获取数据的一个获取,谢谢大家。然后呢在实验结,实验之最后呢我们还是会为大家去推荐一下,推荐一下我们的一个淘宝店。 对,我们的淘宝店在这里我们大家可以搜一个,搜一个全家模特, 搜一个这样的一个关键词,我们就可以看到我们的一个淘宝店铺,淘宝店铺我们有一些 基础的一些脑电帽,为一些电,一些电极和我们的设备,如果大家有需要的可以联系我们,好吧?谢谢大家。