Håller på med ett projekt där jag ska skicka paket över USB CDC till en PIC18F25K50. Överföringen från PC till PIC kommer att ske i paket som är 15 byte långa med {{{ som start och }}} som slut.
Alltså, {{{xxxxxxxxx}}} där x är data jag vill åt.
Jag har funderat på att implementera en cirkulär buffer där jag kan lägga inkommande data men fastnar på hur jag ska hitta paketen och hur jag ska hantera skräpdata som inte tillhör paketen. Tycker dock att det här borde vara en mycket vanlig uppgift och tänkte höra vad ni har för erfarenheter kring liknande implementeringar?
Till projektet utgår jag från microchips CDC - Basic Demo. Demon ekar bara tillbaka det den tagit emot och koden för den funktionen ser ut enligt nedan.
Kod: Markera allt
numBytesRead = getsUSBUSART(USB_Out_Buffer,64);
if(numBytesRead != 0)
{
BYTE i;
for(i=0;i<numBytesRead;i++)
{
USB_In_Buffer[i] = USB_Out_Buffer[i];
}
}
putUSBUSART(USB_In_Buffer,numBytesRead);
getsUSBUSART copies a string of BYTEs received through USB CDC Bulk OUT endpoint to a user's specified location. Returns a byte indicating the total number of bytes that were actually received and copied into the specified buffer.