티스토리 뷰

언어별/XNA

XNA에 사용한 시리얼 통신

지에고 2010. 3. 9. 14:54

이번 기회에 시리얼 통신을 사용하게 되었다.
압력센서에서 값을 받아오기 위해서
C#이다보니 C#시리얼 통신이랑 똑같이 하면된다. -_ -...난 XNA라고 괜히 겁먹었음 ㅠ

        public void Serial_open()
        {
            try
            {
                sss.PortName = "COM6";
                sss.DataBits = 8;
                sss.Parity = Parity.None;
                sss.BaudRate = 9600;
                sss.StopBits = StopBits.One;
                sss.Open();
                CreateThread();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message.ToString(), "Alter", MessageBoxButtons.OK, MessageBoxIcon.Error);

            }
        }

이부분은 시리얼 포트를 열때 사용한다 멀티 쓰레드로 돌리지 않으면 게임이랑 같이 느려진다-_-(당연한걸..)

쓰레드를 만드는 부분 함수

        public void CreateThread()
        {

            Thread thRun = new Thread(new ThreadStart(SerialPort_DataReceived));
            thRun.Start();
        }

쓰레드를 생성하고 스타드 안에 값을 받는 함수를 돌려준다

        public void SerialPort_DataReceived()
        {

            while(true)
            {
                try
                {
                    if (Mode == mode.sens)
                    {
                        string strtmp = this.sss.ReadLine();
                     }
                }
            }
         }

센서쪽에서 \n 을 넣어서 보내달라그랬다. 엔터가 들어올때까지 버퍼에 쌓아두다가
값이 넘어오게 된다. 이 넘어온 값을 적절하게 짤라서 게임에 사용하였다.

궁금한점 있으면 댓글 남겨주세요

네트워크도 되긴하지만 이부분은 다음에 작성하겠다.
         


댓글