Я пытаюсь установить последовательную связь с моим локальным веб-сервером, поэтому я создал файл 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 /, но это ничего не решило. Любая помощь приветствуется.