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