简体   繁体   中英

I am trying to communicate with a micro controller through a serial port . but my php script is giving me an error

<?php
include "php_serial.class.php";

// Let's start the class
$serial = new phpSerial();

// First we must specify the device. This works on both Linux and Windows (if
// your Linux serial device is /dev/ttyS0 for COM1, etc.)
$serial->deviceSet("COM3");

// Set for 9600-8-N-1 (no flow control)
$serial->confBaudRate(9600); //Baud rate: 9600
$serial->confParity("none");  //Parity (this is the "N" in "8-N-1")
$serial->confCharacterLength(8); //Character length     (this is the "8" in "8-N-1")
$serial->confStopBits(1);  //Stop bits (this is the "1" in "8-N-1")
$serial->confFlowControl("none");

// Then we need to open it
$serial->deviceOpen();

// Read dataa
$read = $serial->readPort();

print "<pre>";
print_r($read);
print "</pre>";

// Print out the data
echo $read;
// print exec("echo 'r9g9b9' > /dev/ttyACM0");
print "RESPONSE(1): {$read}<br><br>";

// If you want to change the configuration, the device must be closed.
$serial->deviceClose();

// If you want to change the configuration, the device must be closed.
$serial->deviceClose();
?>

These are the errors

Warning: Unable to set baud rate: in C:\\xampp\\htdocs\\sensorsApp\\php_serial.class.php on line 253

Warning: Unable to set parity : in C:\\xampp\\htdocs\\sensorsApp\\php_serial.class.php on line 299

Warning: Unable to set character length : in C:\\xampp\\htdocs\\sensorsApp\\php_serial.class.php on line 337

Warning: Unable to set stop bit length : in C:\\xampp\\htdocs\\sensorsApp\\php_serial.class.php on line 375

Fatal error: Unable to set flow control : in C:\\xampp\\htdocs\\sensorsApp\\php_serial.class.php on line 424

PS how to save the received data into mysql database

I assume your php_serial.class.php is this: https://code.google.com/p/php-serial/source/browse/trunk/php_serial.class.php?r=11

You should first do a var_dump($serial) before setting the baud rate to see if the initialization worked as intended. It should roughly contain the following:

_os = "windows";
_windevice = "COM3"
_device = "\\.\com3"
_dState = 1  // SERIAL_DEVICE_SET

If that worked so far, open a shell and see if manually setting the baud rate works:

mode COM3 BAUD=9600

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM