NAVER

질문 c# serial open 후 반복처리
비공개 조회수 1,280 작성일2013.10.30

초보입니다... ^^;

아래와 같이 serial open 후, 만들어지는 데이타를 serial port 로 주기적으로 반복출력하는 소스를 만들려고 하는데요.

여기서 "주기적으로 반복하는 부분" 을 어떻게 만들어야 하나요.

(버튼은 클릭하지 않습니다.)

답변 부탁합니다....^^

 

namespace serialTestEx
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            serialPort1.PortName = "COM3";
            serialPort1.BaudRate = (int)115200;
            serialPort1.Open();
        }

.

.

.

          serialPort1.Wrinte(만들어지는 데이타);

.

.

 


    }
}

 

C#
프로필 사진

답변자님,

정보를 공유해 주세요.

1 개 답변
1번째 답변
프로필 사진
redr****
고수
본인 입력 포함 정보
 안녕하세요.

현재 스튜디오가 없어 직접 작성을 하니 오타나 잘못된 형식은 바로 잡으시면 좋을 것 같습니다.

우선 반복되게 하려면 while을 사용하시면 되고, 

말씀하시는 것을 보니 무한반복으로 가실려고 하시는 것 같으니..while의 조건은 그냥 true로 하시면 됩니다.

while(true)
{
seialPort1.Wrinte(만들어지는 데이타);
}


추가적으로 말씀드리자면, 

현재 form을 사용하시는데...이럴경우 while로 무한반복으로 돌리게되면,

form이 응답없음 으로 될 것입니다..

이걸 방지 하시려면, Thread를 사용해서 while를 다른 쓰레드에서 활용하신다면

응답없음과 매끄러운 폼사용을 하실 수 있으실 겁니다..

using System.Threading;

    public partial class Form1 : Form
    {
        public Form1()
        {
             InitializeComponent();
             ThreadClass tc = new ThreadClass();
             Thread thread = new Thread(new ThreadStart(tc.Start));
             thread.Start();
         }
    }
.
.
.

public class ThreadClass
{
      private SerialPort serialPort1;
      public ThreadClass()
      {
            //시리얼포트 생성은 알아서 해주세요.질문자님 내용에 생성관련내용이 없네요..
            serialPort1 = SerialPort();   
            serialPort1.PortName = "COM3";
            serialPort1.BaudRate = (int)115200;
            serialPort1.Open();
      }
      public void Start()
      {
            while(ture)
            {
                    seialPort1.Wrinte(만들어지는 데이타);
                    Thread.Sleep(1000);              // 1초 동안 쓰레드 대기(휴식?)
             }
      }
}

그리고 제가 작성은 Form1의 생성자에 했지만..

Form1의 이벤트 중 Shown인가 하는 이벤트가 있습니다.

그녀석에 Thread관련내용을 넣어주시면 더 좋습니다 ^^;


추가 질문이 있으시면 쪽지나 1:1질문 이용해주세요..

2013.10.31.

  • 채택

    질문자가 채택한 답변입니다.

  • 출처

    본인

도움이 되었다면 UP 눌러주세요!
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.