1.0.1 • Published 4 years ago

ganglion-manger v1.0.1

Weekly downloads
-
License
ISC
Repository
github
Last release
4 years ago

GanglionManager

npm version License Node.js Version

Raspbian Prerequisites

$ sudo apt-get install -y libbluetooth-dev libudev-dev
  • node.js v8.0
  • Python v2.7

Installation

$ npm install ganglion-manager --save

or

$ yarn add ganglion-manager

Example

  • 패키지 Import

    const { 
        GanglionManager
    } = require('ganglion-manager')
  • Instance 생성

    const { 
        GanglionManager
    } = require('ganglion-manager')
    
    const myGanglionManager = GanglionManager.getInstance()
  • 주변 Ganglion Board 정보 검색

    const { 
        GanglionManager
    } = require('ganglion-manager')
    const myGanglionManager = GanglionManager.getInstance()
    
    const main = async () => {
    
        console.log(
            await myGanglionManager.scan()
        ) // e.g., Set { 'Ganglion-2bfb' } <- 로컬 BT 장비 명
    
    }
    main()
  • 보드 연결

    const { 
        GanglionManager
    } = require('ganglion-manager')
    const myGanglionManager = GanglionManager.getInstance()
    
    const main = async () => {
    
        console.log(
            await myGanglionManager.scan()
        ) // e.g., Set { 'Ganglion-2bfb' } <- 로컬 BT 장비 명
    
        await myGanglionManager.connect('Ganglion-2bfb') // <- 연결할 보드의 Local Name
    
    }
    main()
  • 데이터 이벤트 리스너 등록

    const { 
        GanglionManager
    } = require('ganglion-manager')
    const myGanglionManager = GanglionManager.getInstance()
    
    const main = async () => {
    
        console.log(
            await myGanglionManager.scan()
        ) // e.g., Set { 'Ganglion-2bfb' } <- 로컬 BT 장비 명
    
        await myGanglionManager.connect('Ganglion-2bfb') // <- 연결할 보드의 Local Name
    
        myGanglionManager.on(
            GanglionManager.ON_RAW_DATA_EVENT,
            (channel1, channel2) => {
                console.log(
                    channel1, // 1번 채널 eeg 데이터
                    channel2  // 2번 채널 eeg 데이터
                )
            }
        )
    
        myGanglionManager.on(
            GanglionManager.ON_BAND_DATA_EVENT,
            bandData => {
                console.log(
                    bandData // 알파파, 베타파 등등
                )
            }
        )
    
    }
    main()

    node.js EventEmitter 사용법 참조

  • 데이터 스트림 시작

    const { 
        GanglionManager
    } = require('ganglion-manager')
    const myGanglionManager = GanglionManager.getInstance()
    
    const main = async () => {
    
        console.log(
            await myGanglionManager.scan()
        ) // e.g., Set { 'Ganglion-2bfb' } <- 로컬 BT 장비 명
    
        await myGanglionManager.connect('Ganglion-2bfb') // <- 연결할 보드의 Local Name
    
        myGanglionManager.on(
            GanglionManager.ON_RAW_DATA_EVENT,
            (channel1, channel2) => {
                console.log(
                    channel1, // 1번 채널 eeg 데이터
                    channel2  // 2번 채널 eeg 데이터
                )
            }
        )
    
        myGanglionManager.on(
            GanglionManager.ON_BAND_DATA_EVENT,
            bandData => {
                console.log(
                    bandData // 알파파, 베타파 등등
                )
            }
        )
    
        await myGanglionManager.startStream()
    
    }
    main()
  • 데이터 스트림 종료 (예시, 10초 후 종료)

    const { 
        GanglionManager
    } = require('ganglion-manager')
    const myGanglionManager = GanglionManager.getInstance()
    
    const main = async () => {
    
        console.log(
            await myGanglionManager.scan()
        ) // e.g., Set { 'Ganglion-2bfb' } <- 로컬 BT 장비 명
    
        await myGanglionManager.connect('Ganglion-2bfb') // <- 연결할 보드의 Local Name
    
        myGanglionManager.on(
            GanglionManager.ON_RAW_DATA_EVENT,
            (channel1, channel2) => {
                console.log(
                    channel1, // 1번 채널 eeg 데이터
                    channel2  // 2번 채널 eeg 데이터
                )
            }
        )
    
        myGanglionManager.on(
            GanglionManager.ON_BAND_DATA_EVENT,
            bandData => {
                console.log(
                    bandData // 알파파, 베타파 등등
                )
            }
        )
    
        await myGanglionManager.startStream()
    
        setTimeout(async () => {
            await myGanglionManager.stopStream()
        }, 10000)
    
    }
    main()
  • 연결 해제 (예시, 10초 후 해제)

    const { 
        GanglionManager
    } = require('ganglion-manager')
    const myGanglionManager = GanglionManager.getInstance()
    
    const main = async () => {
    
        console.log(
            await myGanglionManager.scan()
        ) // e.g., Set { 'Ganglion-2bfb' } <- 로컬 BT 장비 명
    
        await myGanglionManager.connect('Ganglion-2bfb') // <- 연결할 보드의 Local Name
    
        myGanglionManager.on(
            GanglionManager.ON_RAW_DATA_EVENT,
            (channel1, channel2) => {
                console.log(
                    channel1, // 1번 채널 eeg 데이터
                    channel2  // 2번 채널 eeg 데이터
                )
            }
        )
    
        myGanglionManager.on(
            GanglionManager.ON_BAND_DATA_EVENT,
            bandData => {
                console.log(
                    bandData // 알파파, 베타파 등등
                )
            }
        )
    
        await myGanglionManager.startStream()
    
        setTimeout(async () => {
            await myGanglionManager.disconnect()
        }, 10000)
    
    }
    main()

etc

다음의 속성 Getter 제공

  •     get isScanning() : boolean { 
            return this.mIsScanning
        }
        // myGanglionManager.isScanning
    
        get isStreaming() : boolean {
            return this.mIsStreaming
        }
        // myGanglionManager.isStreaming
    
        get isConnected() : boolean {
            return this.mIsConnected
        }
        // myGanglionManager.isConnected
1.0.1

4 years ago