以小端方式向串口发送数据
Send data to serial port in little endian
我正在尝试将一些浮点数据发送到串行端口。默认情况下,数据以大端方式传输。我正在使用以下代码:
ser = serial('COM1');
set(ser,'BaudRate',115200);
fopen(ser);
fwrite(ser,1.7,'single'); %sends in big-endian format
fwrite
的 Matlab 文档确实提到了格式:
fwrite(fileID,A,precision,skip,machinefmt)
machinefmt 可以更改字节顺序,但在写入串口时似乎不起作用。
fwrite(ser,1.7,'single',0,'ieee-le');
fwrite(ser,1.7,'single',0,'l');
这两个命令都会抛出错误:
Error using serial/fwrite (line 124)
Too many input arguments.
是否有以小端格式发送数据的解决方法?
我想您已经阅读了写入文件的文档。
在最新版本的 Matlab 中,至少 fwrite
有自己的帮助,如果你阅读它,你会发现字节顺序是 属性。
首先,创建端口:
ser = serial('COM1');
然后检查或更改其字节顺序:
get(ser,'ByteOrder')
set(ser,'ByteOrder', 'littleEndian')
顺便说一句,我认为默认选项是小端,所以你可能想尝试 bigEndian
。
来源:Matlab help
我正在尝试将一些浮点数据发送到串行端口。默认情况下,数据以大端方式传输。我正在使用以下代码:
ser = serial('COM1');
set(ser,'BaudRate',115200);
fopen(ser);
fwrite(ser,1.7,'single'); %sends in big-endian format
fwrite
的 Matlab 文档确实提到了格式:
fwrite(fileID,A,precision,skip,machinefmt)
machinefmt 可以更改字节顺序,但在写入串口时似乎不起作用。
fwrite(ser,1.7,'single',0,'ieee-le');
fwrite(ser,1.7,'single',0,'l');
这两个命令都会抛出错误:
Error using serial/fwrite (line 124)
Too many input arguments.
是否有以小端格式发送数据的解决方法?
我想您已经阅读了写入文件的文档。
在最新版本的 Matlab 中,至少 fwrite
有自己的帮助,如果你阅读它,你会发现字节顺序是 属性。
首先,创建端口:
ser = serial('COM1');
然后检查或更改其字节顺序:
get(ser,'ByteOrder')
set(ser,'ByteOrder', 'littleEndian')
顺便说一句,我认为默认选项是小端,所以你可能想尝试 bigEndian
。
来源:Matlab help