C# 을이용한 하드웨어 제어 - USB FIFO FT245 제어

C#을 이용하면 윈도우 인터페이스는 쉽게 제작할 수 있다. FTDI사의 USB FIFO FT245제어를 C#으로 해 봤는데 생각보다 쉽고 간단하게 작성할 수 있다. FT2232, FT232도 동일하게 사용가능하다.




FT245 C# Programming Source Code

        //------------------------------------------------------------------------------
        //FT245 DLL 등록
        [DllImport("kernel32.dll")]
        extern static short QueryPerformanceCounter(ref long x);
        [DllImport("kernel32.dll")]
        extern static short QueryPerformanceFrequency(ref long x);


        // FT Open
        [DllImport("ftd2xx.dll")]
        unsafe private static extern uint FT_Open(Int16 DeviceNumber, uint* ftHandle);

        // FT Close
        [DllImport("ftd2xx.dll")]
        private static extern uint FT_Close(uint ftHandle);

        // FT_SetBitMode
        [DllImport("ftd2xx.dll")]
        private static extern uint FT_SetBitMode(uint ftHandle, Byte Mask, Byte Mode);

        // FT_GetBitMode    
        [DllImport("ftd2xx.dll")]
        unsafe private static extern uint FT_GetBitMode(uint ftHandle,
                      [MarshalAs(UnmanagedType.LPArray)] byte[] bdata);

        // FT_SetBaudRate
        [DllImport("ftd2xx.dll")]
        private static extern uint FT_SetBaudRate(uint ftHandle, uint BaudRate);

        // FT_Write
        [DllImport("ftd2xx.dll")]
        unsafe private static extern uint FT_Write(uint ftHandle,
                     [MarshalAs(UnmanagedType.LPArray)] byte[] bdata,
                     uint BufferSize, uint* BytesWriten);
        //------------------------------------------------------------------------------


        //FT245 초기화
        unsafe private void button1_Click(object sender, EventArgs e)
        {
            const uint FT_OK = 0;
            uint ftHandle;          

            m_ftStatus = FT_Open(0, &ftHandle);
            m_ftHandle = ftHandle;

            if (m_ftStatus != FT_OK)
            {
                return;   // 에러처리
            }

            // BitBang Mode
            m_ftStatus = FT_SetBitMode(m_ftHandle, 0xFF, 0x01);
            m_ftStatus = FT_SetBaudRate(m_ftHandle, 115200);

            //연결되면 Icon Image변경
            button1.Image = global::WindowsFormsApplication1.Properties.Resources.connect;
        }

        unsafe private void button2_Click(object sender, EventArgs e)
        {
            //데이터 출력 - LED On
            uint writesize;
            InOut_data[0] = 0x00;

            FT_Write(m_ftHandle, InOut_data, 1, &writesize);
        }

        unsafe private void button3_Click(object sender, EventArgs e)
        {
            //데이터 출력 - LED Off
            uint writesize;
            InOut_data[0] = 0xFF;

            FT_Write(m_ftHandle, InOut_data, 1, &writesize);
        }


FT245 USB제어 테스트 동영상

블로그 이미지

nexp

카테고리

분류 전체보기 (1550)
[MyProject] (48)
[TI] (75)
[NXP] (51)
[ST_MICRO] (129)
[FreeScale] (31)
[MSP430] (139)
[Microchip] (131)
Cortex-M (36)
[ATMEL] (29)
[AnalogDevice] (22)
[Embedded] (2)
ARM9 (24)
[AVR] (80)
[DSP] (111)
[8051] (21)
[MCU] (50)
[INTERFACE] (210)
[AppBoard] (23)
[ROBOT] (25)
[MODULE] (127)
[SENSOR] (41)
[DATA] (21)
[FPGA] (29)
[EVB] (1)
[Proramming] (38)
[MyLog] (6)
[IDEA] (0)
[Utility] (19)
[Book] (24)
취미생활 (4)
[Link] (2)