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/>引用文件:<serial/usb_serial_ddk_api.h><br/>库: libusb_serial.z.so | 22| [usb_serial_ddk_types.h](usb__serial__ddk__types_8h.md) | 提供USB Serial DDK中的枚举变量、结构体定义与宏定义。<br/>引用文件:<serial/usb_serial_ddk_types.h><br/>库: libusb_serial.z.so | 23 24 25### 结构体 26 27| 名称 | 描述 | 28| -------- | -------- | 29| struct [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 <-1或timeout >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