Serializer.cpp

Committer:
gtg795y
Date:
2010-11-26
Revision:
1:d0f6e726b244
Parent:
0:a6113b3c872b
Child:
2:0a3c369d0076

File content as of revision 1:d0f6e726b244:

#include "Serializer.h"

Serial pc(USBTX,USBRX);

Serializer::Serializer() {
    serial=new Serial(p28,p27);
    wait(2);
}

Serializer::~Serializer() {
    delete serial;
}

void Serializer::Stop() {
    if (serial->writeable())
        serial->printf("stop\r");
}

void Serializer::ClearCountLeft() {
    if (serial->writeable())
        serial->printf("clrenc 1\r");
}
void Serializer::ClearCountRight() {
    if (serial->writeable())
        serial->printf("clrenc 2\r");
}

void Serializer::ClearCount() {
    if (serial->writeable())
        serial->printf("clrenc 1 2\r");
}

void Serializer::SetSpeedLeft(int speed) {
    if (serial->writeable())
        serial->printf("mogo 1:%i\r", -speed);
}
void Serializer::SetSpeedRight(int speed) {
    if (serial->writeable())
        serial->printf("mogo 2:%i\r", -speed);
}
void Serializer::SetSpeed(int speed) {
    if (serial->writeable())
        serial->printf("mogo 1:%i 2:%i\r", -speed, -speed);
}

void Serializer::SetVPID(int p,int i,int d,int l) {
    if (serial->writeable())
        serial->printf("vpid %i:%i:%i:%i\r", p,i,d,l);
}

void Serializer::SetDPID(int p,int i,int d,int a) {
    if (serial->writeable())
        serial->printf("dpid %i:%i:%i:%i\r", p,i,d,a);
}

void Serializer::DiGoLeft(int dist,int speed) {
    if (serial->writeable())
        serial->printf("digo 1:%i:%i\r",-dist, speed);
}
void Serializer::DiGoRight(int dist,int speed) {
    if (serial->writeable())
        serial->printf("digo 2:%i:%i\r",-dist, speed);
}
void Serializer::DiGo(int dist,int speed) {
    if (serial->writeable())
        serial->printf("digo 1:%i:%i 2:%i:%i\r",-dist, speed, -dist, speed);
}



//unused and untested
int Serializer::GetReply() {
    int returnValue=0;
    char c=0;
    char readyToReturn=0;
    char ack=0;
    char nack=0;
    wait(0.0001);
    while (serial->readable()) {
        c=serial->getc();
        if(readyToReturn)continue;
        if (c=='N'&&nack==0)nack=1;
        else nack=0;
        if (c=='A'&&ack==0)ack++;
        else ack=nack=0;
        if (c=='C'&&ack==1)ack++;
        else ack=nack=0;
        if (c=='K'&&ack==2)ack++;
        else ack=nack=0;
        if (ack==3)
            if (nack==1)
                returnValue=1;
            else
                returnValue=0;
        if(c=='>')readyToReturn=1;
    }
    return returnValue;
}