Study/C#(Window programming)
PCAN USB 연결/해제 하기
Answer Choi
2021. 9. 2. 17:59
반응형
C#을 이용하여 PCAN으로 데이터를 읽어와서 UI로 뿌려주는 예제입니다.
peak-can 사이트에 가시면 간단한 API 소스를 다운받을 수 있는데
특정 Msg만 가져와서 UI로 뿌려보겠습니다.
우선 API를 다운 받으셔서 PCANBasic.cs파일을 추가해 주셔야합니다.
UI는 위와 같이 배터리 SOC를 쉽게 알아볼 수 있도록 UI를 만들었습니다.
Initialize가 PCAN을 연결하는 것이고, Release는 연결을 해제하는 버튼입니다.
1.연결하기
연결시의 코드입니다.
TPCANStatus stsResult;
strMsg = new StringBuilder(256);
m_PcanHandle = PCANBasic.PCAN_USBBUS1;
try{
stsResult = PCANBasic.Initialize(m_PcanHandle, TPCANBaudrate.PCAN_BAUD_500K);
if (stsResult != TPCANStatus.PCAN_ERROR_OK) //error{
PCANBasic.GetErrorText(stsResult, 0, strMsg);
statusText.Text = strMsg.ToString();
}
else{ //no error
conn_Btn.Enabled = false;
releaseBtn.Enabled = true;
statusText.Text = "PCAN Connected";
timer1.Enabled = true;
}
}catch(Exception ex)
{
statusText.Text = "PCAN driver not installed";
}
m_PcanHandle은 TPCANHandle로 PCANBasic.cs에 정의되어 있으며, 연결할 PCAN의 종류를 정의하는 것입니다.
저는 PCAN-USB를 사용하므로 m_PcanHandle에 PCAN_USBBUS1을 넣었습니다.
initialize할땐 PCAN종류와 속도를 넣어주면 되는데, Initialize후 결과값을 받아오게 됩니다.
public static TPCANStatus Initialize(
TPCANHandle Channel,
TPCANBaudrate Btr0Btr1)
{
return Initialize(Channel, Btr0Btr1, (TPCANType)0, 0, 0);
}
연결 후 결과값이 정상이면 연결성공을 실패면 연결 실패의 오류 원인을 화면에 뿌려주도록 하였습니다.
예외처리를 한 이유는 앱이 배포될 때에 pcan 드라이버가 설치되어 있지않으면 실행이 안되기 때문에
오류가 나는 것을 방지하기 위해 예외처리를 하였습니다.
2.해제하기
해제도 마찬가지로 연결과 비슷합니다.
TPCANStatus result;
result = PCANBasic.Uninitialize(PCANBasic.PCAN_USBBUS1);
strMsg = new StringBuilder(256);
if (result != TPCANStatus.PCAN_ERROR_OK){
PCANBasic.GetErrorText(result, 0, strMsg);
strMsg = new StringBuilder(256);
statusText.Text = strMsg.ToString();
}else{
conn_Btn.Enabled = true;
releaseBtn.Enabled = false;
statusText.Text = "PCAN not connected";
timer1.Enabled = false;
}
해제시에도 연결한 PCAN_USBBUS1을 해제 후 결과값을 받아 정상 해제되었는지를 확인합니다.
해제 실패시에는 UI에 뿌려주도록하였습니다.
이상입니다.
반응형