시리얼 통신에서 1byte의 데이터를 수신할 때 아스키 코드(16진수)값을
벗어난 데이터는 0으로 수신되는 문제가 발생합니다.
예를 들어 아스키 데이터가 아닌 byte형 데이터 $9a를 수신 받았다면
결과는 0으로 나타나는 문제입니다...
모니터 프로그램은 Hex로 디스플레이 되게 설정해놓은 상태에서 확인했은때 입니다...
다시 말해 데이터 $41 수신받았을때 A가 디스플레이 되는것이 아니고 [41]로
출력되는 터미널 프로그램으로 확인했고요...
제가 현재 가지고 있는 시리얼 통신 컨포넌트는 CPort, COMM32, APRO, TMSA32등 다 가지고 있는데요...
어떤 방법이든 괜찮습니다...
시리얼 통신 상에서 byte형 데이터를 정상적으로 수신 받을 수 있는 방법을 알고 계신 분은 꼭 답변 부탁드립니다.
헥사코드 $41을 바이너리로 보면 0100 0001입니다.
$9a는 1001 1010이고요..
두개의 차이점은 첫 비트가 1이냐? 0이냐? 입니다.
$00~$ff 는 모두 아스키코드가 될 수 있습니다.
님께서 말씀하신 "잘 나오는 아스키값"는 알파벳입니다.
문제는 "알파벳은 받아지는데 다른 코드는 못 받습니다"로 정정합니다.
첫 비트가 0으로 바뀌는 현상이거나 소프트웨어에서 7비트 통신으로 설정해놓은 상태입니다.
둘중에 어느것이 문제 될지 모르겠습니다... 장비하고 통신하신다면
장비쪽에서 첫 비트를 모두 0으로 바뀌어서 보낼 가능성이 있고요.
그냥 PC에서 하시는것이라면 시리얼 포트(d-sub)의 2,3번을 접지(그냥 연결)하신후
코드 00~ff 까시 보내면 00~ff가 들어오는지 확인할수 있습니다.
이 과정을 loopback테스트라고 합니다.
루프백에서 코드가 잘 읽혀지면 님 프로그램에선 문제가 없는것입니다.
실 아이피면 봐드리겠습니다. 전화 주십시요.. 육,790,영사공삼