Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

Serieële Communicatie

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Voor een project op school zou ik graag via een web interface een webcamstream willen bekijken, de webcam kan bewogen worden via een paar knoppen op de webpagina.

Ik heb op het internet een PHP class gevonden waarmee ik mijn µc (Die werkt met een serieële poort) kan aansturen. Het probleem is dat dit enkel werkt wanneer ik eerst via putty/hyperterminal iets stuur naar de µc. Ik heb het al geprobeerd in Linux en in Windows (de voorkeur gaat uit naar Windows) maar ik vind geen oplossingen :(

De class is te vinden op deze website: snip

Iemand die hier ervaringen mee heeft of hier een oplossing voor heeft?

[ Voor 6% gewijzigd door Woy op 16-03-2011 13:03 ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Allereerst: Welkom op GoT,
Ik heb het al geprobeerd in Linux en in Windows (de voorkeur gaat uit naar Windows) maar ik vind geen oplossingen
Je vergeet echter om te vermelden wat je al geprobeerd hebt om het probleem op te lossen en wat daar niet bij wilde lukken.

Verder plaats je een link naar een externe site, met daarop een gevonden stuk code. Wij leveren hier in principe geen support op het werk van anderen. Het is geen probleem dat je jouw code daarop voortborduurt, maar je zult in eerste instantie zelf moeten debuggen, en achterhalen wat je probleem precies is. Als je dat gedaan hebt, en je komt er niet uit zien we hier graag kleine stukjes relevante code die je probleem illustreren.

Lees De Quickstart even door. Als je daarna nog wat meer informatie over je probleem geeft kunnen we je misschien helpen. Als je puur op zoek bent naar een Quickfix dan ben je hier aan het verkeerde adres.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
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 ]


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:48

MueR

Admin Devschuur® & Discord

is niet lief

Ik heb je post even voorzien van code tags, dat lees toffer :)

Anyone who gets in between me and my morning coffee should be insecure.