I'm not sure I understood 100% what the problem was, but I think you're saying that you want to distinguish commands from data.
The information here is not specific to USB:
Often a long sequence is used for the command, i.e. something that is extremely unlikely to occur in the data.
For example, if you sent the characters "___cmd" instead of 0x55 then it is unlikely that they would ever occur in data.
Or, never send raw data, always encapsulate it, e.g. have a header that identifies it as data, and have a length parameter.