wiki:Docs/Prog/Manual/ApplicationLibraries/lib825ev/ccomm

Version 3 (modified by Don Wilson, 7 years ago) ( diff )

--

Table of Contents

      1. Example

CComm

CComm is a C++ class that is provided to simplify 825 serial and ethernet operations. CComm is a base class for the inherited classes CCommSerial (serial ports), CCommClient (TCP/IP client), and CCommServer (TCP/IP Server).

Example

CComm *pComm;
// pComm is a pointer that can point to a CCommSerial, CCommClient, or CCommServer instance

#define SERIAL 1
#define CLIENT 2
#define SERVER 3

int commTypeSelection = CLIENT;

void StartCommunications(void)
{
   if(commTypeSelection == SERIAL)
   {
      int comport = 2;
      CCommSerial *pSerial = new CCommSerial(commPort);
      pComm = pSerial;
   }
   else if(commTypeSelection == CLIENT)
   {
      string svrIP = "192.168.1.25";
      int svrPort = 8001;
      CCommClient *pClient = new CCommClient(svrIP, svrPort);
      pComm = pClient;
   }
   else if(commTypeSelection == SERVER)
   {
      int svrPort = 8001;
      CCommServer *pServer = new CCommServer(svrPort);
      pComm = pServer;
   }

   pComm->Open();

   // Now the app can call pComm->Send to send data without regard for whether it is serial or TCP/IP.

   pComm->AddRcvEvent(CHR_STX, CHR_ETX, CommEventDataMsg, 0, NULL);

}

void StopCommunications(void)
{ 
   if(pComm != NULL)
   {
       pComm->Close();
       delete pComm;
       pComm = NULL;
   }
}

COMM_EVENT(DataMsg)
{
   uint8* buf = pConnection->GetRcvBuffer();
   buf[pConnection->GetRcvPos() - 1] = '\0';

   printf("rcvd [%s]\r\n", buf);

   if(buf[1] == 'T') // Received <STX>T<ETX> return timeval
   {
       time_t tmval;
       time(&tmval);  // Get timeval

       char response[12];
       sprintf(response, "%d\n", tmval);
       pComm->Send(pConnection, response, strlen(response);
    }


   return 0;
}


Note: See TracWiki for help on using the wiki.