Update readme
This commit is contained in:
parent
fe25005107
commit
43002de579
64
README.md
64
README.md
@ -17,7 +17,7 @@ that will resolve with a duplex stream for the port.
|
|||||||
```php
|
```php
|
||||||
$serial = new SerialFactory();
|
$serial = new SerialFactory();
|
||||||
$serial->open("/dev/ttyUSB0", 115200)
|
$serial->open("/dev/ttyUSB0", 115200)
|
||||||
->then(...);
|
->then(function (DuplexStreamInterface $stream) { ... });
|
||||||
```
|
```
|
||||||
|
|
||||||
You may find that you need line buffering, in which case you should wrap the stream in a
|
You may find that you need line buffering, in which case you should wrap the stream in a
|
||||||
@ -28,36 +28,34 @@ event whenever a matching prompt is detected, and with `$bufferOutput` you will
|
|||||||
an `output` event with all the `line`s emitted since the last `prompt`.
|
an `output` event with all the `line`s emitted since the last `prompt`.
|
||||||
|
|
||||||
```php
|
```php
|
||||||
$serial->open("/dev/ttyUSB0", 115200)
|
// Wrap our stream and use '#> ' as the prompt pattern.
|
||||||
->then(function (DuplexStreamInterface $stream) {
|
$shell = new LineBufferedDuplexStream($stream, promptPattern: '/\#\> /', bufferOutput:true);
|
||||||
// Wrap our stream and use '#> ' as the prompt pattern.
|
|
||||||
$shell = new LineBufferedDuplexStream($stream, promptPattern: '/\#\> /', bufferOutput:true);
|
// Prepare the commands to execute, in order. These are the commands you would use
|
||||||
// Prepare the commands to execute, in order
|
// on an OpenWRT router to configure the WiFi password for the "main" WiFi interface.
|
||||||
$commands = [
|
$commands = [
|
||||||
'set first="value"',
|
'uci set wireless.main.key="pennyisafreeloader"',
|
||||||
'set second="something"',
|
'uci commit wireless',
|
||||||
'apply',
|
'wifi restart',
|
||||||
];
|
];
|
||||||
// Execute the next command once we get a prompt
|
|
||||||
$shell->on("prompt", function () use ($shell, &$commands) {
|
// Execute the next command once we get a prompt
|
||||||
$command = array_shift($commands);
|
$shell->on("prompt", function () use ($shell, &$commands) {
|
||||||
if (!$command) {
|
$command = array_shift($commands);
|
||||||
// Closing the wrapper closes the stream
|
if (!$command) {
|
||||||
$shell->close();
|
// Closing the wrapper closes the stream
|
||||||
return;
|
$shell->close();
|
||||||
}
|
return;
|
||||||
echo "# \e[1m".$command."\e[0m\n";
|
}
|
||||||
$shell->write($command."\n");
|
echo $command."\n";
|
||||||
});
|
$shell->write($command."\n");
|
||||||
// Receives each complete line
|
});
|
||||||
$shell->on("line", function ($line) {
|
|
||||||
// ...
|
// Receives all the output lines from the last command.
|
||||||
});
|
$shell->on("output", function(array $lines) {
|
||||||
// Receives all the output lines from the last command.
|
echo " ".join("\n ",$lines)."\n";
|
||||||
$shell->on("output", function(array $lines) {
|
});
|
||||||
// ...
|
|
||||||
});
|
// write "echo" to the shell on our fictive device to get a fresh prompt
|
||||||
// write "config" to our fictive device to enable config mode
|
$shell->write("echo\n");
|
||||||
$shell->write("config\n");
|
|
||||||
});
|
|
||||||
```
|
```
|
||||||
|
Loading…
x
Reference in New Issue
Block a user