internal TactonicFrameEvent(TactonicDevice deviceInfo)
 {
     device = new TactonicDevice();
     device.cols = deviceInfo.cols;
     device.rows = deviceInfo.rows;
     device.serialNumber = deviceInfo.serialNumber;
     device.rowSpacingUM = deviceInfo.rowSpacingUM;
     device.colSpacingUM = deviceInfo.colSpacingUM;
     frame = new TactonicFrame(device);
 }
예제 #2
0
 public static void CopyFrame(TactonicFrame srcFrame, TactonicFrame dstFrame)
 {
     if (srcFrame.numForces == dstFrame.numForces)
     {
         for (int i = 0; i < srcFrame.numForces; i++)
         {
             dstFrame.forces[i] = srcFrame.forces[i];
         }
     }
 }
 // Use this for initialization
 void Start()
 {
     rend = GetComponent<Renderer> ();
     tex = new Texture2D (1,1,TextureFormat.RGBAFloat,false);
     rend.material.mainTexture = tex;
     TactonicDeviceList dl = Tactonic.GetDeviceList ();
     if (dl.GetNumDevices () > id) {
         device = dl.GetDevice (id);
         Debug.Log ("id: " + id + ", serial number: " + device.serialNumber);
         frame = new TactonicFrame (device);
         Tactonic.AddFrameCallback (device, this);
         Tactonic.StartDevice (device);
         newFrame = false;
         tex.Resize (device.GetRows (), device.GetCols ());
         Debug.Log ("rows: " + device.GetRows() + ", cols: " + device.GetCols());
     } else {
         Debug.Log ("id " + id + " not found! " + dl.GetNumDevices () + " devices found.");
     }
 }
예제 #4
0
        internal bool StartDevice()
        {
            FTDI.FT_STATUS ftStatus = FTDI.FT_STATUS.FT_OK;
            UInt32 numBytesRW = 0;
            byte [] command = new byte[1];
            command[0] = (byte)COMMAND_START;
            byte[] data = new byte[1];
            if (isTiles)
            {
                for (int i = 0; i < numTiles; i++)
                {
                    command[0] = (byte)(COMMAND_START | tileID[i]);
                    ftStatus = ftdi.Write(command, 1, ref numBytesRW);
                    command[0] = 0;
                    ftStatus = ftdi.Read(command, 1, ref numBytesRW);
                }
            }
            else
            {
                ftStatus = ftdi.Write(command, 1, ref numBytesRW);
                ftStatus = ftdi.Read(data, 1, ref numBytesRW);
                Console.WriteLine("Start "+data[0]);
            }

            writeFrame = 0;
            prevFrame = 1;

            deviceFrames[writeFrame] = new TactonicFrame(deviceFrameInfo);
            deviceFrames[prevFrame] = new TactonicFrame(deviceFrameInfo);
            buffer = new byte[4096];
            for (int i = 0; i < deviceFrameInfo.rows * deviceFrameInfo.cols; i++)
            {
                deviceFrames[writeFrame].forces[i] = 0;
                deviceFrames[prevFrame].forces[i] = 0;
            }
            frameSize = deviceFrameInfo.rows * deviceFrameInfo.cols + 1;
            readPos        = 0;
            fillPos        = 0;
            frameBufferPos = 0;
            frameBuffer = new int[tileFrameInfo.rows * tileFrameInfo.cols + 4];

            ftStatus = ftdi.Purge(FTDI.FT_PURGE.FT_PURGE_RX | FTDI.FT_PURGE.FT_PURGE_RX) | ftStatus;
            if(!CreateLoopThread())
                return false;
            ready = true;
            return true;
        }
 internal void Update(TactonicFrame frame)
 {
     frameEvent.frame = frame;
     Tactonic.CopyFrame(frameEvent.frame, forceFrames[fillFrame]);
     if((fillFrame+1)%8 != readFrame)
         fillFrame = (fillFrame+1)%8;
        // else
     //    fprintf(stderr, "Warning, data loss experienced. Increase buffer size or decrease update frame rate.");
 }
 internal void SetTouchInfo(TactonicDevice deviceInfo)
 {
     frameEvent = new TactonicFrameEvent(device);
     touchEvent = new TactonicTouchEvent(device);
     device.serialNumber = deviceInfo.serialNumber;
     device.rows = deviceInfo.rows;
     device.cols = deviceInfo.cols;
     device.rowSpacingUM = deviceInfo.rowSpacingUM;
     device.colSpacingUM = deviceInfo.colSpacingUM;
     frameEvent.device = device;
     for(int i = 0; i < 8; i++){
         forceFrames[i] = new TactonicFrame(device);
         touchFrames[i] = new TactonicTouchFrame();
     }
 }