1# usb_serial_api.h 2<!--Kit: Driver Development Kit--> 3<!--Subsystem: Driver--> 4<!--Owner: @lixinsheng2--> 5<!--Designer: @w00373942--> 6<!--Tester: @dong-dongzhen--> 7<!--Adviser: @w_Machine_cc--> 8 9## 概述 10 11声明用于主机侧访问串口设备的USB Serial DDK接口。 12 13**引用文件:** <usb_serial/usb_serial_api.h> 14 15**库:** libusb_serial.z.so 16 17**系统能力:** SystemCapability.Driver.UsbSerial.Extension 18 19**起始版本:** 18 20 21**相关模块:** [SerialDdk](capi-serialddk.md) 22 23## 汇总 24 25### 函数 26 27| 名称 | 描述 | 28| -- | -- | 29| [int32_t OH_UsbSerial_Init(void)](#oh_usbserial_init) | 初始化USB Serial DDK。 | 30| [int32_t OH_UsbSerial_Release(void)](#oh_usbserial_release) | 释放USB Serial DDK。 | 31| [int32_t OH_UsbSerial_Open(uint64_t deviceId, uint8_t interfaceIndex, UsbSerial_DeviceHandle **dev)](#oh_usbserial_open) | 通过deviceId和interfaceIndex打开USB串口设备。 | 32| [int32_t OH_UsbSerial_Close(UsbSerial_DeviceHandle *dev)](#oh_usbserial_close) | 关闭USB串口设备。 | 33| [int32_t OH_UsbSerial_Read(UsbSerial_DeviceHandle *dev, uint8_t *buff, uint32_t bufferSize, uint32_t *bytesRead)](#oh_usbserial_read) | 从USB串口设备读入数据到缓冲区。 | 34| [int32_t OH_UsbSerial_Write(UsbSerial_DeviceHandle *dev, uint8_t *buff, uint32_t bufferSize, uint32_t *bytesWritten)](#oh_usbserial_write) | 将buff中的数据写入USB串口设备。 | 35| [int32_t OH_UsbSerial_SetBaudRate(UsbSerial_DeviceHandle *dev, uint32_t baudRate)](#oh_usbserial_setbaudrate) | 设置USB串口设备的波特率。如果USB串口设备的参数为默认值(数据位为8,停止位为1,数据传输无校验),则只需要调用该接口设置波特率。 | 36| [int32_t OH_UsbSerial_SetParams(UsbSerial_DeviceHandle *dev, UsbSerial_Params *params)](#oh_usbserial_setparams) | 设置USB串口设备的参数。如果USB串口设备的参数不为默认值(数据位默认为8,停止位默认为1,数据传输默认无校验),则需要调用该接口进行参数设置。 | 37| [int32_t OH_UsbSerial_SetTimeout(UsbSerial_DeviceHandle *dev, int timeout)](#oh_usbserial_settimeout) | 设置读取USB串口设备上报数据的超时时间(毫秒)。在不调用此函数的情况下,超时值默认为0,表示不管是否读取到数据都立即返回。如果需要等待一定的时间或者必须读取到数据,则调用该接口。 | 38| [int32_t OH_UsbSerial_SetFlowControl(UsbSerial_DeviceHandle *dev, UsbSerial_FlowControl flowControl)](#oh_usbserial_setflowcontrol) | 设置流控参数。USB串口设备通信中的流控用于管理数据传输的速率,以确保发送方不会发送超过接收方处理能力的数据量。<br> 如果USB串口设备实现了流控处理,则需要调用此接口。如果不调用此接口,默认为无流控。 | 39| [int32_t OH_UsbSerial_Flush(UsbSerial_DeviceHandle *dev)](#oh_usbserial_flush) | 写入完成后清空输入和输出缓冲区。在向USB串口设备发送数据时,可能会有大量数据缓冲在内核中等待发送。如果应用程序关闭文件描述符或者退出之前<br> 没有等待这些数据被实际发送出去,那么部分数据可能会丢失。调用该接口可以确保所有的数据都被发送完毕再继续执行后续操作。 | 40| [int32_t OH_UsbSerial_FlushInput(UsbSerial_DeviceHandle *dev)](#oh_usbserial_flushinput) | 刷新输入缓冲区,缓冲区中的数据会被立刻清空。在和USB串口设备通信过程中,特别是在调试阶段,有时会遇到乱序的数据包或者其他异常情况。<br> 调用该接口可以帮助清理这些异常状况,使通信恢复正常。 | 41| [int32_t OH_UsbSerial_FlushOutput(UsbSerial_DeviceHandle *dev)](#oh_usbserial_flushoutput) | 刷新输出缓冲区,缓冲区中的数据会被立刻清空。在和USB串口设备通信过程中,特别是在调试阶段,有时会遇到乱序的数据包或者其他异常情况。<br> 调用该接口可以帮助清理这些异常状况,使通信恢复正常。 | 42 43## 函数说明 44 45### OH_UsbSerial_Init() 46 47``` 48int32_t OH_UsbSerial_Init(void) 49``` 50 51**描述** 52 53初始化USB Serial DDK。 54 55**需要权限:** ohos.permission.ACCESS_DDK_USB_SERIAL 56 57**起始版本:** 18 58 59**返回:** 60 61| 类型 | 说明 | 62| -- |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 63| int32_t | [USB_SERIAL_DDK_SUCCESS](capi-usb-serial-types-h.md#usbserial_ddkretcode) 调用接口成功。<br> [USB_SERIAL_DDK_NO_PERM](capi-usb-serial-types-h.md#usbserial_ddkretcode) 权限校验失败。<br> [USB_SERIAL_DDK_INIT_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) 初始化DDK失败。 | 64 65### OH_UsbSerial_Release() 66 67``` 68int32_t OH_UsbSerial_Release(void) 69``` 70 71**描述** 72 73释放USB Serial DDK。 74 75**需要权限:** ohos.permission.ACCESS_DDK_USB_SERIAL 76 77**起始版本:** 18 78 79**返回:** 80 81| 类型 | 说明 | 82| -- | -- | 83| int32_t | [USB_SERIAL_DDK_SUCCESS](capi-usb-serial-types-h.md#usbserial_ddkretcode) 调用接口成功。<br> [USB_SERIAL_DDK_NO_PERM](capi-usb-serial-types-h.md#usbserial_ddkretcode) 权限校验失败。<br> [USB_SERIAL_DDK_INIT_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) 未初始化DDK。<br> [USB_SERIAL_DDK_SERVICE_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK服务通信失败。 | 84 85### OH_UsbSerial_Open() 86 87``` 88int32_t OH_UsbSerial_Open(uint64_t deviceId, uint8_t interfaceIndex, UsbSerial_DeviceHandle **dev) 89``` 90 91**描述** 92 93通过deviceId和interfaceIndex打开USB串口设备。 94 95**需要权限:** ohos.permission.ACCESS_DDK_USB_SERIAL 96 97**起始版本:** 18 98 99 100**参数:** 101 102| 参数项 | 描述 | 103|----------------------------------|--------------------------------------------| 104| uint64_t deviceId | 设备ID,代表要操作的设备。 | 105| uint8_t interfaceIndex | 接口索引,对应USB协议中的[bInterfaceNumber](capi-usbddk-usbinterfacedescriptor.md)。 | 106| [UsbSerial_DeviceHandle](capi-serialddk-usbserial-devicehandle.md) **dev | 设备句柄。 | 107 108**返回:** 109 110| 类型 | 说明 | 111| -- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 112| int32_t | [USB_SERIAL_DDK_SUCCESS](capi-usb-serial-types-h.md#usbserial_ddkretcode) 调用接口成功。<br> [USB_SERIAL_DDK_NO_PERM](capi-usb-serial-types-h.md#usbserial_ddkretcode) 权限校验失败。<br> [USB_SERIAL_DDK_INVALID_PARAMETER](capi-usb-serial-types-h.md#usbserial_ddkretcode) 参数检查失败。可能原因为:dev为空指针。<br> [USB_SERIAL_DDK_INIT_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) 未初始化DDK。<br> [USB_SERIAL_DDK_SERVICE_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK服务通信失败。<br> [USB_SERIAL_DDK_MEMORY_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) 内存不足。<br> [USB_SERIAL_DDK_IO_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK发生I/O错误。<br> [USB_SERIAL_DDK_DEVICE_NOT_FOUND](capi-usb-serial-types-h.md#usbserial_ddkretcode) 找不到设备或接口。 | 113 114### OH_UsbSerial_Close() 115 116``` 117int32_t OH_UsbSerial_Close(UsbSerial_DeviceHandle *dev) 118``` 119 120**描述** 121 122关闭USB串口设备。 123 124**需要权限:** ohos.permission.ACCESS_DDK_USB_SERIAL 125 126**起始版本:** 18 127 128 129**参数:** 130 131| 参数项 | 描述 | 132| -- | -- | 133| [UsbSerial_DeviceHandle](capi-serialddk-usbserial-devicehandle.md) *dev | 设备句柄。 | 134 135**返回:** 136 137| 类型 | 说明 | 138| -- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 139| int32_t | [USB_SERIAL_DDK_SUCCESS](capi-usb-serial-types-h.md#usbserial_ddkretcode) 调用接口成功。<br> [USB_SERIAL_DDK_NO_PERM](capi-usb-serial-types-h.md#usbserial_ddkretcode) 权限校验失败。<br> [USB_SERIAL_DDK_INVALID_PARAMETER](capi-usb-serial-types-h.md#usbserial_ddkretcode) 参数检查失败。可能原因:dev为空指针。<br> [USB_SERIAL_DDK_INIT_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) 未初始化DDK。<br> [USB_SERIAL_DDK_SERVICE_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK服务通信失败。<br> [USB_SERIAL_DDK_IO_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK发生I/O错误。<br> [USB_SERIAL_DDK_INVALID_OPERATION](capi-usb-serial-types-h.md#usbserial_ddkretcode) 无效操作。 | 140 141### OH_UsbSerial_Read() 142 143``` 144int32_t OH_UsbSerial_Read(UsbSerial_DeviceHandle *dev, uint8_t *buff, uint32_t bufferSize, uint32_t *bytesRead) 145``` 146 147**描述** 148 149从USB串口设备读入数据到缓冲区。 150 151**需要权限:** ohos.permission.ACCESS_DDK_USB_SERIAL 152 153**起始版本:** 18 154 155 156**参数:** 157 158| 参数项 | 描述 | 159| -- | -- | 160| [UsbSerial_DeviceHandle](capi-serialddk-usbserial-devicehandle.md) *dev | 设备句柄。 | 161| uint8_t *buff | 保存从USB串口设备读取数据的缓冲区。 | 162| uint32_t bufferSize | 缓冲区的大小。 | 163| uint32_t *bytesRead | 实际读取的字节数,如果设置了阻塞模式,则实际读取到的数据等于bufferSize后才会返回,<br> 详见[OH_UsbSerial_SetTimeout](capi-usb-serial-api-h.md#oh_usbserial_settimeout)。 | 164 165**返回:** 166 167| 类型 | 说明 | 168| -- | -- | 169| int32_t | [USB_SERIAL_DDK_SUCCESS](capi-usb-serial-types-h.md#usbserial_ddkretcode) 调用接口成功。<br> [USB_SERIAL_DDK_NO_PERM](capi-usb-serial-types-h.md#usbserial_ddkretcode) 权限校验失败。<br> [USB_SERIAL_DDK_INVALID_PARAMETER](capi-usb-serial-types-h.md#usbserial_ddkretcode) 参数检查失败。可能原因:1. dev为空指针;<br> 2. buff为空指针; 3. bufferSize等于0; 4. bytesRead为空指针。<br> [USB_SERIAL_DDK_INIT_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) 未初始化DDK。<br> [USB_SERIAL_DDK_SERVICE_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK服务通信失败。<br> [USB_SERIAL_DDK_MEMORY_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) buff地址无效。<br> [USB_SERIAL_DDK_IO_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK发生I/O错误。<br> [USB_SERIAL_DDK_INVALID_OPERATION](capi-usb-serial-types-h.md#usbserial_ddkretcode) 无效操作。 | 170 171### OH_UsbSerial_Write() 172 173``` 174int32_t OH_UsbSerial_Write(UsbSerial_DeviceHandle *dev, uint8_t *buff, uint32_t bufferSize, uint32_t *bytesWritten) 175``` 176 177**描述** 178 179将buff中的数据写入USB串口设备。 180 181**需要权限:** ohos.permission.ACCESS_DDK_USB_SERIAL 182 183**起始版本:** 18 184 185 186**参数:** 187 188| 参数项 | 描述 | 189| -- | -- | 190| [UsbSerial_DeviceHandle](capi-serialddk-usbserial-devicehandle.md) *dev | 设备句柄。 | 191| uint8_t *buff | 写入USB串口设备数据的缓冲区。 | 192| uint32_t bufferSize | 缓冲区的大小。 | 193| uint32_t *bytesWritten | 实际写入的字节数。 | 194 195**返回:** 196 197| 类型 | 说明 | 198| -- | -- | 199| int32_t | [USB_SERIAL_DDK_SUCCESS](capi-usb-serial-types-h.md#usbserial_ddkretcode) 调用接口成功。<br> [USB_SERIAL_DDK_NO_PERM](capi-usb-serial-types-h.md#usbserial_ddkretcode) 权限校验失败。<br> [USB_SERIAL_DDK_INVALID_PARAMETER](capi-usb-serial-types-h.md#usbserial_ddkretcode) 参数检查失败。可能原因:1. dev为空指针;<br> 2. buff为空指针; 3. bufferSize等于0; 4. bytesWritten为空指针。<br> [USB_SERIAL_DDK_INIT_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) 未初始化DDK。<br> [USB_SERIAL_DDK_SERVICE_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK服务通信失败。<br> [USB_SERIAL_DDK_MEMORY_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) buff地址无效。<br> [USB_SERIAL_DDK_IO_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK发生I/O错误。<br> [USB_SERIAL_DDK_INVALID_OPERATION](capi-usb-serial-types-h.md#usbserial_ddkretcode) 无效操作。 | 200 201### OH_UsbSerial_SetBaudRate() 202 203``` 204int32_t OH_UsbSerial_SetBaudRate(UsbSerial_DeviceHandle *dev, uint32_t baudRate) 205``` 206 207**描述** 208 209设置USB串口设备的波特率。如果USB串口设备的参数为默认值(数据位为8,停止位为1,数据传输无校验),则只需要调用该接口设置波特率。 210 211**需要权限:** ohos.permission.ACCESS_DDK_USB_SERIAL 212 213**起始版本:** 18 214 215 216**参数:** 217 218| 参数项 | 描述 | 219| -- | -- | 220| [UsbSerial_DeviceHandle](capi-serialddk-usbserial-devicehandle.md) *dev | 设备句柄。 | 221| uint32_t baudRate | USB串口设备的波特率。 | 222 223**返回:** 224 225| 类型 | 说明 | 226| -- | -- | 227| int32_t | [USB_SERIAL_DDK_SUCCESS](capi-usb-serial-types-h.md#usbserial_ddkretcode) 调用接口成功。<br> [USB_SERIAL_DDK_NO_PERM](capi-usb-serial-types-h.md#usbserial_ddkretcode) 权限校验失败。<br> [USB_SERIAL_DDK_INVALID_PARAMETER](capi-usb-serial-types-h.md#usbserial_ddkretcode)参数检查失败。可能原因:dev为空指针。<br> [USB_SERIAL_DDK_INIT_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) 未初始化DDK。<br> [USB_SERIAL_DDK_SERVICE_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK服务通信失败。<br> [USB_SERIAL_DDK_IO_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK发生I/O错误。<br> [USB_SERIAL_DDK_INVALID_OPERATION](capi-usb-serial-types-h.md#usbserial_ddkretcode) 无效操作。 | 228 229### OH_UsbSerial_SetParams() 230 231``` 232int32_t OH_UsbSerial_SetParams(UsbSerial_DeviceHandle *dev, UsbSerial_Params *params) 233``` 234 235**描述** 236 237设置USB串口设备的参数。如果USB串口设备的参数不为默认值(数据位默认为8,停止位默认为1,数据传输默认无校验),则需要调用该接口进行参数设置。 238 239**需要权限:** ohos.permission.ACCESS_DDK_USB_SERIAL 240 241**起始版本:** 18 242 243 244**参数:** 245 246| 参数项 | 描述 | 247|-------------------------------------------------------------------------| -- | 248| [UsbSerial_DeviceHandle](capi-serialddk-usbserial-devicehandle.md) *dev | 设备句柄。 | 249| [UsbSerial_Params](capi-serialddk-usbserial-params.md) *params | 待设置的USB串口设备参数,详见[UsbSerial_Params](capi-serialddk-usbserial-params.md)。 | 250 251**返回:** 252 253| 类型 | 说明 | 254| -- | -- | 255| int32_t | [USB_SERIAL_DDK_SUCCESS](capi-usb-serial-types-h.md#usbserial_ddkretcode) 调用接口成功。<br> [USB_SERIAL_DDK_NO_PERM](capi-usb-serial-types-h.md#usbserial_ddkretcode) 权限校验失败。<br> [USB_SERIAL_DDK_INVALID_PARAMETER](capi-usb-serial-types-h.md#usbserial_ddkretcode) 参数检查失败。可能原因:1. dev为空指针;<br> 2. params为空指针。<br> [USB_SERIAL_DDK_INIT_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) 未初始化DDK。<br> [USB_SERIAL_DDK_SERVICE_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK服务通信失败。<br> [USB_SERIAL_DDK_IO_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK发生I/O错误。<br> [USB_SERIAL_DDK_INVALID_OPERATION](capi-usb-serial-types-h.md#usbserial_ddkretcode) 无效操作。 | 256 257### OH_UsbSerial_SetTimeout() 258 259``` 260int32_t OH_UsbSerial_SetTimeout(UsbSerial_DeviceHandle *dev, int timeout) 261``` 262 263**描述** 264 265设置读取USB串口设备上报数据的超时时间(毫秒)。在不调用此函数的情况下,超时值默认为0,表示不管是否读取到数据都立即返回。如果需要等待一定的时间或者必须读取到数据,则调用该接口。 266 267**需要权限:** ohos.permission.ACCESS_DDK_USB_SERIAL 268 269**起始版本:** 18 270 271 272**参数:** 273 274| 参数项 | 描述 | 275| -- | -- | 276| [UsbSerial_DeviceHandle](capi-serialddk-usbserial-devicehandle.md) *dev | 设备句柄。 | 277| int timeout | 读取USB串口设备的超时时间,其取值范围为:- (0, 25500]:以毫秒为单位的时间值,将其四舍五入为最接近的100毫秒后,作为实际的超时时间。例如,输入12321,实际生效的超时时间为12300。- 0:表示立即返回数据,不等待。- -1:表示以阻塞方式读取数据,即读取数据时,只有读到指定长度的数据后才返回,详见[OH_UsbSerial_Read](capi-usb-serial-api-h.md#oh_usbserial_read)。 | 278 279**返回:** 280 281| 类型 | 说明 | 282| -- | -- | 283| int32_t | [USB_SERIAL_DDK_SUCCESS](capi-usb-serial-types-h.md#usbserial_ddkretcode) 调用接口成功。<br> [USB_SERIAL_DDK_NO_PERM](capi-usb-serial-types-h.md#usbserial_ddkretcode) 权限校验失败。<br> [USB_SERIAL_DDK_INVALID_PARAMETER](capi-usb-serial-types-h.md#usbserial_ddkretcode) 参数检查失败。可能原因:1. dev为空指针;<br> 2. timeout < -1 or timeout > 25500.<br> [USB_SERIAL_DDK_INIT_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) 未初始化DDK。<br> [USB_SERIAL_DDK_SERVICE_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK服务通信失败。<br> [USB_SERIAL_DDK_IO_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK发生I/O错误。<br> [USB_SERIAL_DDK_INVALID_OPERATION](capi-usb-serial-types-h.md#usbserial_ddkretcode) 无效操作。 | 284 285### OH_UsbSerial_SetFlowControl() 286 287``` 288int32_t OH_UsbSerial_SetFlowControl(UsbSerial_DeviceHandle *dev, UsbSerial_FlowControl flowControl) 289``` 290 291**描述** 292 293设置流控参数。USB串口设备通信中的流控用于管理数据传输的速率,以确保发送方不会发送超过接收方处理能力的数据量。<br> 如果USB串口设备实现了流控处理,则需要调用此接口。如果不调用此接口,默认为无流控。 294 295**需要权限:** ohos.permission.ACCESS_DDK_USB_SERIAL 296 297**起始版本:** 18 298 299 300**参数:** 301 302| 参数项 | 描述 | 303|---------------------------------------------------------------------------------------| -- | 304| [UsbSerial_DeviceHandle](capi-serialddk-usbserial-devicehandle.md) *dev | 设备句柄。 | 305| [UsbSerial_FlowControl](capi-usb-serial-types-h.md#usbserial_flowcontrol) flowControl | 流控方式,详见[UsbSerial_FlowControl](capi-usb-serial-types-h.md#usbserial_flowcontrol)。 | 306 307**返回:** 308 309| 类型 | 说明 | 310| -- | -- | 311| int32_t | [USB_SERIAL_DDK_SUCCESS](capi-usb-serial-types-h.md#usbserial_ddkretcode) 调用接口成功。<br> [USB_SERIAL_DDK_NO_PERM](capi-usb-serial-types-h.md#usbserial_ddkretcode) 权限校验失败。<br> [USB_SERIAL_DDK_INVALID_PARAMETER](capi-usb-serial-types-h.md#usbserial_ddkretcode) 参数检查失败。可能原因:dev为空指针。<br> [USB_SERIAL_DDK_INIT_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) 未初始化DDK。<br> [USB_SERIAL_DDK_SERVICE_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK服务通信失败。<br> [USB_SERIAL_DDK_IO_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK发生I/O错误。<br> [USB_SERIAL_DDK_INVALID_OPERATION](capi-usb-serial-types-h.md#usbserial_ddkretcode) 无效操作。 | 312 313### OH_UsbSerial_Flush() 314 315``` 316int32_t OH_UsbSerial_Flush(UsbSerial_DeviceHandle *dev) 317``` 318 319**描述** 320 321写入完成后清空输入和输出缓冲区。在向USB串口设备发送数据时,可能会有大量数据缓冲在内核中等待发送。如果应用程序关闭文件描述符或者退出之前<br> 没有等待这些数据被实际发送出去,那么部分数据可能会丢失。调用该接口可以确保所有的数据都被发送完毕再继续执行后续操作。 322 323**需要权限:** ohos.permission.ACCESS_DDK_USB_SERIAL 324 325**起始版本:** 18 326 327 328**参数:** 329 330| 参数项 | 描述 | 331| -- | -- | 332| [UsbSerial_DeviceHandle](capi-serialddk-usbserial-devicehandle.md) *dev | 设备句柄。 | 333 334**返回:** 335 336| 类型 | 说明 | 337| -- | -- | 338| int32_t | [USB_SERIAL_DDK_SUCCESS](capi-usb-serial-types-h.md#usbserial_ddkretcode) 调用接口成功。<br> [USB_SERIAL_DDK_NO_PERM](capi-usb-serial-types-h.md#usbserial_ddkretcode) 权限校验失败。<br> [USB_SERIAL_DDK_INVALID_PARAMETER](capi-usb-serial-types-h.md#usbserial_ddkretcode) 参数检查失败。可能原因:dev为空指针。<br> [USB_SERIAL_DDK_INIT_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) 未初始化DDK。<br> [USB_SERIAL_DDK_SERVICE_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK服务通信失败。<br> [USB_SERIAL_DDK_IO_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK发生I/O错误。<br> [USB_SERIAL_DDK_INVALID_OPERATION](capi-usb-serial-types-h.md#usbserial_ddkretcode) 无效操作。 | 339 340### OH_UsbSerial_FlushInput() 341 342``` 343int32_t OH_UsbSerial_FlushInput(UsbSerial_DeviceHandle *dev) 344``` 345 346**描述** 347 348刷新输入缓冲区,缓冲区中的数据会被立刻清空。在和USB串口设备通信过程中,特别是在调试阶段,有时会遇到乱序的数据包或者其他异常情况。<br> 调用该接口可以帮助清理这些异常状况,使通信恢复正常。 349 350**需要权限:** ohos.permission.ACCESS_DDK_USB_SERIAL 351 352**起始版本:** 18 353 354 355**参数:** 356 357| 参数项 | 描述 | 358| -- | -- | 359| [UsbSerial_DeviceHandle](capi-serialddk-usbserial-devicehandle.md) *dev | 设备句柄。 | 360 361**返回:** 362 363| 类型 | 说明 | 364| -- | -- | 365| int32_t | [USB_SERIAL_DDK_SUCCESS](capi-usb-serial-types-h.md#usbserial_ddkretcode) 调用接口成功。<br> [USB_SERIAL_DDK_NO_PERM](capi-usb-serial-types-h.md#usbserial_ddkretcode) 权限校验失败。<br> [USB_SERIAL_DDK_INVALID_PARAMETER](capi-usb-serial-types-h.md#usbserial_ddkretcode) 参数检查失败。可能原因:dev为空指针。<br> [USB_SERIAL_DDK_INIT_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) 未初始化DDK。<br> [USB_SERIAL_DDK_SERVICE_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK服务通信失败。<br> [USB_SERIAL_DDK_IO_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK发生I/O错误。<br> [USB_SERIAL_DDK_INVALID_OPERATION](capi-usb-serial-types-h.md#usbserial_ddkretcode) 无效操作。 | 366 367### OH_UsbSerial_FlushOutput() 368 369``` 370int32_t OH_UsbSerial_FlushOutput(UsbSerial_DeviceHandle *dev) 371``` 372 373**描述** 374 375刷新输出缓冲区,缓冲区中的数据会被立刻清空。在和USB串口设备通信过程中,特别是在调试阶段,有时会遇到乱序的数据包或者其他异常情况。<br> 调用该接口可以帮助清理这些异常状况,使通信恢复正常。 376 377**需要权限:** ohos.permission.ACCESS_DDK_USB_SERIAL 378 379**起始版本:** 18 380 381 382**参数:** 383 384| 参数项 | 描述 | 385| -- | -- | 386| [UsbSerial_DeviceHandle](capi-serialddk-usbserial-devicehandle.md) *dev | 设备句柄。 | 387 388**返回:** 389 390| 类型 | 说明 | 391| -- | -- | 392| int32_t | [USB_SERIAL_DDK_SUCCESS](capi-usb-serial-types-h.md#usbserial_ddkretcode) 调用接口成功。<br> [USB_SERIAL_DDK_NO_PERM](capi-usb-serial-types-h.md#usbserial_ddkretcode) 权限校验失败。<br> [USB_SERIAL_DDK_INVALID_PARAMETER](capi-usb-serial-types-h.md#usbserial_ddkretcode) 参数检查失败。可能原因:dev为空指针。<br> [USB_SERIAL_DDK_INIT_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) 未初始化DDK。<br> [USB_SERIAL_DDK_SERVICE_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK服务通信失败。<br> [USB_SERIAL_DDK_IO_ERROR](capi-usb-serial-types-h.md#usbserial_ddkretcode) DDK发生I/O错误。<br> [USB_SERIAL_DDK_INVALID_OPERATION](capi-usb-serial-types-h.md#usbserial_ddkretcode) 无效操作。 | 393 394 395