void SendRS485String(const string msg) { byte mlen = ArrayLen(msg); SetHSOutputBuffer(0, mlen, msg); SetHSOutputBufferOutPtr(0); SetHSOutputBufferInPtr(mlen); SetHSState(HS_SEND_DATA); SetHSFlags(HS_UPDATE); //send it } task main() { ClearScreen(); SetSensorType(IN_4, SENSOR_TYPE_HIGHSPEED); SetHSState(HS_INITIALISE); SetHSFlags(HS_UPDATE); byte mlen; string msg; string a; byte n, nt, k; a = "STOP"; n = 9; nt = 0; k = 100; while(true) { ReceiveRemoteNumber(0, true, n); msg = NumToStr(n); SendRS485String(msg); if (n <> nt) { nt = n; if (n < 10) // circle mode { switch(n) { case 9: Off(OUT_AB); // a = "STOP"; break; case 1: OnFwd(OUT_AB , k); // a = "N"; break; case 2: OnFwd(OUT_AB , k); // a = "NW"; break; case 3: OnFwd(OUT_AB , k); // a = "W"; break; case 4: OnRev(OUT_AB , k); // a = "SW"; break; case 5: OnRev(OUT_AB , k); // a = "S"; break; case 6: Off(OUT_AB); // a = "SO"; break; case 7: OnRev(OUT_AB , k); // a = "O"; break; case 8: Off(OUT_AB); // a = "NO"; break; } } else // parallel mode { switch(n) { case 19: Off(OUT_AB); // a = "STOP"; break; case 11: OnFwd(OUT_AB , k); // a = "N"; break; case 12: Off(OUT_B); OnFwd(OUT_A , k); // a = "NW"; break; case 13: OnFwd(OUT_A , k); OnRev(OUT_B , k); // a = "W"; break; case 14: Off(OUT_A); OnRev(OUT_B , k); // a = "SW"; break; case 15: OnRev(OUT_AB , k); // a = "S"; break; case 16: Off(OUT_B); OnRev(OUT_A , k); // a = "SO"; break; case 17: OnFwd(OUT_B , k); OnRev(OUT_A , k); // a = "O"; break; case 18: Off(OUT_A); OnFwd(OUT_B , k); // a = "NO"; break; } } // ClearScreen(); // TextOut(0, LCD_LINE1, a); } } }