전기,전자,펌웨어

zigbex 시리얼 통신 관련해서 한번만더 물어보겠습니다.

by 조성범 posted Nov 22, 2012
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

위로 아래로 댓글로 가기 인쇄 쓰기 목록 수정 삭제
?
  • WhiteAT 2012.11.22 16:17

    byte[4], byte[5]가 모두 4라면....

    통신을 binary 가 아닌  TEXT형태인가 봅니다.


    TEXT 형태라면 2개씩 묶어서 처리할수 있는데, 

    UInt16 uData = Convert.ToUInt16(byte[4])<<8 + Convert.ToUInt16(byte[5]) 로 하시면 됩니다.


    단, 7E 44 처럼 2바이트로 끝어서 처리를 해야 항상 일정한 값이 나오는 것이니

    0 이나 1 같은 경우도 00 이나 01 같이 2바이트로 처리를 해줘야 합니다.




    질문에 올려 주신 7E 44 0 0 FF FF 0 0 5 20 10 1 1 1 1 1 4B C1 7E  의 데이터가 어떻게 나왔는지 코드를 남겨 주셔야 (어떤 형태로 데이터를 처리했는지 알아야)

    좀더 자세한 답변을 드릴수 있습니다.

  • 조성범 2012.11.22 23:41

    WhiteAT 님에게 달린 댓글

    이렇게 상세하게 답변해주시다니 감사드립니다.

    간단한 zigbex프로그램인데도 해메고 있네요;;

    데이터 받는부분을 따로 소스올려볼께요.. c#도 낯설고, c++만 좀 하는정도였거든요. 많은 도움 감사드립니다.

    Convert.ToUInt16(byte[4])<<8 + Convert.ToUInt16(byte[5])

    궁금한 점이 <<8 부분은 어떤 뜻인가요. 비트연산자는 아니겠지요 ㅠㅠ 자꾸 이런거 물어봐서 죄송합니다.

  • WhiteAT 2012.11.23 10:34

    << 은 비트 연산 맞습니다. 8비트 left shift 입니다.


    <<  연산자는 C, C# 의 기본 연산자라 연산자 관련 내용을 보시면 자세히 설명되어 있을 겁니다.~