Nu har jag hittat felet.
Det är inget fel på koden i for-loopen. Felet låg i att file() läste radbrytningen också.
Först en titt på for-loopen som räknar ner: (Samma kod som tidigare)
Kod: Markera allt
for ($i = $startposition; $i >= $position; $i-=20)
{
$message =chr(0x02).chr(0x30).$i.chr(0x03);
$serial->sendMessage($message);
}
Exempel på hur det kan se ut när allt är som det ska:
$startposition = 100 <-- lagras i filen position.txt
$position = 50
For-loopen börjar med att utföra $i = $startposition.
Sedan räknar den ner så länge $i är större eller likamed än $position.
Egentligen borde det vara ">" istället för ">=".
Men problemet var som sagt att file() även läste radbrytningen, så låt säga att filen innehåller talet 100. När file() lagt filens innehåll i en array så innehöll arrayen tre tal:
100
13
10
som stoppades in i $startposition.
Så först räknar for-loopen ner från 100 till låt säga 50.
Men sedan... tja, varken 13 eller 10 är större än 50, så det händer inget mer.
Men genom att peta in "FILE_IGNORE_NEW_LINES" i file() så hamnar varken CR (13 decimalt) eller LF (10 decimalt) i arrayen.
Bäst att tillägga:
Nej, file() finns inte med i koden som postats i tråden. Den delen tillkom sent igår och jag har inte hunnit posta de ändringarna. Tidigare använde vi fopen() (som däremot finns i koden som postats tidigare). På se.php.net hittade jag detta om fopen() :
Different operating system families have different line-ending conventions. When you write a text file and want to insert a line break, you need to use the correct line-ending character(s) for your operating system. Unix based systems use \n as the line ending character, Windows based systems use \r\n as the line ending characters and Macintosh based systems use \r as the line ending character.
If you use the wrong line ending characters when writing your files, you might find that other applications that open those files will "look funny".
Vilket kan förklara varför det fungerade fint hos bl.a 007sweden, men inte fungerade alls hos mig.
oJsan:
"Varför skicka alla steps till servot, varför inte bara skicka den nya positionen? Hastigheten, med vilken den kommer att panorera, kommer ju att bero på baudraten... vilket kanske inte är så snyggt."
Just därför föredrar iallafall jag att servot flyttas mjukt och fint.

Dessutom kan man då även ändra hur fort servoaxeln ska vrida sig, utan att behöva ändra baudraten.
