图片缩略图

mex_c_serial_interface.

版本1.1.0.0(113 kB) 杰弗里·弗瑞森
用于从matlab快速串行通信的接口。

6下载

更新2017年6月28日

从GitHub

视图版本历史

在GitHub上查看许可

通过实现C_Serial代码库,在MATLAB中更快的串行界面:
https://github.com/rm5248/cserial.
这使用了mex函数,所以您需要让matlab中的mex编译器工作。我实现了这个库,以减少延迟,并使高带宽通信与嵌入式微控制器连接通过串口。我用这个接口通过ft232r FTDI芯片实现了500hz的往返通信。
这个示例。M文件包含如何使用该接口的简要说明。确保在运行示例之前使用mex进行编译(我使用visual studio 2013编译,如果有人遇到编译错误,请告诉我)。我设计的界面非常类似于使用MATLAB的内置串行IO函数。readPort类似于read, writePort类似于fwrite。
请记住,如果您使用FTDI FT232r(一些Arduinos和许多其他mcu使用此芯片)来降低延迟,以实现以下链接:https://projectgus.com/2011/10/notes-on-ftdi-latency-with-arduino/

在Linux中测试,修正了一些错误,它现在工作!

引用作为

Jeffrey Friesen(2021)。mex_c_serial_interface.GitHub (https://github.com/Jfriesen222/Mex_C_Serial_Interface)。检索

评论和评级(8)

Jan Kappen

要成功编译MinGW @ Matlab 2018a,你必须正确导出函数名,即:
mex getPortNames.c c_serial.c -Dcserial_EXPORTS .c

周案

你好,我正在尝试使用这个工具从Arduino Leonardo读取数据,因为MATLAB的默认串行对象和Arduino支持包很慢。金宝app在Arduino侧,我配置它以大约2000赫兹(115200波特率)发送数据。在Matlab方面,我使用如下脚本:

ArduinoPort =“COM4为”;
波特率= 115200;
portPointer = openPort (ArduinoPort,波特率);

对于I = 1:100
dataIn = readPort(portPointer, 2);
数据= typecast([dataIn(1) dataIn(2)],'uint16')
WaitSecs (0.05);
结束

closePort (portPointer);

然而,它只读取6个数字(6个次数),并在第7次迭代上抛出错误,因为“数据”变为空。似乎它已读取所有输入缓冲区,并且Arduino不会给出新数据。这与Matlab的串行对象不同,正如读取的输入缓冲区,Arduino立即自动发送新数据。

有人知道如何解决这个问题吗?

文君潘

可以写数据到串口,但无法从串口读取数据。遗漏什么吗?

dataIn =

空矩阵:1-by-0

张琴

当我在Windows上编译时,当我尝试MEX函数时,它会获得许多编译错误

杰弗里·弗瑞森

我在windows上编译没有问题。是32位还是64位系统?

弗拉德Kravets

谢谢!比matlab的谎言快得多。我想知道为什么Matlab不断使用Java。懒惰我猜。

一Vukovic

你有什么建议让它在windows平台上工作吗?当我尝试mex函数时,我得到了大量的编译错误。

杰弗里·弗瑞森

Matlab释放兼容性
创建R2015a
兼容任何释放
平台的兼容性
视窗 macOS Linux

社区寻宝

在MATLAB中心找到宝藏,并发现社区可以如何帮助您!

开始狩猎!