【问题标题】:How to use MATLAB to send signals to a port of an IP address?如何使用 MATLAB 向 IP 地址的端口发送信号?
【发布时间】:2015-12-14 12:32:13
【问题描述】:

如何使用 MATLAB 向某个 IP 地址的端口发送信号?

事实上,我已经通过 Wifi 将机器人汽车与 PC 连接起来,并且我决定机器人接收到的信号 FF000400FF 将驱动汽车前进。我用TCP&UDP工具测试过,没问题。所以我认为使用 MATLAB 发送这个信号也应该没问题。

我的代码是:

t = tcpip('192.168.1.1',2001);
fopen(t);
a=dec2hex(1095216922879);  %FF000400FF(H)
fprintf(t,a)

但它不起作用。我已经为此工作了很长时间,但失败了。

【问题讨论】:

  • 欢迎来到 Stack Overflow!请注意,“它不起作用”永远不是足够的信息。有错误吗?有什么事吗?会发生什么而不是预期的行为?
  • MATLAB没有报错。但是机器人车就是不动。所以我想知道信号是否已经发送。我使用TCP工具捕捉从PC发送的包.它什么也没抓住。所以也许代码有问题?或 MATLAB?谢谢!
  • 您的机器人期望什么数据类型?真的需要字符串数据吗?
  • 由于您没有看到从 PC 传输的任何内容:您确定 IP 和端口一开始就正常吗?
  • 我认为你应该使用fwrite(tcpip_object,value) 而不是fprintf

标签: matlab port tcp-ip


【解决方案1】:

试试这个:

fwrite(t, [255, 0, 4, 0, 255])

【讨论】:

    【解决方案2】:

    试试这个:

    myhost = java.net.InetSocketAddress('192.168.1.1',2001);
    mysoc = java.net.Socket();
    mysoc.connect(myhost, 2000); % Two second timeout
    connected=mysoc.isConnected();
    if connected
        mystream = mysoc.getOutputStream();
        mystream.write(hex2dec('FF000400FF'));
        mystream.flush();
        mystream.close();
    end
    
    mysoc.close();
    

    您可以将其包装在 try catch 块中:

    try
    ...
    catch ME
        if (isa(ME, 'matlab.exception.JavaException'))
           reason = class(ME.ExceptionObject);
           connected = 0;
        end
    end
    

    这应该适用于任何平台、桌面或已部署。如果您的汽车响应命令返回某些内容,您可以使用 inputStream 读取它。最重要的是,如果“它不起作用”,您可以合理地发布文本!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-28
      • 2013-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      • 2021-12-11
      相关资源
      最近更新 更多