C#

[C#] 시리얼 프로그램 포트 연결

AlexHouse 2021. 5. 14. 21:54
728x90

시리얼 프로그램 생성

 

serialPort 객체생성

다음은 serialPort 객체를 만들어서

사용 하겠다고 선언하는 것이다.

 

 

Serial.IO.Port 모듈설치

과정1
과정2

다음을 검색하여

설치를 해야한다.

그럼 종합 Port 함수를 이용 가능하다.

 

과정3

설치를 하고나면 

다음 과정을 넘어간다.

 

포트선언

다음과 같이 포트를 선언해야지

해당관련된 시리얼 함수를 이용 할 수 있다.

모듈을 설치를 안했으면 선언을 해도 오류가 뜬다.

 

로드와 클로징

Title 란에 포트를 열었을 때, 포트를 닫았을 때를 명령하는 것이다.

 

그러면 이제 코드 보기로 돌아가서

 

Closing 선언

만약 시리얼 포트가 열려있는게 사실이라면

시리얼 포트를 닫아라 라고 명령.

왜냐면 Closing 닫는 것을 명령하는 것이니까

 

 

Window_Loaded

다음은 Loaded 하는 과정인데, 즉 콤보박스에 포트를 넣는 것이다.

다음과 같은 오류가 나오는 이유는  콤보박스에 cbPort를 정의를 안해줫기 때문이다.
cbPort는 변수이므로 자기가 원하는 대로 바꿔도 된다.

 

cbPort선언

x:Name="cbPort"를 선언해준다.

 

cbPort선언이후

 

RoutedEventArgs 앞에 ,를 적어줘야되고

GetPortName 은 GetPortNames로 바꿔야한다. (내실수)

 

 

cbPort후 출력

 그러면 콤보박스안에 우리가 가지고 있는 포트가 

선택 할 수 있도록 나오게 된다.

 

button선언

이는 우리가 만든 연결, 끊기 버튼을 클릭하였을 때 

반응 하도록 선언하는것이다. 변수는 우리가 보고싶게

Button 이니까 btn으로 줄여서 btnConnect, btnDisconnect

이렇게 두개의 변수를 지어주고, 클릭 이벤트를 적어준다. 

 

btnConnect.Click

다음은 열기 버튼을 눌럿을 때 포트가 열리고 
어떤 속성에서 열리는 몇 포트일 때 인지, 

데이터를 주고 받고 하는지 등을 선언하였다.

근데 tbStatus에서 오류가 생기는 이유는 이전과 같이

우리가 선언을 안해줬기 때문이다.

 

변수선언

tbStatus는 TextBlock이니까 tb, 상태이니까 Status를 합쳐서

tbStatus로 선언을 한다. (이건 자기 입맛대로 편한대로 하자)

 

 

선언후

이렇게되면 선언 후에 오류가 사라지는 것을

확인해 볼 수 있다.

 

데이터리시브

다음과 같은 명령을 주고 받도록 하라 라고 선언하면

데이터를 주고 받을 수 있는 객체가 등장한다.

 

데이터리시브

그게 바로 SerialPort_DataReceived이다.

이것은 말그대로 우리가 포트를 할 때 데이터를 받도록 하는

장치환경을 말한다.

 

끊기선언

다음과 같이 변수를 정해주고

끊기를 클릭 하였을 때 이벤트를 부가한다.

 

 

끊기명령

만약 시리얼 포트가 열려있다는게 사실이면,

시리얼 포트를 닫어라 그리고 포트를 닫힘을 출력하고

한번 더 끊기를 눌렀을 때 오류를 막기위해 이미 포트가 닫혀잇음을 출력하라

 

 

데이터리시브 변수선언

다음과 같이 TextBox는 tb로 DataReceived 를 Receive 로

간단하게 하여 tbReceive로 선언하겠다. 

 

 

DataReceived

가장 어려운 부분이다.

int bytesize로 변수를 정하고 바이트 단위로 데이터를

읽도록 하겠다. bytesize == -1 라는것은 데이터가 없다는 것을 말함

SerialPort.Read는 I.O에서 리포트 하는동안 버퍼에서 정보를 갖고있는다는 의미이다.

즉, Getstring(data)를 갖고 있겠다는 의미이다.

 

btnSend_Click

마지막 전송을 담당하는 버튼을 명령해주는 것으로

btnSend_Click 으로하여 포트가 닫혀있다면 리턴하고 

TextBox에다가 msg를 적도록 하여라.

 

 

 

이렇게되면 포트를 연결 할 수 있는 환경은

모두 완성이 된 것이다.😊

728x90

'C#' 카테고리의 다른 글

[C#] Pacman Game 만들기  (8) 2021.06.11
[C#] 의료기기 통신  (0) 2021.05.28
[C#] 예제 문제 풀기 12~14번 (Feat.통신프로그램 만들기)  (0) 2021.05.07
[C#] 예제 문제 풀기 8~11번  (0) 2021.04.30
[C#] 예제 문제 풀기 1~7번  (0) 2021.04.24