task main() { ClearScreen(); string a; byte n, nt, k; a = "STOP"; n = 9; nt = 0; k = 100; SetSensorType(IN_4, SENSOR_TYPE_HIGHSPEED); SetHSState(HS_INITIALISE); SetHSFlags(HS_UPDATE); byte mlen; string buffer; SetHSInputBufferInPtr(0); SetHSInputBufferOutPtr(0); Wait(10); while(true) { mlen = 0; while (mlen == 0) mlen = HSInputBufferInPtr(); Wait(2); mlen = HSInputBufferInPtr(); GetHSInputBuffer(0, mlen, buffer); SetHSInputBufferInPtr(0); TextOut(0, LCD_LINE1, buffer); n = StrToNum(buffer); if (n <> nt) { nt = n; if (n < 10) // circle mode { switch(n) { case 9: Off(OUT_AB); // a = "STOP"; break; case 1: OnRev(OUT_AB , k); // a = "N"; break; case 2: Off(OUT_AB); // a = "NW"; break; case 3: OnFwd(OUT_AB , k); // a = "W"; break; case 4: Off(OUT_AB); // a = "SW"; break; case 5: OnFwd(OUT_AB , k); // a = "S"; break; case 6: OnFwd(OUT_AB , k); // a = "SO"; break; case 7: OnRev(OUT_AB , k); // a = "O"; break; case 8: OnRev(OUT_AB , k); // a = "NO"; break; } } else // parallel mode { switch(n) { case 19: Off(OUT_AB); // a = "STOP"; break; case 11: OnRev(OUT_AB , k); // a = "N"; break; case 12: Off(OUT_A); OnRev(OUT_B , k); // a = "NW"; break; case 13: OnFwd(OUT_A , k); OnRev(OUT_B , k); // a = "W"; break; case 14: Off(OUT_B); OnFwd(OUT_A , k); // a = "SW"; break; case 15: OnFwd(OUT_AB , k); // a = "S"; break; case 16: Off(OUT_A); OnFwd(OUT_B , k); // a = "SO"; break; case 17: OnFwd(OUT_B , k); OnRev(OUT_A , k); // a = "O"; break; case 18: Off(OUT_B); OnRev(OUT_A , k); // a = "NO"; break; } } // ClearScreen(); // TextOut(0, LCD_LINE1, a); } } }