Serial Comm problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I'm pretty much a php newbie but have been programming for years in other languages

Anyway...

Using /dev/ttyS0. I need to set the serial port to 9600, send one command to an embedded processor board, then change the baud rate to 57600 and wait for a response. My code is working up to (and including) sending the command (and is being received correctly and acted on by the other device) but hangs up while waiting for the device to ACK back.
---------------------------------------------------------------------------------
//set ttyS0 speed to 9600 to send  command
     exec('stty -F /dev/ttyS0 9600');

 // first open comport if it exists
     $fp = fopen ("/dev/ttyS0", "w+");
     if (!$fp) {
         die( "Uh-oh. Port not opened.");
     } else {
   }

//send command
  $fw = fwrite($fp, "1*219999\r\n");


//set ttyS0 speed to 57600 to for bootloader
   exec('stty -F /dev/ttyS0 57600');

// wait for bootloader to send "^" (does not send CR or LF)

   echo "Waiting for Bootloader Active Character.....\n" ;


// ******************************Were good to here*********************************


  Do {
     $InData = fgets($fp,1);
    }
  While ($InData != "^") ;
-------------------------------------------------------------

I have also tried both While ($InData !=="^") ; and While ($InData <> "^") ; for the last line but it always hangs in this loop and times out after 30 seconds

The ^ is sent by the remove device with \r\n so I assumed telling fgets to look for one character should be enough but apparently it isn't.

Any help would be greatly appreciated

Ken

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux