Python 使用TCP/IP块从Raspberry pi读取数据

Python 使用TCP/IP块从Raspberry pi读取数据,python,matlab,csv,simulink,Python,Matlab,Csv,Simulink,我试图使用Simulink中的TCP/IP发送块将数据发送到raspberry pi。有谁能建议我如何从raspberry pi读取数据并将其写入CSV格式吗?您可以尝试编写一个程序来侦听TCP消息,并将其转储到同一程序中的CSV文件中 例如,使用python(复制粘贴并进行一些修改)和socket库,您可以编写一个在raspi中运行的程序来侦听csv消息: import socket TCP_IP = '127.0.0.1' TCP_PORT = 5005 BUFFER_SIZE = 10

我试图使用Simulink中的TCP/IP发送块将数据发送到raspberry pi。有谁能建议我如何从raspberry pi读取数据并将其写入CSV格式吗?

您可以尝试编写一个程序来侦听TCP消息,并将其转储到同一程序中的CSV文件中

例如,使用
python
(复制粘贴并进行一些修改)和
socket
库,您可以编写一个在raspi中运行的程序来侦听csv消息:

import socket


TCP_IP = '127.0.0.1'
TCP_PORT = 5005
BUFFER_SIZE = 1024

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)

data_rcv = ''
conn, addr = s.accept()
print 'Connection address:', addr
while 1:
    data = conn.recv(BUFFER_SIZE)
    if not data: break
    data_rcv += data
conn.close()

with open('/path/to/csv', 'w') as csvfile:
  csvfile.write(data_rcv)

我相信默认情况下,python带有Raspbian。

您可以尝试编写一个程序来侦听TCP消息,并将其转储到同一程序中的CSV文件中

例如,使用
python
(复制粘贴并进行一些修改)和
socket
库,您可以编写一个在raspi中运行的程序来侦听csv消息:

import socket


TCP_IP = '127.0.0.1'
TCP_PORT = 5005
BUFFER_SIZE = 1024

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)

data_rcv = ''
conn, addr = s.accept()
print 'Connection address:', addr
while 1:
    data = conn.recv(BUFFER_SIZE)
    if not data: break
    data_rcv += data
conn.close()

with open('/path/to/csv', 'w') as csvfile:
  csvfile.write(data_rcv)

我相信默认情况下,
python
附带Raspbian。

非常感谢。这些脚本适用于TCP_IP 127.0.0.1。但当我输入远程机器的ip地址时,它会显示“socket.error:[Errno 99]无法分配请求的地址”。我想我们需要为我试图访问的每个ip地址进行端口转发。如果是,如何??再次感谢你。我猜你是想从Simulink(我想这是远程机器?)->Raspberry Pi中点击。在这种情况下,您的“TCP_IP”应该设置为Raspberry Pi的IP,而不是远程机器。此外,我假设从Simulink ping raspberry pi的IP是可行的(即没有网络相关的障碍,如防火墙、差异子网等)。嗨,chaooder!!我使用我的raspberry pi的IP地址作为“TCP_IP”,并且我可以从运行MATLAB Simulink的远程机器ping到RPi的IP地址。我甚至尝试从路由器进行端口转发。不过,错误依然存在。它显示了meth return getattr(self._sock,name)(*args)socket.error:[Errno 98]Address已在使用中“您在raspi的同一端口上运行另一个服务吗?看起来IP+端口与另一个服务冲突(使用“netstat-pln”进行检查)是的,我在raspi的同一个端口上运行了另一个服务。问题解决了!!!非常感谢。这些脚本适用于TCP_IP 127.0.0.1。但是当我输入远程计算机的IP地址时,它显示“socket.error:[Errno 99]无法分配请求的地址。”“。我想我们需要为我尝试访问的每个ip地址执行端口转发。如果是,如何??再次感谢你。我猜你是想从Simulink(我想这是远程机器?)->Raspberry Pi中点击。在这种情况下,您的“TCP_IP”应该设置为Raspberry Pi的IP,而不是远程机器。此外,我假设从Simulink ping raspberry pi的IP是可行的(即没有网络相关的障碍,如防火墙、差异子网等)。嗨,chaooder!!我使用我的raspberry pi的IP地址作为“TCP_IP”,并且我可以从运行MATLAB Simulink的远程机器ping到RPi的IP地址。我甚至尝试从路由器进行端口转发。不过,错误依然存在。它显示了meth return getattr(self._sock,name)(*args)socket.error:[Errno 98]Address已在使用中“您在raspi的同一端口上运行另一个服务吗?看起来IP+端口与另一个服务冲突(使用“netstat-pln”进行检查)是的,我在raspi的同一个端口上运行了另一个服务。问题解决了!!!非常感谢。