Sorry voor de slechte start, ik zal proberen mijn stappen hier op te lijsten.
Als microcontroller gebruik ik de ADuC832 van Analog Devices.
Ik ben er vanuit gegaan dat putty en de serial class dezelfde instellingen gebruiken om een verbinding te maken met de microcontroller. In de class staan de verschillende instellingen opgelijst en deze heb ik gebruikt in mijn code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| require_once("serialClass.php");
if (isset($_GET["actie"])) {
$serial = new phpSerial;
$serial->deviceSet("/dev/ttyUSB0");
$serial->confBaudRate(9600);
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confParity("none");
$serial->confFlowControl("xon/xoff");
$serial->deviceOpen();
$serial->sendMessage($_GET["actie"] & chr(13));
$serial->deviceClose();
echo "ACK\n"; |
De variabele $_GET["actie"] komt van het formulier met de knoppen en zou momenteel een bepaald ledje moeten laten branden. Bij uitvoering van deze code gebeurde er niets op de microcontroller.
De uitvoer van het commando "stty -F /dev/ttyUSB0" gaf mij dit resultaat:
sam@sam-laptop:~$ stty -F /dev/ttyUSB0
speed 9600 baud; line = 0;
eof = ^A; min = 1; time = 0;
-brkint -icrnl ixoff -imaxbel
-opost -onlcr
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke
Na dit bekomen te hebben heb ik de functie "confFlowControl" in de serial class aangepast:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| function confFlowControl ($mode)
{
if ($this->_dState !== SERIAL_DEVICE_SET)
{
trigger_error("Unable to set flow control mode : the device is either not set or opened", E_USER_WARNING);
return false;
}
$linuxModes = array(
"custom" => "-brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke",
"none" => "clocal -crtscts -ixon -ixoff",
"rts/cts" => "-clocal crtscts -ixon -ixoff",
"xon/xoff" => "-clocal -crtscts ixon ixoff"
); |
Bij de array $linuxModes heb ik "custom" toegevoegd en die waarde geef ik als parameter op in mijn eerste code. Ook dit veranderde niets op de microcontroller.
Na wat verder gelezen te hebben zag ik dat in windows rts uit moest staan. Dat heb ik ook veranderd in de serial class maar dat veranderde ook niets op de microcontroller,
PHP:
1
2
3
4
5
| $windowsModes = array(
"none" => "xon=off octs=off rts=on",
"rts/cts" => "xon=off octs=on rts=hs",
"xon/xoff" => "xon=on octs=off rts=on",
); |
Dit is het vervolg van het vorige blok code en bij "xon/xoff" heb ik rts op off gezet.
Dit is de eerste keer dat ik werk met een serieele poort, met php icm classes heb ik al meer gewerkt.
Hopenlijk geeft dit een duidelijker beeld op mijn situatie
[
Voor 0% gewijzigd door
MueR op 16-03-2011 18:36
]