Ejemplo n.º 1
0
    RBAPI(bool) com_ServoTRX(int com, unsigned char* cmd, int csize, unsigned char* buf, int bsize) {
        com_ClearRFIFO(com);
    
        if (com_Send(com, cmd, csize) == false) return false;

        if (COM_duplex[com] == COM_HDUPLEX)  // discard the first-received csize bytes in case of TX/RX-short
        {
            int i; unsigned int tmpbyte;

            for (i=0; i<csize; i++)
            {
                if ((tmpbyte = com_Read(com)) == 0xffff) return false;
        
                if ((unsigned char)tmpbyte != cmd[i])
                {
                    err_SetMsg(ERROR_COM_FAIL, "receive a wrong self-feedback byte");
                    return false;
                }
            }
        } // end if (COM_duplex[com] ...
    
        if (buf != NULL) //&&
        if (com_Receive(com, buf, bsize) == false) return false;

        return true;
    }
Ejemplo n.º 2
0
RBAPI(void) com_Close(int com) {
    if(com_InUse(com) == false) return;

    com_FlushWFIFO(com);
    com_ClearRFIFO(com);

    #if defined(RB_MSVC_WIN32) || defined(RB_MSVC_WINCE)
        SetCommTimeouts(COM_info[com].fp, &COM_info[com].oldtimeouts);
        SetCommState(COM_info[com].fp, &(COM_info[com].oldstate));
    	CloseHandle(COM_info[com].fp);
    #elif defined(RB_LINUX)
        tcsetattr(COM_info[com].fp, TCSANOW, &(COM_info[com].oldstate));
        close(COM_info[com].fp);
    #endif

    if (COM_oldTMode[com] == true) com_EnableTurboMode(com); else com_DisableTurboMode(com);
    if (COM_oldFMode[com] == true) com_EnableFIFO32(com);    else com_DisableFIFO32(com);

    io_Close(COM_ioSection[com]);
    COM_ioSection[com] = -1;
}
Ejemplo n.º 3
0
void FlushReceiveBuffer(void)
{
  com_ClearRFIFO(Serial);
  com_FlushRxQueue(Serial);
}