공부한 것
회고
private void UartTestButton_Click(object sender, EventArgs e)
{
LogTextbox.Text += "UART Test Start" + Environment.NewLine;
if (ControlSerialport.IsOpen)
{
ControlSerialport.Write("UART");
}
cntFlag = false;
//1.반복문 만들고
//2.3초가 지났는지 확인하고 데이터가 수신하지 못했는지 확인한다.
//3. 3초가 지나고 데이터가 수신하지 못하면 fail출력
//4. 3초가 지나지 않았으면 데이터가 수신이 되었는지 확인한다.
//5. 3초 이내이고 데이터가 수신이 되지 않았으면 반복문을 수행한다.
//TODO:
//1. 3초동안 3번(1초단위로) 대기하고 3초가 지나면 메세지창에 fail를 표시하고 버튼을 활성한다.
//2. 리시브 데이터의 length를 확인한다.
while (true)
{
if (cnt >= 3 && cntFlag == false) //3초가 지났는지 확인한다.
{
// 3초가 지났으면 fail 메세지를 표기한다.
LogTextbox.Text += "UART Test Failed(Can not Read Data)" + Environment.NewLine;
cnt = 0;
break;
}
if (cntFlag == true)
{
// 3초가 안지나고 성공하면 버턴을 활성화 하고 리턴한다.
break;
}
//딜레이1초
Delay(1000);
cnt++; //카운트 증가
}
}
이런식으로 처리를 해주었더니 제대로 동작했다. 아직 이 시리얼통신에 대한 구조가 제대로 정리되지 않았었는데, 이것을 하면서 어느정도 어떤 역할들을 하는지 알았다. 이제 다양한 송수신형태에 대해서 공부해보려고 한다.
다음으로 수신하는 부분을 계속해서 string으로만 보냈었는데, byte[]형식으로 보내보려고 공부하고 있었는데 어려워서 제대로 하지 못했다. 작성한 코드가 맞는지 내일 컨펌받아보려고 한다!!
string형태로 데이터를 많이 보내다보니 int로 형변환 하는 것을 정리했다.
byte에 대해서 더 알아보아야겠음! 지금은 내가 업무를 제대로 시작한 것도 아니고, 기초를 쌓는 시간이니 후다닥 빨리 동작만 제대로 구현하기보다는 왜 그렇게 되는지를 차근차근 알아가야겠다고 생각했다. 지금까지 구현한 것도 일정보다 빠르게 구현 한 것인데, 하나하나 뜯어보면서 차곡차곡 정리해야겠다.