Toon posts:

[php]Aansturing seriele poort in PHP of VB?

Pagina: 1
Acties:
  • 64 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo allemaal,

ik moet binnenkort een webbased aansturing gaan bouwen voor een seriele poort (rs232). De data moet in een bepaald protocol de seriele poort uitkomen, te bedienen via een web interface dus.
Het zou fijn zijn als dit in PHP zou kunnen vanwege:
1)de kosten
2) mijn programmeerervaring

Ik heb al redelijk wat info/scripts gevonden (zoals http://www.phpfreaks.com/quickcode/code/156.php) en ik heb inmiddels ontdekt dat 2 mogelijkheden voor de hand liggen:
1)alles in PHP doen.
2)een combi maken tussen een VB stuk en een PHP stuk (mscomm, .exe aansturen).

Omdat mijn ervaring met VB niet heel groot is zou ik het liest voor full PHP gaan. Ik moet uiteraard verantwoorden waarom ik gekozen heb voor een bepaalde opzet, daarom heb ik wat vragen:
-is er iemand die hier ervaring mee heeft?
-wat zou je aanbevelen?
-wat kost het minste tijd?
-Kan iemand uit ervaring vertellen dat het in PHP goed mogelijk is?

alvast bedankt!

Verwijderd

Naar mijn weten kun je niet direct uit php een poort aansturen, je zult dus toch een proggie moeten maken die dat wel direct kan (c++ of vb bv.)
die programma's zou je dan wel weer kunnen aansturen uit php

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

In PHP is het volgens mij alleen maar mogelijk door vanuit de shell een ander programma aan te roepen, maar het moet hoe dan ook mogelijk zijn volgens mij. Ik denk alleen dat je niet ontkomt aan een extern programmatje.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • sjoerdb2
  • Registratie: Juli 2001
  • Laatst online: 09-05-2025
een usercomment uit de handleiding van php, misschien kun je er wat mee

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
// HOW TO USE PHP TO WRITE TO YOUR SERIAL PORT: TWO METHODS
$serproxy=true;
if ($serproxy) {
   // Use this code in conjunction with SERPROXY.EXE 
   // (http://www.lspace.nildram.co.uk/freeware.html)
   // which converts a Serial stream to a TCP/IP stream
   $fp = fsockopen ("localhost", 5331, $errno, $errstr, 30);
   if (!$fp) {
       echo "$errstr ($errno)";
   } else {
       $e = chr(27);
       $string  = $e . "A" . $e . "H300";
       $string .= $e . "V100" . $e . "XL1SATO";
       $string .= $e . "Q1" . $e . "Z";
       echo $string;
       fputs ($fp, $string );
       fclose ($fp);
   }
} elseif ($com1) {
   // Use this code to write directly to the COM1 serial port
   // First, you want to set the mode of the port. You need to set
   // it only once; it will remain the same until you reboot.
   // Note: the backticks on the following line will execute the 
   // DOS 'mode' command from within PHP
   `mode com1: BAUD=9600 PARITY=N data=8 stop=1 xon=off`;
   $fp = fopen ("COM1:", "w+");
   if (!$fp) {
       echo "Uh-oh. Port not opened.";
   } else {
       $e = chr(27);
       $string  = $e . "A" . $e . "H300";
       $string .= $e . "V100" . $e . "XL1SATO";
       $string .= $e . "Q1" . $e . "Z";
       echo $string;
       fputs ($fp, $string );
       fclose ($fp);
   }
}
?> 

Verwijderd

Topicstarter
De eerste versie wordt trouwens niet webbased,
het wordt een laptop (waarschijnlijk een mac) waar op de seriele poort een modem zit aangesloten.
Er moet een interface komen waarmee je commando's geeft (buttons oid)die vervolgens signalen in een protocol naar de modem stuurt.

Verwijderd

Ik ben met hetzelfde bezig als de persoon die deze topic starte.. Ik wil de seriele poort aansturen via php. Opzich lijkt dat geen probleem want het moet mogelijk zijn om via de shell met php een commando te sturen naar de com poort...

bijv zo (hoe maken jullie die stukken code nou eigenlijk zo duidelijk leesbaar?):

<?php
echo '<pre>';

// Outputs all the result of shellcommand "ls", and returns
// the last output line into $last_line. Stores the return value
// of the shell command in $retval.
$last_line = system('ls >/dev/ttyS0 ');

// Printing additional info
echo '
</pre>
<hr />Last line of the output: ' . $last_line . '
<hr />Return value: ' . $retval;
?>

het commando in de shell is dus ls >/dev/cua0 ... werkt prima met root rechten, maar niet met php, want apache gebruikt de user nobody.

de vraag is al volgt:

hoe kan ik de user nobody de rechten geven om naar de seriële poort te kunnen schrijven?

Alvast bedankt

Groetjes Martijn

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13-05 21:26

gorgi_19

Kruimeltjes zijn weer op :9

Martijnbier,

Open anders een nieuw topic met deze topicstart met eventueel een verwijzing naar dit topic. Jouw probleem is iets anders; grote kans dat men gaat reageren op eerdere posts en er dus discussies door elkaar heen gaan lopen, wat zonde is voor beide discussies :)

Deze gaat daarom ook dicht. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1

Dit topic is gesloten.