问题:我有一个手持设备,可以扫描所有包装上的图形彩色条码。我可以使用一个轨道设备,它会自动滑动设备。该跟踪设备通过串行端口获取 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){...}
和
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 时,我能够将波特率设置为 57600。我认为这可能是它在这里没有响应的原因。但我不知道该怎么做......有没有人知道怎么做?我试过这个,但没有奏效:
comport->BaudRate = 57600;
有很多类解决方案,但他们都称这些包含文件,如 termios.h 和 stdio.h。我没有这些,无论出于何种原因,我都找不到它们来下载。我已经下载了一些示例,但其中有 20 个文件,它们都在调用我找不到的其他文件(如上面列出的文件)。我需要找到这些吗?如果需要,在哪里?我只是对 C++ 不够了解 有没有可以下载库的网站?
另一种解决方案可能是将这些终端命令放在 C++ 中。有没有办法做到这一点?
所以这一直让我发疯。我不是 C++ 人,我只知道基本的编程概念。有没有 C++ 专家?理想情况下,我希望它只使用我已经拥有的功能,比如那些 fwrite、fputs 的东西。谢谢!