VISA: (Hex 0xBFFF006C) 전송 중에 오버런 에러가 발생했습니다. 다음 문자가 도달하기 전에 하드웨어에서 문자를 읽어오지 못했습니다.
이 에러가 계속 뜨는데 어떻게 해야할까요?
작성코드 부분입니다. 입력문자열, 시리얼번호, 대기시간을 받아 통신하는 적재하는 구조입니다.
원래 문자열을 시프트레지스터로 받다가 피드백노드로 바꿔서 적재해서 그런가 의문이 듭니다.
해결되었습니다! 솔루션으로 이동.
보내신 커맨드로부터 오는 응답이 63bytes를 넘는거 같아요.
64, 65 이런식으로 받아보시고, 앞에서 63개만 잘라서 쓰시거나
해당 에러를 무시하고 VISA 버퍼 비우기를 사용해서 나머지를 지우시는게 어떨까요
63개 이하의 바이트수를 보내는 것 같습니다.
64바이트를 하는 순간부터 타임아웃이 발생합니다...
프로토콜 메뉴얼이 있으면 올려주시는게 확인하는데 도움이 될 듯 합니다
p38 ~ 40 에 있는 request를 보내고 response를 받습니다.
response의 길이가 63바이트로 지정되어 있습니다.
테스트를 해보았을 때 63개 이하의 개수를 찍히되 64개 이상의 개수로는 찍히지 않습니다.
전체 메뉴얼은 첨부했습니다.
응답이 63바이트로 되어 있는 것으로 나와 있습니다.
통신 설정은 어떻게 하셨나요?
115200 bps 던데...;;
시리얼 통신이고.. 통신 설정이 제대로 되어 있는 상태에서 같은 문제가 계속 발생 한다면 배선 확인을 한번 해 보셔야 할 거 같습니다.
길이라던지, 노이즈 탈 만한 문제가 있는지 등을 고려 하심이 좋겠습니다.
추가적으로 말씀 드리자면, 프로퍼티 노드를 이용해 Number of bytes at serial port 를 불러와 쓰시는게 좋습니다.
63 바이트가 들어오기까지 Delay 를 조정해서 데이터를 확인하시는 방법을 추천 드립니다.
아니면 1바이트씩 읽어 쉬프트레지스터에 모이는 데이터를 63바이트씩 잘라주셔도 됩니다만, 데이터 확인을 잘 하셔야 합니다.
설정부분에 메뉴얼에 나와있는 것처럼 시리얼포트 설정하였습니다.
프로퍼티노드를 말씀하셨는데 VISA Read부분에 상수로 63개 해놓는거와는 다른건가요?
한다면 어떻게 하는지 여쭤봐도 될까요
이런 식입니다.
63바이트를 고정으로 해 두면, 주어진 시간 내에 63바이트를 읽지 못할 경우 에러가 뜹니다.
이미지 같이 만들면 읽은 바이트까지 디스플레이 해 줍니다.