[Proramming]/C#2010. 8. 4. 11:56

C# 문자열 중에서 토큰으로 분리된 숫자 구하기

C# 문자열 중에서 토큰으로 분리된 숫자 구하기


UART로 전송되는 여러 숫자로 이루어진 문자열 데이터를 숫자로 분리 하여 표시 하기위해 함수로 만들어 보았다.

ScanValue 함수
        private void ScanValue(string tokenString, int[]Result)
        {
            string[] split = tokenString.Split(new Char[] { ' ' });
            int i, cnt = split.Length;
            bool result = true;

            for(i=0;i<cnt;i++)
            {
                result = Int32.TryParse(split[i], System.Globalization.NumberStyles.Integer, null, out Result[i]);
            }
        }


테스트 코드
        private void button3_Click(object sender, EventArgs e)
        {
            int[] Value = null;
            Value = new int[10];

            ScanValue("24 56 128", Value);
        }



Posted by nexp

댓글을 달아 주세요

[Proramming]/C#2010. 7. 25. 18:04

C#에서 ActiveX 등록 및 사용하기

C#에서 ActiveX 등록 및 사용하기

C#에서 ActiveX 등록하기
기존 VC++이나 VB에서와는 다르게 .NET 환경에서는 ActiveX 등록하는 방법이 조금 다르다. (익숙하지 않아 기록 해 둘 필요가 있다.)

도구상자에서 오른쪽 마우스 클릭하여 메뉴에서 [항목 선택]



[COM 구성요소] 탭에서 등록하고 싶은 ActiveX 를 등록해 주면 된다.





아래는 간단히 내가 만들어 사용하고 있는 Oscilloscope ActiveX Dll 을 등록하여 테스트 한 결과 이다.

Posted by nexp

댓글을 달아 주세요

[Proramming]/C#2009. 11. 28. 14:46

Serial LCD 제어 - C#을 이용한 LCD제어

Serial LCD 제어 - C#을 이용한 LCD제어


 Serial LCD 모듈을 이용하면 시간, 온도등 PC상의 기타 정보를 쉽게 표시할 수 있다. 특히 인터넷을 이용하면 오늘의 날씨, 뉴스 등도 쉽게 정보를 얻어올 수 있다. 일단 간단이 PC에서 입력한 정보가 LCD에 출력되는 프로그램을 작성해 보았다.

C#을 이용하여 Serial LCD 모듈을 제어 하는 프로그램 작성
USB2UART를 이용하여 Serial Prot로 데이터를 출력하도록 했다. 특히 C#을 이용하면 화면 출력에 관련된 여러가지 기능들을 쉽게 처리할 수 있어 상당히 편리하다.



간단히 몇줄의 코드를 이용하여 작성가능하다.
        private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = "C# Serial Test";
            serialPort1.Open();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            char[] str = new char[2];
            if (index > 0)
            {
                if ((index % 16) == 0)
                {
                    textBox1.Text = "";
                    serialPort1.Write("\r");
                    return;
                }
            }
            str = textBox1.Text.ToCharArray(index++, 1);
            serialPort1.Write(str[0].ToString());
        }


USB2Serial모듈을 이용한 Serial LCD모듈 연결



테스트 동영상

Posted by nexp

댓글을 달아 주세요

[Proramming]/C#2009. 10. 31. 11:59

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

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제어 테스트 동영상

Posted by nexp

댓글을 달아 주세요

  1. 소미

    관리자의 승인을 기다리고 있는 댓글입니다

    2011.11.26 18:31 [ ADDR : EDIT/ DEL : REPLY ]
  2. HighEndGuy

    관리자의 승인을 기다리고 있는 댓글입니다

    2015.05.07 12:24 [ ADDR : EDIT/ DEL : REPLY ]

[Proramming]/C#2009. 10. 9. 12:43

C# 에서 Sleep() 함수 사용

C# 에서 Sleep() 함수 사용

VC++ MFC에서 사용했던 Sleep() 함수는 System.Threading.Thread.Sleep() 로 대체할 수 있다.

VC++.Net 에서는 조금 다른형식이지만 아래와 같이 사용하면 된다.
System::Threading::Thread::Sleep();


Posted by nexp

댓글을 달아 주세요