• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# USB Serial DDK
2
3## 概述
4
5USB Serial DDK是为开发者提供的USB Serial DDK设备驱动程序开发套件,此模块提供USB Serial DDK接口,包括枚举类型和USB Serial DDK API使用的数据结构。
6
7在工业用途场景以及一些老旧设备上,常会使用到串口通信,如:发卡机、身份证读卡器等。通过USB Serial DDK提供的接口,开发者可以开发非标外设扩展驱动,实现USB串口设备的扩展功能。
8
9**系统能力:** SystemCapability.Driver.SERIAL.Extension
10
11**起始版本:** 18
12
13
14## 汇总
15
16
17### 文件
18
19| 名称 | 描述 |
20| -------- | -------- |
21| [usb_serial_ddk_api.h](usb__serial__ddk__api_8h.md) | 声明用于主机侧访问串口设备的USB Serial DDK接口。<br/>引用文件:&lt;serial/usb_serial_ddk_api.h&gt;<br/>库: libusb_serial.z.so |
22| [usb_serial_ddk_types.h](usb__serial__ddk__types_8h.md) | 提供USB Serial DDK中的枚举变量、结构体定义与宏定义。<br/>引用文件:&lt;serial/usb_serial_ddk_types.h&gt;<br/>库: libusb_serial.z.so |
23
24
25### 结构体
26
27| 名称 | 描述 |
28| -------- | -------- |
29| struct&nbsp;&nbsp;[UsbSerial_Params](_usb_serial___params.md) | 定义USB Serial DDK使用的USB串口参数。 |
30
31
32### 类型定义
33
34| 名称 | 描述 |
35| -------- | -------- |
36| typedef struct [UsbSerial_DeviceHandle](#usbserial_devicehandle) [UsbSerial_DeviceHandle](#usbserial_devicehandle) | USB串口设备数据结构(不透明)。 |
37| typedef struct [UsbSerial_Params](_usb_serial___params.md) \__attribute\__((aligned(8))) [UsbSerial_Params](_usb_serial___params.md) | USB Serial DDK使用的USB串口参数。 |
38
39
40### 枚举
41
42| 名称 | 描述 |
43| -------- | -------- |
44| [UsbSerial_DdkRetCode](#usbserial_ddkretcode) {<br/>USB_SERIAL_DDK_NO_PERM = 201, USB_SERIAL_DDK_INVALID_PARAMETER = 401, USB_SERIAL_DDK_SUCCESS = 31600000, USB_SERIAL_DDK_INVALID_OPERATION = 31600001, USB_SERIAL_DDK_INIT_ERROR = 31600002, USB_SERIAL_DDK_SERVICE_ERROR = 31600003, USB_SERIAL_DDK_MEMORY_ERROR = 31600004, USB_SERIAL_DDK_IO_ERROR = 31600005, USB_SERIAL_DDK_DEVICE_NOT_FOUND = 31600006<br/>} | 定义USB Serial DDK使用的返回码。 |
45| [UsbSerial_FlowControl](#usbserial_flowcontrol) { USB_SERIAL_NO_FLOW_CONTROL = 0, USB_SERIAL_SOFTWARE_FLOW_CONTROL = 1, USB_SERIAL_HARDWARE_FLOW_CONTROL = 2 } | 定义USB Serial DDK中的流量控制。 |
46| [UsbSerial_Parity](#usbserial_parity) { USB_SERIAL_PARITY_NONE = 0, USB_SERIAL_PARITY_ODD = 1, USB_SERIAL_PARITY_EVEN = 2 } | 定义USB Serial DDK使用的校验参数枚举。 |
47
48
49### 函数
50
51| 名称 | 描述 |
52| -------- | -------- |
53| int32_t [OH_UsbSerial_Init](#oh_usbserial_init) (void) | 初始化USB Serial DDK。 |
54| int32_t [OH_UsbSerial_Release](#oh_usbserial_release) (void) | 释放USB Serial DDK。 |
55| int32_t [OH_UsbSerial_Open](#oh_usbserial_open) (uint64_t deviceId, uint8_t interfaceIndex, [UsbSerial_DeviceHandle](#usbserial_devicehandle) \*\*dev) | 通过deviceId和interfaceIndex打开USB串口设备。 |
56| int32_t [OH_UsbSerial_Close](#oh_usbserial_close) ([UsbSerial_DeviceHandle](#usbserial_devicehandle) \*dev) | 关闭USB串口设备。 |
57| int32_t [OH_UsbSerial_Read](#oh_usbserial_read) ([UsbSerial_DeviceHandle](#usbserial_devicehandle) \*dev, uint8_t \*buff, uint32_t bufferSize, uint32_t \*bytesRead) | 从USB串口设备读入数据到缓冲区。 |
58| int32_t [OH_UsbSerial_Write](#oh_usbserial_write) ([UsbSerial_DeviceHandle](#usbserial_devicehandle) \*dev, uint8_t \*buff, uint32_t bufferSize, uint32_t \*bytesWritten) | 将buff中的数据写入USB串口设备。 |
59| int32_t [OH_UsbSerial_SetBaudRate](#oh_usbserial_setbaudrate) ([UsbSerial_DeviceHandle](#usbserial_devicehandle) \*dev, uint32_t [baudRate](usb__serial__ddk__types_8h.md#baudrate)) | 设置USB串口设备的波特率。 如果USB串口设备的参数为默认值(数据位为8,停止位为1,数据传输无校验),则只需要调用该接口设置波特率。 |
60| int32_t [OH_UsbSerial_SetParams](#oh_usbserial_setparams) ([UsbSerial_DeviceHandle](#usbserial_devicehandle) \*dev, [UsbSerial_Params](_usb_serial___params.md) \*params) | 设置USB串口设备的参数。 如果USB串口设备的参数不为默认值(数据位默认为8,停止位默认为1,数据传输默认无校验),则需要调用该接口进行参数设置。 |
61| int32_t [OH_UsbSerial_SetTimeout](#oh_usbserial_settimeout) ([UsbSerial_DeviceHandle](#usbserial_devicehandle) \*dev, int timeout) | 设置读取USB串口设备上报数据的超时时间(毫秒)。 在不调用此函数的情况下,超时值默认为0,表示不管是否读取到数据都立即返回。如果需要等待一定的时间或者必须读取到数据,则调用该接口。 |
62| int32_t [OH_UsbSerial_SetFlowControl](#oh_usbserial_setflowcontrol) ([UsbSerial_DeviceHandle](#usbserial_devicehandle) \*dev, [UsbSerial_FlowControl](#usbserial_flowcontrol) flowControl) | 设置流控参数。 USB串口设备通信中的流控用于管理数据传输的速率,以确保发送方不会发送超过接收方处理能力的数据量。<br/>如果USB串口设备实现了流控处理,则需要调用此接口。如果不调用此接口,默认为无流控。 |
63| int32_t [OH_UsbSerial_Flush](#oh_usbserial_flush) ([UsbSerial_DeviceHandle](#usbserial_devicehandle) \*dev) | 写入完成后清空输入和输出缓冲区。 在向USB串口设备发送数据时,可能会有大量数据缓冲在内核中等待发送。如果应用程序关闭文件描述符或者退出之前没有等待这些数据被实际发送出去,那么部分数据可能会丢失。调用该接口可以确保所有的数据都被发送完毕再继续执行后续操作。 |
64| int32_t [OH_UsbSerial_FlushInput](#oh_usbserial_flushinput) ([UsbSerial_DeviceHandle](#usbserial_devicehandle) \*dev) | 刷新输入缓冲区,缓冲区中的数据会被立刻清空。 在和USB串口设备通信过程中,特别是在调试阶段,有时会遇到乱序的数据包或者其他异常情况。<br/>调用该接口可以帮助清理这些异常状况,使通信恢复正常。 |
65| int32_t [OH_UsbSerial_FlushOutput](#oh_usbserial_flushoutput) ([UsbSerial_DeviceHandle](#usbserial_devicehandle) \*dev) | 刷新输出缓冲区,缓冲区中的数据会被立刻清空。 在和USB串口设备通信过程中,特别是在调试阶段,有时会遇到乱序的数据包或者其他异常情况。<br/>调用该接口可以帮助清理这些异常状况,使通信恢复正常。 |
66
67
68## 类型定义说明
69
70
71### UsbSerial_DeviceHandle
72
73```
74typedef struct UsbSerial_DeviceHandle UsbSerial_DeviceHandle
75```
76
77**描述**
78
79USB串口设备数据结构(不透明)。
80
81**起始版本:** 18
82
83
84### UsbSerial_Params
85
86```
87typedef struct UsbSerial_Params \__attribute\__((aligned(8))) UsbSerial_Params
88```
89
90**描述**
91
92定义USB Serial DDK使用的USB串口参数。
93
94**起始版本:** 18
95
96
97## 枚举类型说明
98
99
100### UsbSerial_DdkRetCode
101
102```
103enum UsbSerial_DdkRetCode
104```
105
106**描述**
107
108定义USB Serial DDK使用的返回码。
109
110**起始版本:** 18
111
112| 枚举值 | 描述 |
113| -------- | -------- |
114| USB_SERIAL_DDK_NO_PERM | 权限被拒绝。 |
115| USB_SERIAL_DDK_INVALID_PARAMETER | 无效参数。 |
116| USB_SERIAL_DDK_SUCCESS | 操作成功。 |
117| USB_SERIAL_DDK_INVALID_OPERATION | 无效操作。 |
118| USB_SERIAL_DDK_INIT_ERROR | 初始化失败。 |
119| USB_SERIAL_DDK_SERVICE_ERROR | 服务错误。 |
120| USB_SERIAL_DDK_MEMORY_ERROR | 内存相关错误,例如内存不足、内存数据复制失败或内存应用程序故障。 |
121| USB_SERIAL_DDK_IO_ERROR | I/O 错误。 |
122| USB_SERIAL_DDK_DEVICE_NOT_FOUND | 未找到设备。 |
123
124
125### UsbSerial_FlowControl
126
127```
128enum UsbSerial_FlowControl
129```
130
131**描述**
132
133定义USB Serial DDK中的流量控制。
134
135**起始版本:** 18
136
137| 枚举值 | 描述 |
138| -------- | -------- |
139| USB_SERIAL_NO_FLOW_CONTROL | 无流量控制。 |
140| USB_SERIAL_SOFTWARE_FLOW_CONTROL | 软件流控。 |
141| USB_SERIAL_HARDWARE_FLOW_CONTROL | 硬件流控。 |
142
143
144### UsbSerial_Parity
145
146```
147enum UsbSerial_Parity
148```
149
150**描述**
151
152定义USB Serial DDK使用的校验参数枚举。
153
154**起始版本:** 18
155
156| 枚举值 | 描述 |
157| -------- | -------- |
158| USB_SERIAL_PARITY_NONE | 无校验。 |
159| USB_SERIAL_PARITY_ODD | 奇校验。 |
160| USB_SERIAL_PARITY_EVEN | 偶校验。 |
161
162
163## 函数说明
164
165
166### OH_UsbSerial_Close()
167
168```
169int32_t OH_UsbSerial_Close (UsbSerial_DeviceHandle * dev)
170```
171
172**描述**
173
174关闭USB串口设备。
175
176**起始版本:** 18
177
178**参数:**
179
180| 名称 | 描述 |
181| -------- | -------- |
182| dev | 设备句柄。 |
183
184**Permission:**
185
186ohos.permission.ACCESS_DDK_USB_SERIAL
187
188**返回:**
189
190- USB_SERIAL_DDK_SUCCESS 调用接口成功。
191
192- USB_SERIAL_DDK_NO_PERM 权限校验失败。
193
194- USB_SERIAL_DDK_INVALID_PARAMETER 参数检查失败。可能原因:dev为空指针。
195
196- USB_SERIAL_DDK_INIT_ERROR 未初始化DDK。
197
198- USB_SERIAL_DDK_SERVICE_ERROR DDK服务通信失败。
199
200- USB_SERIAL_DDK_IO_ERROR DDK发生I/O错误。
201
202- USB_SERIAL_DDK_INVALID_OPERATION 无效操作。
203
204
205### OH_UsbSerial_Flush()
206
207```
208int32_t OH_UsbSerial_Flush (UsbSerial_DeviceHandle * dev)
209```
210
211**描述**
212
213写入完成后清空输入和输出缓冲区。
214
215在向USB串口设备发送数据时,可能会有大量数据缓冲在内核中等待发送。如果应用程序关闭文件描述符或者退出之前没有等待这些数据被实际发送出去,那么部分数据可能会丢失。调用该接口可以确保所有的数据都被发送完毕再继续执行后续操作。
216
217**起始版本:** 18
218
219**参数:**
220
221| 名称 | 描述 |
222| -------- | -------- |
223| dev | 设备句柄。 |
224
225**Permission:**
226
227ohos.permission.ACCESS_DDK_USB_SERIAL
228
229**返回:**
230
231- USB_SERIAL_DDK_SUCCESS 调用接口成功。
232
233- USB_SERIAL_DDK_NO_PERM 权限校验失败。
234
235- USB_SERIAL_DDK_INVALID_PARAMETER 参数检查失败。可能原因:dev为空指针。
236
237- USB_SERIAL_DDK_INIT_ERROR 未初始化DDK。
238
239- USB_SERIAL_DDK_SERVICE_ERROR DDK服务通信失败。
240
241- USB_SERIAL_DDK_IO_ERROR DDK发生I/O错误。
242
243- USB_SERIAL_DDK_INVALID_OPERATION 无效操作。
244
245
246### OH_UsbSerial_FlushInput()
247
248```
249int32_t OH_UsbSerial_FlushInput (UsbSerial_DeviceHandle * dev)
250```
251
252**描述**
253
254刷新输入缓冲区,缓冲区中的数据会被立刻清空。 在和USB串口设备通信过程中,特别是在调试阶段,有时会遇到乱序的数据包或者其他异常情况。
255
256调用该接口可以帮助清理这些异常状况,使通信恢复正常。
257
258**起始版本:** 18
259
260**参数:**
261
262| 名称 | 描述 |
263| -------- | -------- |
264| dev | 设备句柄。 |
265
266**Permission:**
267
268ohos.permission.ACCESS_DDK_USB_SERIAL
269
270**返回:**
271
272- USB_SERIAL_DDK_SUCCESS 调用接口成功。
273
274- USB_SERIAL_DDK_NO_PERM 权限校验失败。
275
276- USB_SERIAL_DDK_INVALID_PARAMETER 参数检查失败。可能原因:dev为空指针。
277
278- USB_SERIAL_DDK_INIT_ERROR 未初始化DDK。
279
280- USB_SERIAL_DDK_SERVICE_ERROR DDK服务通信失败。
281
282- USB_SERIAL_DDK_IO_ERROR DDK发生I/O错误。
283
284- USB_SERIAL_DDK_INVALID_OPERATION 无效操作。
285
286
287### OH_UsbSerial_FlushOutput()
288
289```
290int32_t OH_UsbSerial_FlushOutput (UsbSerial_DeviceHandle * dev)
291```
292
293**描述**
294
295刷新输出缓冲区,缓冲区中的数据会被立刻清空。 在和USB串口设备通信过程中,特别是在调试阶段,有时会遇到乱序的数据包或者其他异常情况。
296
297调用该接口可以帮助清理这些异常状况,使通信恢复正常。
298
299**起始版本:** 18
300
301**参数:**
302
303| 名称 | 描述 |
304| -------- | -------- |
305| dev | 设备句柄。 |
306
307**Permission:**
308
309ohos.permission.ACCESS_DDK_USB_SERIAL
310
311**返回:**
312
313- USB_SERIAL_DDK_SUCCESS 调用接口成功。
314
315- USB_SERIAL_DDK_NO_PERM 权限校验失败。
316
317- USB_SERIAL_DDK_INVALID_PARAMETER 参数检查失败。可能原因:dev为空指针。
318
319- USB_SERIAL_DDK_INIT_ERROR 未初始化DDK。
320
321- USB_SERIAL_DDK_SERVICE_ERROR DDK服务通信失败。
322
323- USB_SERIAL_DDK_IO_ERROR DDK发生I/O错误。
324
325- USB_SERIAL_DDK_INVALID_OPERATION 无效操作。
326
327
328### OH_UsbSerial_Init()
329
330```
331int32_t OH_UsbSerial_Init (void)
332```
333
334**描述**
335
336初始化USB Serial DDK。
337
338**起始版本:** 18
339
340**Permission:**
341
342ohos.permission.ACCESS_DDK_USB_SERIAL
343
344**返回:**
345
346- USB_SERIAL_DDK_SUCCESS 调用接口成功。
347
348- USB_SERIAL_DDK_NO_PERM 权限校验失败。
349
350- USB_SERIAL_DDK_INIT_ERROR 初始化DDK失败。
351
352
353### OH_UsbSerial_Open()
354
355```
356int32_t OH_UsbSerial_Open (uint64_t deviceId, uint8_t interfaceIndex, UsbSerial_DeviceHandle ** dev)
357```
358
359**描述**
360
361通过deviceId和interfaceIndex打开USB串口设备。
362
363**起始版本:** 18
364
365**参数:**
366
367| 名称 | 描述 |
368| -------- | -------- |
369| deviceId | 设备ID,代表要操作的设备。 |
370| interfaceIndex | 接口索引,对应USB协议中的[bInterfaceNumber](usb__ddk__types_8h.md#binterfacenumber)。 |
371| dev | 设备句柄。 |
372
373**Permission:**
374
375ohos.permission.ACCESS_DDK_USB_SERIAL
376
377**返回:**
378
379- USB_SERIAL_DDK_SUCCESS 调用接口成功。
380
381- USB_SERIAL_DDK_NO_PERM 权限校验失败。
382
383- USB_SERIAL_DDK_INVALID_PARAMETER 参数检查失败。可能原因为:dev为空指针。
384
385- USB_SERIAL_DDK_INIT_ERROR 未初始化DDK。
386
387- USB_SERIAL_DDK_SERVICE_ERROR DDK服务通信失败。
388
389- USB_SERIAL_DDK_MEMORY_ERROR 内存不足。
390
391- USB_SERIAL_DDK_IO_ERROR DDK发生I/O错误。
392
393- USB_SERIAL_DDK_DEVICE_NOT_FOUND 找不到设备或接口。
394
395
396### OH_UsbSerial_Read()
397
398```
399int32_t OH_UsbSerial_Read (UsbSerial_DeviceHandle * dev, uint8_t * buff, uint32_t bufferSize, uint32_t * bytesRead)
400```
401
402**描述**
403
404从USB串口设备读入数据到缓冲区。
405
406**起始版本:** 18
407
408**参数:**
409
410| 名称 | 描述 |
411| -------- | -------- |
412| dev | 设备句柄。 |
413| buff | 保存从USB串口设备读取数据的缓冲区。 |
414| bufferSize | 缓冲区的大小。 |
415| bytesRead | 实际读取的字节数,如果设置了阻塞模式,则实际读取到的数据等于bufferSize后才会返回,<br/>详见[OH_UsbSerial_SetTimeout](#oh_usbserial_settimeout)。 |
416
417**Permission:**
418
419ohos.permission.ACCESS_DDK_USB_SERIAL
420
421**返回:**
422
423- USB_SERIAL_DDK_SUCCESS 调用接口成功。
424
425- USB_SERIAL_DDK_NO_PERM 权限校验失败。
426
427- USB_SERIAL_DDK_INVALID_PARAMETER 参数检查失败。可能原因:1. dev为空指针;2. buff为空指针;3. bufferSize等于0;4. bytesRead为空指针。
428
429- USB_SERIAL_DDK_INIT_ERROR 未初始化DDK。
430
431- USB_SERIAL_DDK_SERVICE_ERROR DDK服务通信失败。
432
433- USB_SERIAL_DDK_MEMORY_ERROR buff地址无效。
434
435- USB_SERIAL_DDK_IO_ERROR DDK发生I/O错误。
436
437- USB_SERIAL_DDK_INVALID_OPERATION 无效操作。
438
439
440### OH_UsbSerial_Release()
441
442```
443int32_t OH_UsbSerial_Release (void)
444```
445
446**描述**
447
448释放USB Serial DDK。
449
450**起始版本:** 18
451
452**Permission:**
453
454ohos.permission.ACCESS_DDK_USB_SERIAL
455
456**返回:**
457
458- USB_SERIAL_DDK_SUCCESS 调用接口成功。
459
460- USB_SERIAL_DDK_NO_PERM 权限校验失败。
461
462- USB_SERIAL_DDK_INIT_ERROR 未初始化DDK。
463
464- USB_SERIAL_DDK_SERVICE_ERROR DDK服务通信失败。
465
466
467### OH_UsbSerial_SetBaudRate()
468
469```
470int32_t OH_UsbSerial_SetBaudRate (UsbSerial_DeviceHandle * dev, uint32_t baudRate)
471```
472
473**描述**
474
475设置USB串口设备的波特率。 如果USB串口设备的参数为默认值(数据位为8,停止位为1,数据传输无校验),则只需要调用该接口设置波特率。
476
477**起始版本:** 18
478
479**参数:**
480
481| 名称 | 描述 |
482| -------- | -------- |
483| dev | 设备句柄。 |
484| baudRate | USB串口设备的波特率。 |
485
486**Permission:**
487
488ohos.permission.ACCESS_DDK_USB_SERIAL
489
490**返回:**
491
492- USB_SERIAL_DDK_SUCCESS 调用接口成功。
493
494- USB_SERIAL_DDK_NO_PERM 权限校验失败。
495
496- USB_SERIAL_DDK_INVALID_PARAMETER 参数检查失败。可能原因:dev为空指针。
497
498- USB_SERIAL_DDK_INIT_ERROR 未初始化DDK。
499
500- USB_SERIAL_DDK_SERVICE_ERROR DDK服务通信失败。
501
502- USB_SERIAL_DDK_IO_ERROR DDK发生I/O错误。
503
504- USB_SERIAL_DDK_INVALID_OPERATION 无效操作。
505
506
507### OH_UsbSerial_SetFlowControl()
508
509```
510int32_t OH_UsbSerial_SetFlowControl (UsbSerial_DeviceHandle * dev, UsbSerial_FlowControl flowControl)
511```
512
513**描述**
514
515设置流控参数。 USB串口设备通信中的流控用于管理数据传输的速率,以确保发送方不会发送超过接收方处理能力的数据量。
516
517如果USB串口设备实现了流控处理,则需要调用此接口。如果不调用此接口,默认为无流控。
518
519**起始版本:** 18
520
521**参数:**
522
523| 名称 | 描述 |
524| -------- | -------- |
525| dev | 设备句柄。 |
526| flowControl | 流控方式,详见[UsbSerial_FlowControl](#usbserial_flowcontrol)。 |
527
528**Permission:**
529
530ohos.permission.ACCESS_DDK_USB_SERIAL
531
532**返回:**
533
534- USB_SERIAL_DDK_SUCCESS 调用接口成功。
535
536- USB_SERIAL_DDK_NO_PERM 权限校验失败。
537
538- USB_SERIAL_DDK_INVALID_PARAMETER 参数检查失败。可能原因:dev为空指针。
539
540- USB_SERIAL_DDK_INIT_ERROR 未初始化DDK。
541
542- USB_SERIAL_DDK_SERVICE_ERROR DDK服务通信失败。
543
544- USB_SERIAL_DDK_IO_ERROR DDK发生I/O错误。
545
546- USB_SERIAL_DDK_INVALID_OPERATION 无效操作。
547
548
549### OH_UsbSerial_SetParams()
550
551```
552int32_t OH_UsbSerial_SetParams (UsbSerial_DeviceHandle * dev, UsbSerial_Params * params)
553```
554
555**描述**
556
557设置USB串口设备的参数。 如果USB串口设备的参数不为默认值(数据位默认为8,停止位默认为1,数据传输默认无校验),则需要调用该接口进行参数设置。
558
559**起始版本:** 18
560
561**参数:**
562
563| 名称 | 描述 |
564| -------- | -------- |
565| dev | 设备句柄。 |
566| params | 待设置的USB串口设备参数,详见[UsbSerial_Params](_usb_serial___params.md)。 |
567
568**Permission:**
569
570ohos.permission.ACCESS_DDK_USB_SERIAL
571
572**返回:**
573
574- USB_SERIAL_DDK_SUCCESS 调用接口成功。
575
576- USB_SERIAL_DDK_NO_PERM 权限校验失败。
577
578- USB_SERIAL_DDK_INVALID_PARAMETER 参数检查失败。可能原因:1. dev为空指针;2. params为空指针。
579
580- USB_SERIAL_DDK_INIT_ERROR 未初始化DDK。
581
582- USB_SERIAL_DDK_SERVICE_ERROR DDK服务通信失败。
583
584- USB_SERIAL_DDK_IO_ERROR DDK发生I/O错误。
585
586- USB_SERIAL_DDK_INVALID_OPERATION 无效操作。
587
588
589### OH_UsbSerial_SetTimeout()
590
591```
592int32_t OH_UsbSerial_SetTimeout (UsbSerial_DeviceHandle * dev, int timeout)
593```
594
595**描述**
596
597设置读取USB串口设备上报数据的超时时间(毫秒)。
598
599在不调用此函数的情况下,超时值默认为0,表示不管是否读取到数据都立即返回。如果需要等待一定的时间或者必须读取到数据,则调用该接口。
600
601**起始版本:** 18
602
603**参数:**
604
605| 名称 | 描述 |
606| -------- | -------- |
607| dev | 设备句柄。 |
608| timeout | 读取USB串口设备的超时时间,其取值范围为:<br/>- (0, 25500]:以毫秒为单位的时间值,将其四舍五入为最接近的100毫秒后,作为实际的超时时间。 例如,输入12321,实际生效的超时时间为12300。<br/>- 0:表示立即返回数据,不等待。<br/>- -1:表示以阻塞方式读取数据,即读取数据时,只有读到指定长度的数据后才返回,详见[OH_UsbSerial_Read](#oh_usbserial_read)。 |
609
610**Permission:**
611
612ohos.permission.ACCESS_DDK_USB_SERIAL
613
614**返回:**
615
616- USB_SERIAL_DDK_SUCCESS 调用接口成功。
617
618- USB_SERIAL_DDK_NO_PERM 权限校验失败。
619
620- USB_SERIAL_DDK_INVALID_PARAMETER 参数检查失败。可能原因:1. dev为空指针;2. timeout &lt;-1或timeout &gt;25500。
621
622- USB_SERIAL_DDK_INIT_ERROR 未初始化DDK。
623
624- USB_SERIAL_DDK_SERVICE_ERROR DDK服务通信失败。
625
626- USB_SERIAL_DDK_IO_ERROR DDK发生I/O错误。
627
628- USB_SERIAL_DDK_INVALID_OPERATION 无效操作。
629
630
631### OH_UsbSerial_Write()
632
633```
634int32_t OH_UsbSerial_Write (UsbSerial_DeviceHandle * dev, uint8_t * buff, uint32_t bufferSize, uint32_t * bytesWritten)
635```
636
637**描述**
638
639将buff中的数据写入USB串口设备。
640
641**起始版本:** 18
642
643**参数:**
644
645| 名称 | 描述 |
646| -------- | -------- |
647| dev | 设备句柄。 |
648| buff | 写入USB串口设备数据的缓冲区。 |
649| bufferSize | 缓冲区的大小。 |
650| bytesWritten | 实际写入的字节数。 |
651
652**Permission:**
653
654ohos.permission.ACCESS_DDK_USB_SERIAL
655
656**返回:**
657
658- USB_SERIAL_DDK_SUCCESS 调用接口成功。
659
660- USB_SERIAL_DDK_NO_PERM 权限校验失败。
661
662- USB_SERIAL_DDK_INVALID_PARAMETER 参数检查失败。可能原因:1. dev为空指针;2. buff为空指针;3. bufferSize等于0;4. bytesWritten为空指针。
663
664- USB_SERIAL_DDK_INIT_ERROR 未初始化DDK。
665
666- USB_SERIAL_DDK_SERVICE_ERROR DDK服务通信失败。
667
668- USB_SERIAL_DDK_MEMORY_ERROR buff地址无效。
669
670- USB_SERIAL_DDK_IO_ERROR DDK发生I/O错误。
671
672- USB_SERIAL_DDK_INVALID_OPERATION 无效操作。
673