ฉันกำลังพยายามสร้างการสื่อสารแบบอนุกรมจากเว็บเซิร์ฟเวอร์ในพื้นที่ของฉันดังนั้นฉันจึงสร้างไฟล์ 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 / แต่ก็ยังไม่ได้แก้อะไรเลย ความช่วยเหลือใด ๆ ชื่นชม