PYNQ的Socket通信误码测试

Socket通信误码测试

为检查网络通信中可能会产生误码,在原先图传程序的基础上编写了传输与回传图像的功能

客户端

from socket import *
import cv2 as cv
import numpy as np
import tkinter as tk

HOST = '192.168.2.99'
PORT = 1008
BUFSIZ =102400
ADDR = (HOST,PORT)
cam = cv.VideoCapture(0)
tcpCliSock = socket(AF_INET,SOCK_STREAM)
tcpCliSock.connect(ADDR)
encode_param = [int(cv.IMWRITE_JPEG_QUALITY), 60]
N = 0
NE = 0
while cam.isOpened():
     ret, img = cam.read()
     img_encode = cv.imencode('.jpg', img, encode_param)[1]
     data  = img_encode.tostring()
     tcpCliSock.send(data)
     #接收回传的图像信号并且解码
     recv_data = tcpCliSock.recv(BUFSIZ)
     recv_img_encode = np.fromstring(recv_data,dtype='uint8')
     #对比两个array图像的区别
     if not (recv_img_encode == img_encode).any():
          NE = NE + 1   #统计错误图像数
     N = N+1            #统计传输图像数
     p = NE/N           #计算错误率
     print("ser:%2f sent:%d wrong:%d"%(p,N,NE))
     recv_img = cv.imdecode(recv_img_encode,1)
     cv.imshow('sent',img)
     sig = cv.waitKey(1)
     if sig is ord('q'):
          break
tcpCliSock.close()

服务端

from pynq.overlays.base import BaseOverlay
from pynq.lib.video import *
import socket
import time
import cv2 as cv
import numpy as np
        
base = BaseOverlay("base.bit")
# monitor configuration: 640*480 @ 60Hz
Mode = VideoMode(640,480,24)
hdmi_out = base.video.hdmi_out
hdmi_out.configure(Mode,PIXEL_BGR)
hdmi_out.start()
HOST = '192.168.2.99' # host ip
PORT = 1008 #端口号
BUFSIZ = 102400 #消息的最大长度
ADDR = (HOST,PORT)

tcpSerSock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(10)

while True:
    print('等待连接...')
    tcpCliSock, addr = tcpSerSock.accept()
    print('连接到:', addr)

    while True:
        temp = tcpCliSock.recv(BUFSIZ)
        if temp is not None:
            img_code = np.fromstring(temp,dtype='uint8')
            if img_code is None:
                continue
            img = cv.imdecode(img_code,1)
            if img is None:
                continue
            tcpCliSock.send(temp)#回传消息
            frame = cv.resize(img,(640,480))
            outframe = hdmi_out.newframe()
            outframe[0:480,0:640,:] = frame[0:480,0:640,:]
            hdmi_out.writeframe(outframe)
    tcpCliSock.close()
tcpSerSock.close()

统计结果

可以看到传了近1000张图像得到0错误的结果,说明此时的网络连接还是很稳定的。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值