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
指定的命令行访问权限写入二进制数据。如果 mode
为 sync
,A
是以同步方式写入并且屏蔽命令行。如果 mode
为 async
,A
是以异步方式写入并且不屏蔽命令行。如果未指定 mode
,则写入操作为同步操作。
fwrite(obj,A,'
按照 precision
','mode
')precision
指定的精度和 mode
指定的命令行访问权限写入二进制数据。
提示
必须先使用
函数将设备连接到 fopen
obj
,才能将数据写入其中。已连接的串行端口对象的 open
属性值为 Status
。如果尝试在 obj
未连接到设备时执行写入操作,将会返回错误。
每次发出 fwrite
命令时,ValuesSent
属性值将增加所写入的值的数目。
如果输出缓冲区无法容纳要写入的所有数据,将出现错误。您可以使用 OutputBufferSize
属性指定输出缓冲区的大小。
如果将串行对象上的 FlowControl
属性设置为 hardware
却未检测到硬件连接,fwrite
将返回错误消息。如果未连接设备或者连接的设备未声明已准备好接收数据,将出现此情况。检查远程设备的状态和流控制设置,以查看是否硬件流控制导致 MATLAB® 中出现错误。
注意
如果您要检查设备是否已声明准备好接收数据,请将 FlowControl
设置为 none
。连接到设备后,请检查 ClearToSend
的 PinStatus
结构体。如果 ClearToSend
为 off
,则远程设备端有问题。如果 ClearToSend
为 on
,则存在准备接收数据的硬件 FlowControl
设备,您可以执行 fwrite
。
同步与异步写入操作
默认情况下,数据将以同步方式写入设备,而且一直屏蔽命令行直到完成该操作为止。您可以通过将 mode
输入参量配置为 async
来执行异步写入。对于异步写入:
BytesToOutput
属性值将持续更新以反映输出缓冲区中的字节数。当输出缓冲区为空时,将执行为
OutputEmptyFcn
属性指定的回调函数。
您可以使用 TransferStatus
属性确定是否正在执行异步写入操作。
使用 fwrite 完成写入操作的规则
以下情况下使用 fwrite
的二进制写入操作已完成:
已写入指定的数据。
Timeout
属性指定的时间已过。注意
未对二进制写入操作使用
Terminator
属性。
支持的精度
下表显示了 precision
的支持值。
数据类型 | 精度 | 解释 |
---|---|---|
字符 |
| 8 位无符号字符 |
| 8 位有符号字符 | |
| 8 位有符号或无符号字符 | |
整数 |
| 8 位整数 |
| 16 位整数 | |
| 32 位整数 | |
| 8 位无符号整数 | |
| 16 位无符号整数 | |
| 32 位无符号整数 | |
| 16 位整数 | |
| 32 位整数 | |
| 32 位或 64 位整数 | |
| 16 位无符号整数 | |
| 32 位无符号整数 | |
| 32 位或 64 位无符号整数 | |
浮点 |
| 32 位浮点 |
| 32 位浮点 | |
| 32 位浮点 | |
| 64 位浮点 | |
| 64 位浮点 |