Debian

如何在 Debian 中使用 C 腳本將 DTR 設置為高?

  • December 13, 2019

我購買了一個在 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 原始碼(即從起始#includeCPP 指令到main函式的右括號的所有內容)列印到您的控制台。

錯誤消息看起來有點像您試圖編譯您的 shell 腳本。

相反,您必須做的是編譯您的 C 程式碼並執行生成的二進製文件。

引用自:https://unix.stackexchange.com/questions/557011