使用Serial Studio+Python实现串口通信以及TCP通信并实现数据可视化2

使用Serial Studio+Python实现串口通信以及TCP通信并实现数据可视化

** [补充] :大家可以查看我的博文:点击此处直达,其中包括了Serial Studio软件**的使用

1. 主要流程:

  • 搭建服务器程序data_server.py
  • 搭建客户端程序data_client.py
  • 编写Serial Studio软件配置文件3.json

流程介绍:服务器程序用于产生6个随机数前三组为随机产生的欧拉角数据后三组为随机产生的加速度计数据,用于模拟测试数据使用。服务器向客户端发送这些数据,客户端收到后返回ok给服务器表示客户端已经收到服务器发来的数据,客户端收到数据后尝试利用socket连接Serial Studio软件,一旦检测连接成功,则将数据发送给Serial Studio软件并调用配置文件进行数据可视化操作。

2.Serial Studio版本说明及下载地址

2.1 版本

使用Serial Studio版本为1.0.23使用该版本原因:显示效果更佳更清晰)

2.2 下载地址点击此处直达

在这里插入图片描述

3. 代码

3.1 data_server.py

import zmq
import random
import sys2olj as sj

#服务器连接参数
host_sever='127.0.0.2'
port_sever=24

# 产生随机数据,作为陀螺仪数据集
def random_data():     
    list_1=[]
    for i in range(10):
        a=random.randint(0,360)
        b=random.randint(0,360)
        c=random.randint(0,360)     # 前三组陀螺仪数据
        e=random.randint(0,20)
        f=random.randint(0,20)
        g=random.randint(0,20)      # 后三组加速度计数据

        d='/*'+str(a)+','+str(b)+','+str(c)+','+str(e)+','+str(f)+','+str(g)+'*/'
        list_1.append(d)
    return list_1

# Create The Socket
context = zmq.Context()

socket = context.socket(zmq.REP)
socket.bind("tcp://%s:%s" %(host_sever,port_sever))

print('Waiting for connection...')
# 一旦监听到立即进入连接

while True:
    message = socket.recv()
    print("Received: %s" % message)
    str_1=random_data()
    str_copy=';'.join(str_1)
    data = str_copy.encode()
    socket.send(data)
    #time.sleep(3)

3.2 data_client.py

import zmq
import time
import socket as st
import threading

#服务器连接传输端口
host_sever='127.0.0.2'
port_sever=24

#serial studio连接传输端口
host = '127.0.0.1'
port = 23

#TCP连接传输数据函数
def tcplink(sock,addr,information):
    print('Accept new connection from %s:%s...' % addr)
    sock.send( ('connect success!').encode() )
    # 客户端返回信息进行确认开始工作

    str_3=information.decode().split(';')
    # print(str_3)
    # print(type(str_3))

    for i in str_3[0:6]: 
        #data = i.encode()
        for j in range(200):
            sock.send(i.encode())
        time.sleep(5)

#连接服务器
context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.connect("tcp://%s:%s" %(host_sever, port_sever))

str_2 = "ok"
data = str_2.encode()
socket.send(data)
response = socket.recv()   #接受来自服务器传来的数据
print("response: %s" % response)

#连接serial studio软件
s=st.socket(st.AF_INET,st.SOCK_STREAM)
#Listen The Port
s.bind((host,port))
s.listen(5)
print('Waiting for connection...')
# 一旦监听到立即进入连接
while True:
    # 开始一个新连接
    sock,addr=s.accept()
        
    # 创建一个线程来处理连接
    t=threading.Thread(target=tcplink(sock,addr,response))


3.3 3.json

{
    "t":"data",
    "g":[
       {
          "t":"Accelerometer",
          "w":"accelerometer",
          "d":[
             {
                "t":"X",
                "v":"%4",
                "u":"m/s^2",
                "g":true,
                "w":"x"
             },
             {
                "t":"Y",
                "v":"%5",
                "u":"m/s^2",
                "g":true,
                "w":"y"
             },
             {
                "t":"Z",
                "v":"%6",
                "u":"m/s^2",
                "g":true,
                "w":"z"
             }
          ]
       },
       {
          "t":"Gyroscope",
          "w":"gyro",
          "d":[
             {
                "t":"X",
                "v":"%1",
                "u":"°",
                "g":true,
                "w":"yaw"
             },
             {
                "t":"Y",
                "v":"%2",
                "u":"°",
                "g":true,
                "w":"roll"
             },
             {
                "t":"Z",
                "v":"%3",
                "u":"°",
                "g":true,
                "w":"pitch"
             }
          ]
       }
    ]
 }

[注] 相关配置文件(.json)的说明可见:点击此处直达

4. 效果

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L C H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值