मेरे पास एक PHP स्क्रिप्ट है जिसे मैं लिनक्स पर अपाचे के माध्यम से चलाने की कोशिश कर रहा हूं। TAP प्रोटोकॉल का उपयोग करके एक पेजिंग सिस्टम को सूचना भेजने के लिए स्क्रिप्ट PHP सीरियल का उपयोग करती है। मुद्दा यह है कि स्क्रिप्ट लिनक्स पर काम नहीं करती है चाहे मैं PHP फ़ाइल को लोकलहोस्ट करूं या रिमोट इन। स्क्रिप्ट विंडोज पर काम करती है लेकिन लिनक्स पर काम नहीं करती है

मैंने यूएसबी सीरियल से सीरियल पोर्ट को वास्तविक सीरियल पोर्ट में स्वैप करने का प्रयास किया है और यह काम नहीं किया है, मैंने इसे सर्वर से और रिमोट कनेक्शन से चलाने की कोशिश की है और नीचे काम किया है, मैंने सिर्फ एक भेजने के लिए कोड बदलने की कोशिश की है सीरियल पोर्ट पर संदेश मैं PHP के साथ संदेश भेजने में असमर्थ था, मैंने अजगर का उपयोग करके बंदरगाह पर संदेश प्राप्त करने का प्रयास किया है और बंदरगाह पर एक संदेश भेजने और अजगर का उपयोग करके एक प्राप्त करने में सक्षम था ताकि बंदरगाह काम कर रहा हो।

<?php
header('Access-Control-Allow-Origin: *');
include "php_serial.class.php";

$pagerSerial = new phpSerial();
$pagerSerial->deviceSet("/dev/ttyUSB0");
$pagerSerial->confBaudRate(9600);
$pagerSerial->confParity("none");
$pagerSerial->confCharacterLength(8);
$pagerSerial->confStopBits(1);
$pagerSerial->confFlowControl("none");


$pagerSerial->deviceOpen();


$msg_to = 102;
$msg_text = "Test"; 

$message = chr(2).$msg_to.chr(13).$msg_text.chr(13).chr(3);
$checksum = calcChecksum($message);
$message .= $checksum.chr(13);
$CR = chr(13);
$end = chr(27).chr(4).chr(13);
$login = chr(27)."PG1".chr(13);

$pagerSerial->sendMessage($CR);
sleep(2);
$pagerSerial->sendMessage($message);
sleep(2);
$pagerSerial->sendMessage($end);


function calcChecksum($message) {
$split = str_split($message); $sum = 0;
foreach ($split as $value) { $numb = ord($value); $sum += $numb; }
$d3 = 48 + $sum - intval($sum / 16) * 16;
$sum = intval($sum / 16);
$d2 = 48 + $sum - intval($sum / 16) * 16;
$sum = intval($sum / 16);
$d1 = 48 + $sum - intval($sum / 16) * 16;
return chr($d1).chr($d2).chr($d3);
};

मुझे नहीं पता कि यह विंडोज़ पर क्यों काम करता है, लेकिन लिनक्स पर नहीं। जब मैं अजगर का उपयोग करता हूं तो मैं पोर्ट को पाइसरियल के साथ काम कर सकता हूं। मुझे पाइथन पर स्क्रिप्ट काम नहीं मिल रही है, लेकिन मैं कोशिश कर रहा हूं। अंत में यह उस इंटरफ़ेस के लिए PHP में काम करना सबसे अच्छा होगा जिसे मैं लंबे समय में सेटअप करने का प्रयास कर रहा हूं। कोई सुराग क्यों यह एक ओएस में काम करेगा, लेकिन दूसरे में नहीं?

संपादित करें: क्या Chrs सिस्टम के बीच भिन्न हो सकते हैं? मुझे लगता है कि विंडो और लिनक्स हैंडल कैरेक्टर अलग-अलग रिटर्न देता है, लेकिन पेजर सिस्टम को मैं जो टीएपी प्रोटोकॉल भेज रहा हूं उसे समझने के लिए मुझे बस उस डेटा को भेजने की जरूरत है।

0
god_necro 5 सितंबर 2019, 18:54

1 उत्तर

सबसे बढ़िया उत्तर

विंडोज डिफ़ॉल्ट रूप से chr(13).chr(10) के रूप में रिटर्न को संभालता है, इसलिए linux पर आपको chr(10) जोड़ने की आवश्यकता होती है ताकि TAP रिटर्न का उपयोग कर सके। जैसा कि उपयोगकर्ता डेव ने उल्लेख किया है। इसे बंद करने के लिए टिप्पणी में इसे जोड़ना।

0
god_necro 19 सितंबर 2019, 13:10