I've noticed that if I call app_usbd_cdc_acm_write with the length set to any multiple of 64 the data will not show up on my PC until I do another write with a value that is not a multiple of 64. I get an APP_USBD_CDC_ACM_USER_EVT_TX_DONE event after the write and I can do multiple 64 byte writes in a row followed by a not 64 byte write and then all of the data will show up.