2017-03-21 11 views
2

USB를 RS485 어댑터로 사용하여 내 컴퓨터에 연결된 Arduino 보드에 2201, 2211 등의 바이트를 보내려고했습니다. 나는 그것이 내가 명령 echo 2 > /dev/ttyUSB0;echo 2 > /dev/ttyUSB0;echo 0 > /dev/ttyUSB0;echo 1 > /dev/ttyUSB0를 사용하여 내 아두 이노에 2201를 보내려고 할 때마다 요 내 컴퓨터, 가끔 그냥하지 않는 일반적으로 예상대로 LED를하지만, 다른 시간을 돌려, 작동 연결 그러나리눅스 - RS485와의 시리얼 통신

, , bash: /dev/ttyUSB0: Input/output error 표시. 이를 통해 얻는 어떤 방법이있는 경우

Screenshot

, 그 위대한 것. 또한 Arduino에 데이터를 보내려면 echo X > /dev/ttyUSB0보다 더 좋은 명령이 있는지 알려 주시기 바랍니다. 직렬 통신이 처음인데이를 수행하는 가장 좋은 방법은 무엇인지 모르겠습니다.

답변

0

질문 : 왜 echo 2201 > /dev/ttyUSB0이 아닌 복수 echo 문을 사용하고 있습니까? 후자는 실질적으로 타이핑이 덜 필요합니다.

해결 방안과 방금 제안한 문제 중 하나는 echo 명령이 출력에 개행을 추가한다는 것입니다. 그래서 출력물을 파일로 보내야한다면; 이 같은 :

echo 2 >afile; echo 2 >>afile; echo 0 >>afile; echo 1 >>afile 

내가 들어있는 파일로 끝날 :

2\n2\n0\n1\n 

을 그리고 당신이 직렬 포트를 보내는 정확히입니다. 당신은 너무, 줄 바꿈을 억제하는 에코하는 -n 옵션을 사용할 수 있습니다

echo -n 2201 > /dev/ttyUSB0 

당신은 아마 시리얼 포트와 상호 작용하는 쉘이 아닌 다른 뭔가를 사용하여 더 나을 것입니다. 파이썬 (pyserial 모듈 포함)은 좋은 선택이지만, 그 밖의 것에 대해서도 마찬가지입니다. 쉘을 계속 사용하고 있다면, this onethis one과 같이 살펴볼 가치가있는 다른 스택 교환 (stackexchange) 질문이 있습니다.

대화 형에 직렬 포트에 대한 액세스 권한을 부여하려는 경우 화면 (예 : 화면, 키보드, 피코 콤, 원색, 미니 콤 등)에 도움이되는 여러 가지 일반적인 응용 프로그램이 있습니다.

+0

"입력/출력"오류가 표시되는 이유에 대한 내 질문에 대답하지 않았습니다. – Coto