Comment Lire le Port Série RS232 en PHP comme ce Programme QBasic

J'essaie de port suivant la petite QBASIC programme (qui fonctionne à 100%) de PHP:

OPEN "com1:2400,n,8,1,DS," FOR RANDOM AS #3
OPEN "data.dat" FOR OUTPUT AS #2
REM read 17 chars from the port
scale$ = INPUT$(17, #3)
PRINT scale$
WRITE #2, scale$
CLOSE #2
CLOSE #3
SYSTEM

Actuellement, je suis en l'appelant dans son compilé (exe) forme à partir de PHP (sur WAMP5) mais j'aimerais me débarrasser de la QBASIC et de l'appeler directement à partir de PHP.

J'ai écrit cette fonction PHP mais il se bloque à la fgets ():

function read_port($port='COM1:', $length=17, $setmode=TRUE, $simulate='') {
    if ($simulate){
        $buffer = '"'.strval(rand(1000, 2000));
        return $buffer;
    }
    if ($setmode){
        shell_exec('mode com1: baud=2400 parity=n data=8 stop=1 to=on xon=off odsr=on octs=on dtr=on rts=on idsr=on');
    }
    $fp = fopen($port, "rb+");
    if (!$fp) {
        file_put_contents('debug1.log','COM1: could not open'."\n",FILE_APPEND);
    } else {
        $buffer = fgets($fp, $length); //<-- IT JUST HANGS HERE DOING NOTHING !
        fclose ($fp);
    }
    return $buffer;

}

Je suis en utilisant cette ligne PHP pour appeler la fonction ci-dessus:

$res = read_port('COM1:', 17, TRUE, SIMULATE_SCALE);

Toute aide sera creatly apprécié! J'ai fait renoncé. Si QBASIC pouvez le faire correctement, alors nous devons être capables de faire ce travail avec PHP!

Une solution à ce problème?

OriginalL'auteur CJ_ | 2010-07-12