Я работаю над USB CDC на ATSAMD21.Код, который я использую, является примером ATMEL START для USB CD Echo на D21.Я работаю в студии atmel.
Требование:
В моем приложении хост отправляет данные на устройство, и мне нужно прочитать эти данные и отправить обратно разные данные на хост из другой функции..
Здесь, в примере с эхом, для приема и передачи данных используется обратный вызов.Я не знаю, как использовать вызов записи внутри другой функции.Здесь я прилагаю код ниже
Чтение и отображение данных:
Здесь, в этой функции, это для чтения данных и передачи их обратно хосту.
static bool usb_device_cb_state_c(usb_cdc_control_signal_t state)
{
if (state.rs232.DTR ) {
/* Callbacks must be registered after endpoint allocation */
cdcdf_acm_register_callback(CDCDF_ACM_CB_READ, (FUNC_PTR)usb_device_cb_bulk_out);
cdcdf_acm_register_callback(CDCDF_ACM_CB_WRITE, (FUNC_PTR)usb_device_cb_bulk_in);
/* Start Rx */
cdcdf_acm_read((uint8_t *)usbd_cdc_buffer, sizeof(usbd_cdc_buffer));
}
/* No error. */
return false;
}
//////////////////////////////////////////
Считать данные с хоста:
static bool usb_device_cb_bulk_out(const uint8_t ep, const enum
usb_xfer_code rc, const uint32_t count)
{
cdcdf_acm_write((uint8_t *)usbd_cdc_buffer, count);
return false;
}
Записать обратно данные:
static bool usb_device_cb_bulk_in(const uint8_t ep, const enum usb_xfer_code rc, const uint32_t count)
{
/* Echo data. */
cdcdf_acm_read((uint8_t *)usbd_cdc_buffer, sizeof(usbd_cdc_buffer));
/* No error. */
return false;
}
Мне нужно использоватьэтот вызов чтения внутри другой функции снаружи.Я использовал вызов read непосредственно в другой функции, он не смог отправить данные.Как я могу использовать этот вызов в другой функции. Любая помощь будет оценена.
Здесь обратный вызов будет направлен на функции чтения и записи.