問題: 我有一個手持設備,可以掃描所有包裝上的圖形顏色條形碼。有一個我可以使用的軌道設備會自動滑動設備。該跟蹤設備通過串行端口接收ascii碼來運行。我需要讓這個東西在Mac上的FileMaker中工作。所以沒有終端程序等...C++串行端口問題
我到目前爲止: 我買了Keyspan USB /串行適配器。使用名爲ZTerm的程序,我成功地向設備發送命令。 示例: 「C,7^M^J」
我還能夠使用該命令做同樣的事情在終端:屏幕/dev/tty.KeySerial1 57600 ,然後在上述相同的命令鍵入(但是當我輸入時,我只是命中Control-M和Control-J進行回車和換行)
現在我正在爲FileMaker編寫一個插件(當然是C++)。我想要得到上面我在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++專家?理想情況下,我希望使用我已有的函數,比如fwrite,fputs等。 謝謝!
不幸的是,沒有便攜式TTY ioctl API。相反,使用POSIX API會更好。 C.F. termios,tcsetattr等。人。 – 2009-10-20 19:10:51