Debian, Linux에서 실행되는 HMI를 구입했습니다. HMI에는 제가 작동시키려는 직렬 포트가 있습니다. 내 프로젝트에는 몇 초 동안 DTR을 높게 설정하여 해결된 특정 문제가 있었습니다. 다음 스크립트를 시도했습니다.
#!/bin/bash
MySerialPort="/dev/ttyS0"
MyLatency="2"
echo "#include <fcntl.h>
#include <sys/ioctl.h>
main()
{ int fd; fd = open(\"${MySerialPort}\",O_RDWR | O_NOCTTY );
int RTS_flag; RTS_flag = TIOCM_RTS;
ioctl(fd,TIOCMBIS,&RTS_flag);
sleep (${MyLatency});
ioctl(fd,TIOCMBIC,&RTS_flag);
close(fd); } "
그러나 이것은 작동하지 않았고 다음과 같은 오류가 발생했습니다.
내가 이미 시도한 스크립트를 수정하거나 다른 스크립트를 만드는 방법에 대한 팁을 줄 수 있는 사람이 있나요?
고쳐 쓰다
업데이트 2
스크립트:
분석 스크립트:
죄송합니다. 이미지입니다. 가상 머신에서 복사할 수 없기 때문입니다.
미리 감사드립니다!
답변1
쉘 스크립트와 C 프로그램을 혼동하고 계신 것 같습니다. "C 스크립트"라는 개념은 실제로 존재하지 않습니다. 스크립트가 수행하려는 모든 작업은 C 소스 코드(즉, #include
CPP 시작 명령부터 함수의 닫는 괄호까지의 모든 것 main
)를 콘솔에 인쇄하는 것입니다.
오류 메시지는 쉘 스크립트를 컴파일하려고 하는 것과 약간 유사합니다.
대신에 해야 할 일은 C 코드를 컴파일하고 결과 바이너리를 실행하는 것입니다.