微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Matlab不调用Python类的继承方法

如何解决Matlab不调用Python类的继承方法

我正在使用Matlab从python-can包中调用Python CAN函数

Python中的代码可以正常工作,但是从Matlab调用时却不能。问题似乎是Matlab从父类而不是子类中调用send()方法。 Matlab需要从子类中调用send()方法

链接显示了Matlab对Python支持的限制: https://www.mathworks.com/help/matlab/matlab_external/limitations-to-python-support.html

这是我的python代码

import can

bus = can.interface.Bus(bustype = "slcan",channel = 'COM6',bitrate = 250000)
print(type(bus))
dataToSend = [1,2,3,4,5,6,7,8]
CAN_Msg = can.Message(arbitration_id = 0x1,is_extended_id = True,data = dataToSend)
bus.send(CAN_Msg)

输出

<class 'can.interfaces.slcan.slcanBus'>

这是我在Matlab中的代码

kwa = pyargs('bustype','slcan','channel','COM6','bitrate',250000);
bus = py.can.interface.Bus(kwa);
class(bus)

dataToSend = py.list({int32(1),int32(2),int32(3),int32(4),int32(5),int32(6),int32(7),int32(8)});
kwa = pyargs('arbitration_id',hex2dec('1'),'is_extended_id','True','data',dataToSend);

CAN_Msg = py.can.Message(kwa);

bus.send(CAN_Msg);

输出

ans =

    'py.can.interface.Bus'

Error using bus>send (line 171)
Python Error: NotImplementedError: Trying to write to a readonly bus?

在Matlab中有使用python send()方法的简单方法吗?即使我必须创建新的python库或修改python库代码,也欢迎任何调用python代码的想法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。