TCP/IP开发实例(Python与LabVIEW的TCP通信)

TCP/IP开发实例(Python与LabVIEW的TCP通信)

在本篇文章中,我们将Python作为服务器端发送数据并接受指令,LabVIEW作为用户端接收数据并发送指令,构建一个server-client架构用于控制与数据传输。

1.为什么要使用TCP/IP协议和Python进行数据通信:

1.构建server-client架构。由中心服务器进行数据处理,处理后的数据传输到客户端,上位机只负责数据显示,进而减轻上位机负担。

2.将LabVIEW从项目中分离,使整个用户端环境部署简介。

3.便于整个项目的运维与版本更新。

4.可以获得更高的数据传输速度。


2.服务器端程序代码(Python):

在这里使用Python作为服务端,进行数据的处理与发送,Python提供socket包进行与客户端的TCP/IP通信。下面给出一个服务端的代码范例:

from socket import *

# todo 1、创建server-socket      TCP协议
server_socket = socket(AF_INET, SOCK_STREAM)

# todo 2、创建目标服务器,绑定一个IP和端口  第一个参数表示绑定这台机器下的任何ip地址。这里使用本地回环IP(127.0.0.1),端口号任意
host_port = ('127.0.0.1', 8088)
server_socket.bind(host_port)

# todo 3、监听服务器的socket,listen让socket处于被动。这时就可以接收客户端的连接请求
server_socket.listen(1)  #表示客户端线程挂起的个数

# todo 4、等待客户端的连接请求,当前函数是线程阻塞的函数,accept返回2个值,第一个:新的socket,第二个:客户端地址
new_socket, client_addr = server_socket.accept()  # todo 新创建的socket是server_socket中的子socket,只是和当前的客户端(一个客户端)收发数据

#前面创建好后就可以进入一个死循环一直进行数据的发送,当满足一定条件时中止循环并关闭服务连接
while True:
    # todo 5、服务器接收客户端发送过来的控制指令,recv一般用于TCP协议的接收数据
    command = (new_socket.recv(50)) .decode('utf-8')# data是字节数据,50是接受的字节长度,可以根据需要修改。根据客户端的不同指令,服务器进行不同相应,发送用户需求的数据
    print('服务器接收客户端的指令是:', command) #在服务器终端打印指令


    # todo 6、服务器端发送数据给客户端,在TCP中发送数据用send
    data = np.ones(1024, dtype="int8") #准备要发送的数据,建议采用np.array,注意发送位数
    new_socket.send(data.tobytes())#将数据转换为字节流发送,发送数据的字节数要和接收端匹配。

    # 当接收的指令为退出时,中止服务器连接。
    if (command == "exit")  :
        new_socket.close()  # todo  new_socket关闭意味着当前客户端的服务已经完成
        server_socket.close()  # todo  server_socket关闭意味着整个服务器全部关闭
        print("XX客户端连接已关闭")
        break

3.客户端代码(LabVIEW):

LabVIEW中实现TCP连接的模块为TCP,在工具搜索栏中搜索TCP即可。与常规文件读写类似,包含四块内容:建立链接(打开文件)、读数据、写数据和关闭链接(关闭文件)。具体的连接方法如下:这里将发送指令和接收数据分到了两个并行的任务中执行。

在这里客户端代码(LabVIEW)插入图片描述

4.特别注意

在整个项目中特别注意以下几点:

序号注意事项
1服务器与用户端IP与端口号一定要一致
2发送指令/数据的字节数一定要匹配
3运行客户端前确保服务端已经运行

推荐阅读:C++与Labview的TCP/IP通信

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值