Pfe*_*fer 2 c++ unix filemaker serial-port
问题:我有一个手持设备可以扫描所有包装上的图形颜色条形码.我可以使用跟踪设备自动滑动设备.该跟踪设备通过串行端口获取ascii代码.我需要让这个东西在Mac上的FileMaker中运行.所以没有终端程序等......
到目前为止我得到了什么:我买了一个Keyspan USB /串口适配器.使用名为ZTerm的程序,我成功地向设备发送命令.示例:"C,7 ^ M ^ J"
我也可以使用这个命令在终端中执行相同的操作:screen /dev/tty.KeySerial1 57600然后输入上面的相同命令(但是当我输入时我只需按下Control-M和Control-J退货和换行)
现在我正在为FileMaker编写一个插件(当然是用C++编写的).我希望得到我在C++中所做的事情,所以当我在FileMaker中安装该插件时,我可以调用其中一个函数并让整个过程在那里进行.
我能够连接到设备,但我无法与它通信.它没有回应任何事情.
我尝试使用以下方法连接到设备(成功):
FILE *comport;
if ((comport = fopen("/dev/tty.KeySerial1", "w")) == NULL){...}
Run Code Online (Sandbox Code Playgroud)
和
int fd;
fd = open("/dev/tty.KeySerial1", O_RDWR | O_NOCTTY | O_NDELAY);
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止与设备交谈的方式:
fputs ("C,7^M^J",comport);
Run Code Online (Sandbox Code Playgroud)
要么
fprintf(comport,"C,7^M^J");
Run Code Online (Sandbox Code Playgroud)
要么
char buffer[] = { 'C' , ',' , '7' , '^' , 'M' , '^' , 'J' };
fwrite (buffer , 1 , sizeof(buffer) , comport );
Run Code Online (Sandbox Code Playgroud)
要么
fwrite('C,7^M^J', 1, 1, comport);
Run Code Online (Sandbox Code Playgroud)
问题:当我从终端连接到设备并使用ZTerm时,我能够将波特率设置为57600.我认为这可能就是为什么它在这里没有响应.但我不知道该怎么做......有谁知道怎么做?我试过这个,但它不起作用:
comport->BaudRate = 57600;
Run Code Online (Sandbox Code Playgroud)
有很多类解决方案,但他们都称这些包括termios.h和stdio.h等文件.我没有这些,无论出于何种原因,我找不到它们下载.我已经下载了一些例子,但是其中有20个文件,他们都在调用我找不到的其他文件(如上面列出的那些文件).我是否需要找到这些,如果是这样的话?我对C++还不够了解是否有可以下载库的网站?
另一种解决方案可能是将这些终端命令放在C++中.有没有办法做到这一点?
所以这让我发疯了.我不是C++人,我只懂基本的编程概念.有人在那里是C++专家吗?理想情况下,我希望能够使用我已经拥有的函数,比如fwrite,fputs.谢谢!