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

0