我正在尝试从我的本地网络服务器进行串行通信,因此我创建了一个 c++ 文件并对其进行了编译,使其进行实际通信并使用 GCC 对其进行了编译:
#include <iostream>
#include <fstream>
using namespace std;
char c = 2;
char hexdata = (c & 0xFF);
int main () {
fstream fs;
fs.open ("/dev/ttyS0", std::fstream::out | std::fstream::app);
fs << hexdata;
fs.close();
return 0;
}
到目前为止,它可以正常工作,我可以读取发送的数据。现在我将其复制到 /usr/lib/cgi-bin 并将其命名为 serialOut.cgi,并尝试从终端执行它,它也可以正常工作,但是当我尝试从浏览器打开它时,它给出了一个内部错误:
虽然我在同一个目录中还有另外两个 cgi 脚本运行良好。我尝试检查权限,结果也没有问题:
-r-xr-xr-x 1 root root 34408 Mar 30 18:37 serialout.cgi
另外,error.log 没有错误。这个问题的原因是什么?我该如何解决?
编辑
我已经编辑了我的代码,现在内部服务器错误已经消失,并且它显示一条消息,但是串行数据仍然没有发送。
#include <iostream>
#include <fstream>
using namespace std;
char c = 2;
char hexdata = static_cast<char>(c & 0xFF);
int main () {
fstream fs;
fs.open ("/dev/ttyS0", std::fstream::out | std::fstream::app);
fs << hexdata;
fs.close();
cout << "Content-type: text/html" << endl << endl;
cout << "<html><body>Done!</body></html>";
return 0;
}
我尝试将 /dev/ 的别名添加到实际目录 /dev/,但仍然没有解决任何问题。任何帮助都值得感激。