/$ Microbot Controller methods3

on_setpoint(){
if (mmfind("MicrobotProg")==0) {
mmnew();
mmputs("MicrobotProg\n");
} //end if
mmputs(Cgetcontent(speed) + ", " + B + ", " + S + ", " + E + ", " + LW + ", " + RW + ", " + G + "\n");
mmclose();
B=0; S=0; E=0; LW=0; RW=0; G=0;
} //end on_setpoint

on_run(){
string stepline;
pointer out;
if (mmfind("MicrobotProg")==0) {
alert("Cannot open \"MicrobotProg\" Memo for running!");
} else {
dumpbuffer();
while (!mmeof()) {
stepline = mmgetl();
if (stepline != "MicrobotProg") {
stepline = "@STEP " + stepline + "\n\r";
out=malloct(strlen(stepline)+1, "c");
strtoc(stepline, out);
sersenda(out, strlen(stepline)+1);
while(!serdata()){
sleep(50);
} //end while serdata
dumpbuffer();
} //end while !mmeof
} //end if
mmclose();
free(out);
} //end if
} //end on_run

on_clear(){
if (confirm("Are you sure you want to Clear the current \"Microbot\" program?")) {
B=0; S=0; E=0; LW=0; RW=0; G=0;
if (mmfind("MicrobotProg")) {
mmdelete();
} //end if
} //end if
} //end on_clear

on_reset(){
pointer out;
string resetstr="@RESET\n\r";
if (confirm("Are you sure you want to Reset the  Microbot?")) {
out=malloct(strlen(resetstr)+1, "c");
strtoc(resetstr, out);
sersenda(out, strlen(resetstr)+1);
} //end if confirm
free(out);
} //end on_reset

on_setserial(){
if (confirm("Change the current Serial Port settings? (Default = 2400, 8N1C.\nCurrent = "+baud+", "+serialstr+".)")){
serclose();
baud=getsd("Enter baud rate:", 2400);
serialstr=getsd("Enter data bits (6,7,8), parity \r(N,E,O), and flow control (X,C,R,H,N):", "8N1C");
if (seropen(baud, serialstr, 50)==0){
alert("Serial Port successfully reset to " +baud+", "+serialstr+".");
} else {
alert("Error!");
} //end if seropen
} //end if confirm
} //end on_setserial

on_upload(){
int step=0;
string stepline, memoname;
pointer out;
if (memoname=gets("Enter the title of the Memo to \rupload from Palm to Microbot:")) {
if (mmfind(memoname)==0) {
alert("Cannot open \"" + memoname + "\" Memo for uploading!");
} else {
while (!mmeof() && step < 54) {
stepline = mmgetl();
if (stepline != memoname) {
step = step + 1;
stepline = "@QWRITE " + step + " " + stepline + "\n\r";
out=malloct(strlen(stepline)+1, "c");
strtoc(stepline, out);
sersenda(out, strlen(stepline)+1);
} //end while
} //end if
mmclose();
} //end if
} //end if
free(out);
} //end on_upload

on_download(){
int ans=1;
pointer out;
string memoname, qdumpstr="@QDUMP\n\r";
if (memoname=gets("Enter the title of the Memo to \rsave download from Microbot as:")) {
if (mmfind(memoname)==1) {
ans = confirm("Do you want to Overwrite the \"" + memoname + "\" Memo?");
} //end if mmfind
if (ans == 1) {
mmdelete();
mmnew();
mmputs(memoname+"\n");
out=malloct(strlen(qdumpstr)+1, "c");
strtoc(qdumpstr, out);
sersenda(out, strlen(qdumpstr));
sleep(50);
while(serdata()) {
	mmputs((char)serrecv());
	sleep(10);
}//end while
} //end if ans
} //end if memoname
free(out);
} //end on_download

on_read(){
int i=0;
char inarray[80];
pointer out;
string instr, readstr="@READ\n\r";
out=malloct(strlen(readstr)+1, "c");
strtoc(readstr, out);
sersenda(out, strlen(readstr)+1);
sleep(50);
while (serdata()) {
	inarray[i]=(char)serrecv();
	i++;
	sleep(10);
} //end while
instr=ctostr(inarray);
alert("Internal position registers are:\n" + instr);
free(out);
} //end on_read

on_mrun(){
pointer out;
string mrun="@RUN\n\r";
out=malloct(strlen(mrun)+1, "c");
strtoc(mrun, out);
sersenda(out, strlen(mrun)+1);
free(out);
} //end on_mrun

on_stepsize(){
}
on_speed(){
}