コード例 #1
0
        private void SendDataIntoFifo()
        {
            FTDI.FT_STATUS status;
            uint           txQueue = 0;

            // check buffer
            status = ftHandle.GetTxBytesWaiting(ref txQueue);
            if (txQueue == 0)
            {
                // write data
                uint written = 0;
                ftHandle.Write(data, data.Length, ref written);
                if (written == 0)
                {
                    MessageBox.Show("No data have been written");
                    return;
                }
            }
            Thread.Sleep(20);
            status = ftHandle.GetRxBytesAvailable(ref rxQueue);
            if (rxQueue > 0 && status == FTDI.FT_STATUS.FT_OK)
            {
                // read data
                uint read = 0;
                ftHandle.Read(recData, (uint)rxQueue, ref read);
                if (read == 0)
                {
                    MessageBox.Show("No data have been read from FIFO");
                    return;
                }
            }
            //status = ftHandle.GetTxBytesWaiting(ref txQueue);
            //if (txQueue == 0)
            //{
            //    // write data
            //    uint written = 0;
            //    ftHandle.Write(data, data.Length, ref written);
            //    if (written == 0)
            //    {
            //        MessageBox.Show("No data have been written");
            //        return;
            //    }
            //}
        }
コード例 #2
0
        static FTDI.FT_STATUS Sync_MPSSE(ref FTDI ftdi, byte[] TransferBuffer)
        {
            /*
             * See FTDI AN_114 Page 10-11 Synchronize the MPSSE interface by sending bad command &xAA*
             * For Check MPSSE is sucsessfully running send a bad obcode (0xaa)
             * The request must be 0xfa and the bad obcode
             * In the AN make it at twice.
             * Im too lazy for this!
             */

            uint NumBytesToTransfer, TxRxQ = 0;
            uint NumBytesTransfered = 0;

            FTDI.FT_STATUS s;

            NumBytesToTransfer = 0;
            TransferBuffer[NumBytesToTransfer++] = 0xaa;
            ftdi.Write(TransferBuffer, NumBytesToTransfer, ref NumBytesTransfered);

            do
            {
                Thread.Sleep(5);
                ftdi.GetTxBytesWaiting(ref TxRxQ);
            } while (TxRxQ != 0);

            Thread.Sleep(20);

            s = ftdi.GetRxBytesAvailable(ref NumBytesToTransfer);

            if (s == FTDI.FT_STATUS.FT_OK)
            {
                ftdi.Read(TransferBuffer, NumBytesToTransfer, ref NumBytesTransfered);
                //if we get 0xfa and 0xaa MPSSE should be working
                if (TransferBuffer[0] != 0xfa || TransferBuffer[1] != 0xaa)
                {
                    return(FTDI.FT_STATUS.FT_OTHER_ERROR);
                }
            }
            else
            {
                return(FTDI.FT_STATUS.FT_OTHER_ERROR);
            }

            return(FTDI.FT_STATUS.FT_OK);
        }
コード例 #3
0
 public void GetTxBytesWaiting(ref uint num_bytes_write_queue)
 {
     myFtdiDevice.GetTxBytesWaiting(ref num_bytes_write_queue);
 }
コード例 #4
0
ファイル: Enttec.cs プロジェクト: alexvaldez077b/Enttec
        public object write(byte[] payload)
        {
            byte[] Start = { 0x00 };
            byte[] MAB   = new byte[256];

            if (!dmx512Pro.IsOpen)
            {
                dmx512Pro.OpenByDescription("DMX USB PRO");
            }



            //DMX_PRO.SetDataCharacteristics(FTDI.FT_DATA_BITS.FT_BITS_8, FTDI.FT_STOP_BITS.FT_STOP_BITS_2, FTDI.FT_PARITY.FT_PARITY_NONE);

            dmx512Pro.Purge(FTDI.FT_PURGE.FT_PURGE_RX);
            dmx512Pro.Purge(FTDI.FT_PURGE.FT_PURGE_TX);


            //DMX_PRO.SetBreak(true);
            dmx512Pro.SetTimeouts(1000, 500);

            uint tx = 0;

            dmx512Pro.SetBaudRate(250000);


            dmx512Pro.SetBreak(true);

            System.Threading.Thread.Sleep(10);
            dmx512Pro.SetBreak(false);

            dmx512Pro.Write(MAB, 0, ref tx);
            dmx512Pro.Write(Start, Start.Length, ref tx);


            //DMX_PRO.Purge(FTDI.FT_PURGE.FT_PURGE_TX);
            uint rx   = 0;
            int  _try = 0;
            msg  _out = (msg)parse(payload, 0, 0, null);

            _out.info();



            Console.WriteLine(string.Format("Try: {0} ", ++_try));
            dmx512Pro.Write(payload, payload.Length, ref tx);



            do
            {
                dmx512Pro.GetTxBytesWaiting(ref tx);
                //Console.WriteLine("Bytes Waiting: " + tx);
                System.Threading.Thread.Sleep(100);
            } while (tx != 0);



            dmx512Pro.GetRxBytesAvailable(ref rx);



            byte line_status = 0;

            byte[] buffer = new byte[rx];
            dmx512Pro.Read(buffer, rx, ref rx);


            msg _in = (msg)parse(buffer, 1, _out.TransactionNumber, _out._pid);

            ///////////////////////////////////////////////////////////////////
            _in.info();
            Console.WriteLine("\n");
            ///////////////////////////////////////////////////////////////////
            return(_in);
        }