문제 : 모든 포장의 그래픽 컬러 바코드를 스캔하는 휴대형 장치가 있습니다. 장치를 자동으로 밀기 위해 사용할 수있는 트랙 장치가 있습니다. 이 트랙 장치는 직렬 포트를 통해 ASCII 코드를 가져와 작동합니다. Mac에서 FileMaker에서이 작업을 수행해야합니다. 따라서 터미널 프로그램 등은 없습니다 ...C++ 직렬 포트 질문
내가 지금까지 가지고있는 것 : Keyspan USB/Serial 어댑터를 구입했습니다. ZTerm이라는 프로그램을 사용하여 장치에 명령을 보내는데 성공했습니다. 예 : "C 7^M^J"는
난이 명령을 사용하여 터미널에서 동일한 작업을 수행 할 수 있었다 : 화면 다음 /dev/tty.KeySerial1 57600 및 (위와 같은 명령을 입력 하지만 입력 할 때 나는 캐리지 리턴과 줄 바꿈을 위해 Control-M과 Control-J을 누르기 만했다.)
이제 C++의 FileMaker 용 플러그인을 작성하고있다. 위에서 수행 한 작업을 C++에서 수행하려고합니다. FileMaker에서 해당 플러그인을 설치하면 해당 함수 중 하나만 호출하고 전체 프로세스를 바로 수행 할 수 있습니다.
기기에 연결할 수는 있지만 통화 할 수 없습니다. 아무것도 응답하지 않습니다.
나는이 사용 (성공적으로) 장치에 연결 시도했다 :
FILE *comport;
if ((comport = fopen("/dev/tty.KeySerial1", "w")) == NULL){...}
및
int fd;
fd = open("/dev/tty.KeySerial1", O_RDWR | O_NOCTTY | O_NDELAY);
이
내가 장치에 대화의 방법으로 지금까지 시도한 것입니다 :fputs ("C,7^M^J",comport);
또는
,fprintf(comport,"C,7^M^J");
또는
char buffer[] = { 'C' , ',' , '7' , '^' , 'M' , '^' , 'J' };
fwrite (buffer , 1 , sizeof(buffer) , comport);
또는
fwrite('C,7^M^J', 1, 1, comport);
질문 : 나는 터미널에서 장치와 ZTerm과를 사용하여 연결하면 , 내 보드를 설정 할 수 있었다 나는 그것이 그것이 여기에서 응답하지 않는 이유일지도 모른다라고 생각한다. 하지만 여기서 어떻게해야할지 모르겠다. 아무도 그 일을하는 방법을 알고 있는가? 나는이 시도했지만 작동하지 않았다
comport->BaudRate = 57600;
가 밖으로 수준의 솔루션이 많이있다하지만 그들은 모두는 이러한 termios.h 및 STDIO.H 같은 파일을 포함 호출합니다. 나는 이것들을 가지고 있지 않으며 어떤 이유로 든 나는 그것들을 다운로드 할 수 없다. 몇 가지 예제를 다운로드했지만 20 개의 파일이 있고 다른 파일을 찾을 수 없습니다 (위에 나열된 파일과 비슷 함). 이걸 찾을 필요가 있습니까? 난 단지 C++에 대해 충분히 모른다. 라이브러리를 다운로드 할 수있는 웹 사이트가 있는가?
또 다른 해결책은 터미널 명령을 C++에 넣는 것입니다. 그렇게 할 수있는 방법이 있습니까?
이렇게 나에게 미치고 있습니다. 저는 C++이 아니기 때문에 기본적인 프로그래밍 개념 만 알고 있습니다. C++ 전문가가 누구입니까? 필자는 이상적인 fput, fputs stuff처럼 이미 가지고있는 함수를 사용하여 작업하고 싶습니다. 감사합니다.
불행히도 휴대용 TTY ioctl API는 없습니다. 대신 POSIX API를 사용하는 것이 훨씬 좋습니다. c.f. termios, tcsetattr, et. al. –