예제 #1
0
    public IAsyncResult BeginGetFrame(EyeIndex eyeId, AsyncCallback callback)
    {
        if (m_state == SensoNetworkState.SENSO_DISCONNECTED)
        {
            doConnect();
        }
        if (m_state != SensoNetworkState.SENSO_CONNECTED || IsReceiving)
        {
            return(null);
        }
        var m_frameResult = new FrameGetResult(callback);
        var outBuf        = BitConverter.GetBytes((Int32)eyeId);

        //var writeCB = new AsyncCallback(OnWriteResult);
        IsReceiving = true;
        try {
            m_stream.Write(outBuf, 0, 4);
            DoRead(m_stream, m_frameResult);
        }
        catch (Exception ex)
        {
            Disconnect();
        }
        return(m_frameResult);
    }
예제 #2
0
    private void DoRead(NetworkStream aStream, FrameGetResult cb)
    {
        var readCB = new AsyncCallback(OnReadResult);

        try
        {
            aStream.BeginRead(cb.frameBytes, cb.bufOffset, RECV_BUFFER_SIZE - cb.bufOffset, readCB, cb);
        } catch (IOException ex)
        {
            Debug.LogError("Socket read exception: " + ex.Message);
            Disconnect();
        }
    }