如何在 Debian 中使用 C 脚本将 DTR 设置为高?

如何在 Debian 中使用 C 脚本将 DTR 设置为高?

我购买了一个在 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 源代码(即从起始#includeCPP 指令到函数结束括号的所有内容main)打印到控制台。

错误消息看起来有点像您尝试编译 shell 脚本。

相反,您必须做的是编译 C 代码并执行生成的二进制文件。

相关内容