我购买了一个在 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
编写脚本:
分析脚本:
抱歉,它是一个图像,那是因为我无法从 VM 复制。
提前致谢!
恐怕您混淆了 shell 脚本和 C 程序。“C 脚本”的概念实际上并不存在,您的脚本试图做的只是将 C 源代码(即从起始
#include
CPP 指令到main
函数的右括号的所有内容)打印到控制台。错误消息看起来有点像您试图编译您的 shell 脚本。
相反,您必须做的是编译您的 C 代码并执行生成的二进制文件。