FT232 USB serieport och PHP funkar ibland

Här diskuteras programmering och utveckling
tmot
Inlägg: 24
Blev medlem: 12 aug 2007, 16:45
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS
Ort: Trollhättan

FT232 USB serieport och PHP funkar ibland

Inlägg av tmot »

Hej
Jag har en USB->Serieportsadapter som fungerar utmärkt i Windows XP SP3. I Ubuntu 9.04 så försöker jag läsa lite data från den. Mitt problem är att det fungerar.... ibland :( . Alltså, jag kan skicka data 3-5 gånger innan den faktiskt dyker upp i terminalen. Min fråga är om det är någon här som känner till något om detta? PHP-koden som försöker läsa ser ut enligt nedan:

<?php
$fp=fopen("/dev/ttyUSB0", "r");
if (!$fp)
{
echo "Uh-oh. Port not opened.";
}
else
{
$buffer="";
echo "<p>Reading data...";
$buffer = fread($fp,14);
//$buffer = ltrim($buffer,"\x02");
//$buffer = rtrim($buffer,"\x03");
echo "<p>TagID: ";
print $buffer;
print " ----- ";
print strlen($buffer);
fclose ($fp);
}
?>

Någon som har ett tips? USB-Serie-chipet är ett FT232.

Tack på förhand.
/Mattias
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

Re: FT232 USB serieport och PHP funkar ibland

Inlägg av Lars »

För att serieportskommunikationen ska fungera måste du använda rätt hastighet, handskakning, bytestorlek, stoppbitar o.s.v. Har du gjort det? Det enklaste är nog att använda någonting färdigt för PHP, testa med http://www.phpclasses.org/browse/package/3679.html
tmot
Inlägg: 24
Blev medlem: 12 aug 2007, 16:45
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS
Ort: Trollhättan

Re: FT232 USB serieport och PHP funkar ibland

Inlägg av tmot »

Tack för tipset! Jag har nu gjort ett litet exempel enligt nedan där jag använder php-serial-klassen. Tyvärr har jag samma problem, alltså, får bara svar då och då. Ser ni något fel på min del av koden? Som sagt fungerar det utmärkt i WIndows XP och i Ubuntu med Minicom.

Jag vore mycket tacksam om någon kunde kolla på min del av koden.
Tack på förhand!
/Mattias

<?php
include "php_serial.class.php";

// configure the serial port using php_serial.class.php
$serial = new phpSerial;
$serial->deviceSet("/dev/ttyUSB0");
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");
$serial->deviceOpen();

print "Device open...\n";
while(1)
{
$rfidTag = $serial->readPort();
if ($rfidTag != NULL)
{
$rfidTagTrim = trim($rfidTag, "\x02..\x03");
print("The shortened tag is $rfidTagTrim\n");
if (strlen($rfidTagTrim) < 10)
{
echo "oops";
}
}
usleep(100000);
}
?>
Skriv svar

Återgå till "Programmering och webbdesign"