To use RouteSync with PC*MILER|Connect, it must be licensed and installed along with PC*MILER|Streets. Street-level routing must also be turned on. The following APIs can then be used with RouteSync:
- PCMSGetManagedRouteMsgBytes creates a RouteSync message (blob) to send a route from PC*MILER|Connect to a CoPilot client.
- PCMSCreateManagedRouteMsgBytes creates a RouteSync message (blob) to send a route from PC*MILER|Connect to a CoPilot client with one caveat: The trip handle given by the user is only needed to retrieve the desired routing options that will be applied on the CoPilot side.
- PCMSGetAFMsgBytes creates a RouteSync message (blob) to send avoid/favor data from a PC*MILER client to a CoPilot Truck client.
- PCMSGetRouteSyncMsg creates a data packet (blob) used to send a route from PC*MILER|Connect to a CoPilot client.
The recommended API to use for RouteSync functionality is PCMSGetManagedRouteMsgBytes. By default, PC*MILER|Connect is configured to run in highway-only mode for rating purposes, but RouteSync requires that you turn on street-level routing with PCMSSetRouteLevel.
NOTE: A RouteSync message will not be created if Override Restrictions is enabled in the PC*MILER user interface or in the pcmserve.ini file.
The following sample code shows what you need for an integration:
PCMServerID server = PCMSOpenServer(NULL, NULL); // NOTE: OpenServer and CloseServer should be executed sparingly due to excess overhead. Trip = PCMSNewTrip(server); PCMSSetRouteLevel(trip, TRUE); // turn streets on PCMSAddStop(trip,"Philadelphia, PA"); PCMSAddStop(trip,"Hamilton, NJ"); PCMSAddStop(trip,"Manhattan,NY"); PCMSSetCalcType(trip, CALC_AVOIDTOLL); PCMSSetCalcType(trip, CALC_NATIONAL); PCMSCalculate(trip); long bufRetLength = 0; char * pBuffer = NULL;long OORCompliance = 0; double OORDist = .5; bool IsFirstLegManaged = true; bufRetLength= PCMSGetManagedRouteMsgBytes(trip,NULL,0,OORCompliance,OORDist, IsFirstLegManaged); pBuffer = new char[bufRetLength]; bufRetLength = PCMSGetManagedRouteMsgBytes(trip, pBuffer, bufRetLength, OORCompliance, OORDist, IsFirstLegManaged); // Send the pBuffer data blob via your communication method to the CoPilot device. delete [] pBuffer; PCMSDeleteTrip(trip); PCMSCloseServer(server);