인프런 커뮤니티 질문&답변

데브수달님의 프로필 이미지
데브수달

작성한 질문수

CAN통신 기초와 자동차 전체 구조

Data Frame

ACK

해결된 질문

작성

·

37

0

만들어진 프로그래밍 코딩을 보다보면
CAN_SUCCESS := 0
CAN_Fail :=1 이라고 한 것이
상수로 정의되어있는 경우가 있던데요.
결국은 ACK 리시브에 대한 값을 할당함으로써
해당 값이 성공이냐 실패에 따라서
또 다른 코딩을 하게 되는거겠네요
이해한 게 맞을까요?

답변 2

0

윤우주님의 프로필 이미지
윤우주
지식공유자

넵, 이해하신게 맞습니다.

제가 생각하기에 프로그래밍은 제품의 동작도 중요하지만, 에러 처리의 부분도 상당히 중요하다고 생각합니다. 그렇기 때문에 ERROR를 판단했을 때, 이에 대한 처리를 해주어야 하며 그에 따라 위처럼 코딩되어 있을 수도 있습니다.

 

이를 FSM (Finite State Machine) 이라 칭합니다. 임베디드 프로그램은 유한한 State 내에서 동작하며 각 State에 맞춰 동작하도록 프로그래밍 되어 있을 것입니다. 여기서 Finite에는 Success, Fail 등의 State가 존재할 수도 있을 것이구요. 해당 용어도 참고하시면 좋을 것 같습니다.

 

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. 해달님.

질문해주신 CAN 통신에서 CAN_SUCCESSCAN_FAIL를 상수로 정의하여 ACK 리시브에 대한 값을 할당하는 부분에 대해 이해한 것이 맞으신지 궁금해 하신 것 같습니다.

CAN 통신에서 CAN_SUCCESSCAN_FAIL 같은 상수를 정의하여 ACK(ACKnowledgement) 리시브의 결과를 나타내는 것은 일반적인 프로그래밍 패턴입니다. 즉, CAN 메시지가 성공적으로 전송되었는지 실패했는지를 나타내기 위해 이러한 상수를 사용합니다. 성공 시에는 CAN_SUCCESS 값을, 실패 시에는 CAN_FAIL 값을 할당함으로써 이후의 처리를 달리하게 됩니다.

아래의 관련 질문에서 더 자세한 답변을 확인해보세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

데브수달님의 프로필 이미지
데브수달

작성한 질문수

질문하기