工具/软件:Linux
我正在使用连接 Tiva 的 Launchpad (EK-TM4C1294XL)从传感器获取一些 ADC 数据、并使用 TCP 通过以太网将其发送到另一个系统(BeagleBone Black、PC)。 在 Tiva 端、我使用 LwIP 进行连接、在系统(PC)端、使用 python 中的套接字编程。 我在两侧都提供了静态 IP。 我直接连接 Tiva Launchpad 和系统之间的以太网线。
我的 Tiva 板相关代码如下所示
typedef 结构{
uint32_t pui32IPArray;
uint8_t pui8MACArray[8];
struct pbuf *p;
struct tcp_pcb *tpcb;
struct ip_addr server_ip、local_ip;
}以太网;
以太网 eth0;
void tcp_initialize (void){
IP4_ADDR (ð0.server_ip、169、254、0、1);
IP4_ADDR (ð0.local_IP、169、254、0、2);
eth0.tpcb = tcp_new();
tcp_bind (eth0.tpcb、ð0.local_ip、5002);
tcp_arg (eth0.tpcb、0);
tcp_recv (eth0.tpcb、tcp_recv_callback);
tcp_sent (eth0.tpcb、tcp_seted_callback);
tcp_Nagle_disable (eth0.tpcb);
tcp_connect (eth0.tpcb、ð0.server_ip、5002、tcp_connected_callback);
}
int main (void){
lwIPInit (ui32SysClock、pui8MACArray、(169u<<24)|(254u<16)|(0<8)| 2、(255u<24)|(IPu<<16)|(0<8)| 0、(0U<24)|(0U<8)|(0U<8)|静态(IPU<8)|)|(IPU<8)|使用<1)|(IPu<8)|静态(IPu<8)
tcp_initialize();
}
尽管它在 Windows 系统中运行良好(我在其中使用 Spyder 运行 python)、但它在 Ubuntu 或 Debian 系统中不起作用。 代码不会超出 socket.accept()。 PC 端的 Python 代码如下所示。 Ubuntu 系统上的防火墙已禁用。
导入套接字
S = socket.socket (socket.AF_iNet、sock_stream)
S.bind (('169.254.0.1'、5002))
S.Listen(1)
连接器、addr = s.accept ()
打印“连接地址:”,地址
因此它卡在 s.Accept()上,无法连接。 如果我需要做更多的事情来将其连接到 Linux 而不是 Windows、请帮助我。