123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- using UnityEngine;
- using System.Collections;
- using UnityEngine.UI;
- using ANT_Managed_Library;
- using System.Collections.Generic;
- using System;
- using System.IO;
- /*
- * UsbExample
- *
- * you can specify the USB number in init_Device(int USBnum);
- * OpenChannel last argument is the device number, default to 0
- */
- public class UsbExample : MonoBehaviour {
- uint nDeviceConnected = 0;
- void Start() {
-
- //INIT HR Display on usb device 0 and 1
- init_Device(0);
- AntChannel c = AntManager.Instance.OpenChannel(ANT_ReferenceLibrary.ChannelType.BASE_Slave_Receive_0x00, 0, 0, 120, 0, 57, 8070, false, 0);
- c.onChannelResponse += OnChannelResponse;
- c.onReceiveData += USB0;
- c.hideRXFAIL = true;
- init_Device(1);
- AntChannel d = AntManager.Instance.OpenChannel(ANT_ReferenceLibrary.ChannelType.BASE_Slave_Receive_0x00, 0, 0, 120, 0, 57, 8070, false, 1);
- d.onChannelResponse += OnChannelResponse;
- d.onReceiveData += USB1;
- d.hideRXFAIL = true;
- }
- void USB0(Byte[] data) {
- Debug.Log("USB 0 received data");
- }
- void USB1(Byte[] data) {
- Debug.Log("USB 1 received data");
- }
- bool firstDeviceInitialized = false;
- void init_Device(byte USBDeviceNum) {
- if (AntManager.Instance.devices[USBDeviceNum] == null) {
- AntManager.Instance.Init(USBDeviceNum);
- if (firstDeviceInitialized == false) { // device events need to be added only once
- firstDeviceInitialized = true;
- AntManager.Instance.onDeviceResponse += OnDeviceResponse;
- AntManager.Instance.onSerialError += OnSerialError; //if usb dongle is unplugged for example
- }
- }
- }
- void OnDeviceResponse(ANT_Response response) {
- ANT_Device device = response.sender as ANT_Device;
- Debug.Log("device (usb " + device.getOpenedUSBDeviceNum() + ") : " + response.getMessageID().ToString());
- }
- void OnSerialError(SerialError serialError) {
- Debug.Log("Error:" + serialError.error.ToString());
- //attempt to auto reconnect if the USB was unplugged
- if (serialError.error == ANT_Device.serialErrorCode.DeviceConnectionLost) {
- foreach (AntChannel channel in AntManager.Instance.channelList) {
- if (channel.device == serialError.sender)
- channel.PauseChannel();
- }
- nDeviceConnected = ANT_Common.getNumDetectedUSBDevices();
- StartCoroutine("Reconnect", serialError.sender.getSerialNumber());
- }
- }
- IEnumerator Reconnect(uint serial) {
- Debug.Log("looking for usb device " + serial.ToString());
- // polling to try and find the USB device
- while (true) {
- if (ANT_Common.getNumDetectedUSBDevices() > nDeviceConnected) {
- ANT_Device device = new ANT_Device();
- if (device.getSerialNumber() == serial) {
- Debug.Log("usb found!");
- AntManager.Instance.Reconnect(device);
- foreach (AntChannel channel in AntManager.Instance.channelList)
- channel.ReOpen(device);
- yield break;
- } else
- device.Dispose();
- }
- yield return new WaitForSeconds(0.1f);
- }
- }
- void OnChannelResponse(ANT_Response response) {
-
- }
-
- }
|