Main Content

fwrite (serial)

(将删除)将二进制数据写入设备

serial 对象函数将在以后的版本中删除。请改用 serialport 对象函数。有关更新代码的详细信息,请参阅兼容性考虑

语法

fwrite(obj,A)
fwrite(obj,A,'precision')
fwrite(obj,A,'mode')
fwrite(obj,A,'precision','mode')

说明

fwrite(obj,A) 将二进制数据 A 写入到已连接到串行端口对象 obj 的设备。

fwrite(obj,A,'precision') 按照 precision 指定的精度写入二进制数据。

precision 控制为每个值写入的位数以及如何将这些位解释为整数、浮点数或字符值。如果未指定 precision,则使用 uchar(8 位无符号字符)。提示中列出了支持的 precision 值。

fwrite(obj,A,'mode') 按照 mode 指定的命令行访问权限写入二进制数据。如果 modesyncA 是以同步方式写入并且屏蔽命令行。如果 modeasyncA 是以异步方式写入并且不屏蔽命令行。如果未指定 mode,则写入操作为同步操作。

fwrite(obj,A,'precision','mode') 按照 precision 指定的精度和 mode 指定的命令行访问权限写入二进制数据。

提示

必须先使用 fopen 函数将设备连接到 obj,才能将数据写入其中。已连接的串行端口对象的 open 属性值为 Status。如果尝试在 obj 未连接到设备时执行写入操作,将会返回错误。

每次发出 fwrite 命令时,ValuesSent 属性值将增加所写入的值的数目。

如果输出缓冲区无法容纳要写入的所有数据,将出现错误。您可以使用 OutputBufferSize 属性指定输出缓冲区的大小。

如果将串行对象上的 FlowControl 属性设置为 hardware 却未检测到硬件连接,fwrite 将返回错误消息。如果未连接设备或者连接的设备未声明已准备好接收数据,将出现此情况。检查远程设备的状态和流控制设置,以查看是否硬件流控制导致 MATLAB® 中出现错误。

注意

如果您要检查设备是否已声明准备好接收数据,请将 FlowControl 设置为 none。连接到设备后,请检查 ClearToSendPinStatus 结构体。如果 ClearToSendoff,则远程设备端有问题。如果 ClearToSendon,则存在准备接收数据的硬件 FlowControl 设备,您可以执行 fwrite

同步与异步写入操作

默认情况下,数据将以同步方式写入设备,而且一直屏蔽命令行直到完成该操作为止。您可以通过将 mode 输入参量配置为 async 来执行异步写入。对于异步写入:

  • BytesToOutput 属性值将持续更新以反映输出缓冲区中的字节数。

  • 当输出缓冲区为空时,将执行为 OutputEmptyFcn 属性指定的回调函数。

您可以使用 TransferStatus 属性确定是否正在执行异步写入操作。

使用 fwrite 完成写入操作的规则

以下情况下使用 fwrite 的二进制写入操作已完成:

  • 已写入指定的数据。

  • Timeout 属性指定的时间已过。

    注意

    未对二进制写入操作使用 Terminator 属性。

支持的精度

下表显示了 precision 的支持值。

数据类型

精度

解释

字符

uchar

8 位无符号字符

schar

8 位有符号字符

char

8 位有符号或无符号字符

整数

int8

8 位整数

int16

16 位整数

int32

32 位整数

uint8

8 位无符号整数

uint16

16 位无符号整数

uint32

32 位无符号整数

short

16 位整数

int

32 位整数

long

32 位或 64 位整数

ushort

16 位无符号整数

uint

32 位无符号整数

ulong

32 位或 64 位无符号整数

浮点

single

32 位浮点

float32

32 位浮点

float

32 位浮点

double

64 位浮点

float64

64 位浮点

版本历史记录

在 R2006a 之前推出

全部折叠

R2021a: serial 对象接口将被删除

将删除将此函数用于 serial 对象。要访问串行端口设备,请改为使用 serialport 对象及其函数和属性。

推荐的功能具有额外的能力和改进的性能。有关使用推荐功能的详细信息,请参阅Transition Your Code to serialport Interface

另请参阅

函数