• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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