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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
| function set_com($com_no, $baud, $parity, $data, $stop)
{
//
// check com port number is either 1 or 2
//
switch ($com_no) {
case 1 :
$port_name = "COM1:";
break;
case 2 :
$port_name = "COM2:";
break;
default :
echo("Error : a COM port number of ".$com_no." is not allowed. Allowed range is [1,2]<br>");
exit;
}
//
// check baud rate
//
if (($baud < 1200) or ($baud > 9600 )) {
echo("Error : a baud rate of ".$baud." is not allowed. Allowed range is [1200,9600]<br>");
exit;
}
//
// check parity
//
switch ($parity) {
case "EVEN" :
case "eVEN" :
case "Even" :
case "even" :
case "E" :
case "e" :
$parity = "E";
break;
case "ODD" :
case "oDD" :
case "Odd" :
case "odd" :
case "O" :
case "o" :
$parity = "O";
break;
case "NONE" :
case "nONE" :
case "None" :
case "none" :
case "N" :
case "n" :
$parity = "N";
break;
default :
echo("Error : a parity of ".$parity." is not allowed. Allowed settings are [EVEN, ODD, NONE]<br>");
exit;
}
//
// check data bits is either 7 or 8
//
switch ($data) {
case 7 :
case 8 :
break;
default :
echo("Error : a data bits value of ".$data." is not allowed. Allowed range is [7,8]<br>");
exit;
}
//
// check stop bits is either 0 or 1
//
switch ($stop) {
case 0 :
case 1 :
break;
default :
echo("Error : a stop bits value of ".$stop." is not allowed. Allowed range is [0,1]<br>");
exit;
}
//
// use DOS mode command to set com port parameters
//
$cmd_str = "MODE $port_name BAUD=$baud PARITY=$parity DATA=$data STOP=$stop TO=ON OCTS=ON ODSR=OFF IDSR=OFF RTS=HS DTR=ON";
echo("<br>Running DOS command : <br> $cmd_str ....<br>");
$output = array();
exec($cmd_str, $output, $result);
echo("<br>Output is : <br><br>");
print_r($output);
//
// check exit status from MODE command
//
switch ($result) {
case 0 :
echo("<br>COM port parameters set successfully.<br>");
break;
default :
echo("<br>Error while trying to set COM port parameters - exiting.<br>");
exit;
}
}
//Configuration du port série
$com_no="1";
$baud="9600";
$parity="none";
$data="7";
$stop="1";
set_com($com_no, $baud, $parity, $data, $stop);
//Ouverture du port série
echo("<br>Trying to open serial port COM$com_no ... <br>");
$serial_port = fopen("COM$com_no", "w+b");
if ($serial_port) {
echo("<br>Successfully opened serial port COM$com_no.<br>");
}
else {
echo("<br>Error while trying to open serial port COM$com_no - exiting.<br>");
exit;
}
//Ecriture d'une chaine sur le port
$result=fwrite($serial_port, "at");
fflush($serial_port);
if ($result)
{
echo("<br>Successfully wrote $result bytes to serial port COM$com_no.<br>");
}
else
{
echo("<br>Error while trying to write to serial port COM$com_no.<br>");
}
//Lecture de données sur le port Com
if(fread($serial_port))
{
echo "<br>On lit le port...";
}
else
{
echo "<br>Impossible de lire le port.";
}
/*echo("<br>Completed data aquisition.<br>");
echo "<br><br>Chaine lue: ".$lue;*/
//Fermeture du port com
echo("<br>Trying to close serial port COM$com_no ... <br>");
$result = fclose($serial_port);
if ($result)
{
echo("<br>Successfully closed serial port COM$com_no.<br>");
}
else
{
echo("<br>Error while trying to close serial port COM$com_no.<br>");
} |
Partager