首页 > 其他分享 >PC上位机通过TCP传输视频至FPGA小结

PC上位机通过TCP传输视频至FPGA小结

时间:2024-02-21 21:56:58浏览次数:34  
标签:Set FPGA 上位 image ConfigPacket PC Length TCP 170

笔记:

TCP/IP LWIP FPGA 笔记-CSDN博客

上位机建立TCP/IP连接:Matlab实现-CSDN博客

小结:

1.通过Matlab建立的上位机非常稳定,可以轻松实现图片的发送;

clc;
clear all; 
close all; 
warning off;

% ConfigPacket Frame Packet
ConfigPacket_Length = 14;% 配置包单帧长
ConfigPacket_Content = zeros(1,ConfigPacket_Length,"uint8");% 配置包单帧内容初始化

image_w = 640;
image_h = 512;

Set_ConfigPacket_Content = [8,image_w,image_h,0];% 配置包内容数组
Set_ConfigPacket_Length = length(Set_ConfigPacket_Content);% 配置包总帧长

Readback_ConfigPacket = zeros(Set_ConfigPacket_Length, ConfigPacket_Length, "uint8");

% Data Frame Packet
framehead = uint8([170,170,170,170,170,170,170,170]);% 配置包单帧内容初始化
Data_Line_Buf = zeros(1, image_w * 2,"uint8");


% Set Connection 
Client_1 = tcpclient("192.168.1.10",10000,"Timeout",20,"ConnectTimeout",30);

for j = 1:Set_ConfigPacket_Length 
    for i = 1:ConfigPacket_Length 
        if i <= 8
            ConfigPacket_Content (i) = 85;% Frame Header
        elseif i == 9
            ConfigPacket_Content (i) = j - 1;% addr
        elseif i == 10
            ConfigPacket_Content (i) = 0;% R/W
        elseif i == 11
            ConfigPacket_Content (i) = uint8(bitand((bitshift(Set_ConfigPacket_Content(j),-24)),255));
        elseif i == 12
            ConfigPacket_Content (i) = uint8(bitand((bitshift(Set_ConfigPacket_Content(j),-16)),255));
        elseif i == 13
            ConfigPacket_Content (i) = uint8(bitand((bitshift(Set_ConfigPacket_Content(j),-8)),255));
        elseif i == 14
            ConfigPacket_Content (i) = uint8(bitand((bitshift(Set_ConfigPacket_Content(j),0)),255));
        end
    end  
    % s is a tcp/ip object
    write(Client_1,ConfigPacket_Content)
    pause(0.0001)
    Readback_ConfigPacket(j, 1:end) = read(Client_1, ConfigPacket_Length, "uint8");
end



pause(0.0001);
write(Client_1,framehead);
pause(0.0001);
for n = 1:image_h
    for m = 1:image_w
        Data_Line_Buf(2 * m -1) = 0;
        if n < image_h/4
            Data_Line_Buf(2 * m) = 64;
        elseif n < image_h/2
            Data_Line_Buf(2 * m) = 128;
        elseif n < image_h/2 + image_h/4
            Data_Line_Buf(2 * m) = 192;
        else
            Data_Line_Buf(2 * m) = 255;
        end
    end
    write(Client_1,Data_Line_Buf)
    pause(0.000001);
end
readreq = read(Client_1, 8, "uint8");

clear Client_1;
View Code

2.通过C建立的上位机并不是我自己写的,这导致了对我完全黑盒的同时也产生了很多问题,例如粘包;

3.粘包问题我暂时是无法解决的,我打算采取的手段是:更换UDP作为发送媒介并且重新编写自己的上位机(当然也要参考大佬们);

项目展示:

通过上位机配置图像尺寸并发送指定图像完成指定图像传输到FPGA中再输出到HDMI显示;

 

 那条线是因为屏幕自身的问题,不是我代码的问题,啥也不干也有线的。

 

标签:Set,FPGA,上位,image,ConfigPacket,PC,Length,TCP,170
From: https://www.cnblogs.com/VerweileDoch/p/18026278

相关文章

  • qtcpsocket连接状态
      QTcpSocketsocket;//连接到远程主机socket.connectToHost("remoteHost",1234);//获取连接状态QAbstractSocket::SocketStatesocketState=socket.state();//根据连接状态进行相应处理if(socketState==QAbstractSocket::UnconnectedState){//未连......
  • [转]基于前端技术栈的PC跨平台桌面应用开发技术Electron简介及快速入门
    原文地址:Electron简介及快速入门-知乎大江东去:基于EA的软件工程创新理论与最佳实践第四章:桌面应用系统开发基础及入门第四节:Electron简介及快速入门一、Electron基本介绍官网地址:https://www.electronjs.org/Electron是一个由OpenJS基金会维护的开源项目,也是一个活跃的......
  • 记录一次grpc打包的坑
    GRPC打包的坑今天做的项目需要用到grpc,然后需要打jar包进行引用,打包的时候却失败了报了protocdidnotexitcleanly.Reviewoutputformoreinformation.--grpc-java_out:protoc-gen-grpc-java:Thesystemcannotfindthepathspecified.的相关错误很明显就是路径的问......
  • 2022 CCPC湖北省赛
    2022CCPC湖北省赛​ 这场打的怎么说,很难受。过年来与几个亲戚家的孩子见了面,被灌了不少白酒,没感觉什么酱香有啥好喝的,脑子倒是快成浆糊了。怒了,加训。题解里签到题的做法会写的简单点,这个[每日一棵splay](2022HubeiProvincialCollegiateProgrammingContest题解ABFJK......
  • IOT-OPC UA Client C# 实现方式->账号密码形式
    本文只要记录OPCUA方式读取PLC数据,默认opcserver已经配置成功;一、外部引用opcuahelperusingOpc.Ua;usingOpcUaHelper;二、源码如下;>点击查看代码usingOpc.Ua;usingOpcUaHelper;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSyst......
  • KU060板卡设计方案:636-基于FMC的KU060高性能 PCIe 载板 AI加速计算卡
    基于FMC的KintexXCKU060高性能PCIe载板 一、板卡概述   板卡主控芯片采用Xilinx公司的KintexUltraScale系列FPGAXCKU060-2FFVA1156。板载2组64bit的DDR4SDRAM,每组容量2GB,可稳定运行在2400MT/s。支持PCIEGen3x8模式及一路FMCHPC接口。同时可提供Windows,Linux......
  • SDNU_ACM_ICPC_2024_Winter_Practice_1st 赛后
    A:题目给出t个n,对每个n,令n=x+y+z,x|n,y|n,z|n,输出最大的xyz的值。解法打表找规律#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;intmain(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);intt;cin>>t;while(t--){......
  • PC应用程序自动化(python)
    个人向笔记。看的是BV14Y4y1z7z6这个视频。假期感兴趣看了一点点,感觉和我的日常工作匹配度不太高,所以先记录到这里,后面再补充。 PC自动化--pywinauto0、前置0.1是个后端的访问。application:作用范围是一个进程; desktop:作用范围可以跨进程。 0.2程序检测辅助工具 ......
  • 基于FPGA的图像Robert变换实现,包括tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览 fpga的结果导入到matlab显示: 2.算法运行软件版本vivado2019.2 matlab2022a 3.算法理论概述       随着数字图像处理技术的不断发展,边缘检测作为图像处理的基本操作,其在机器视觉、自动驾驶、医学影像分析等领域的应用日益广泛。Rober......
  • PCRec论文阅读笔记
    Abstract联合训练和测特征会影响目标域的预测,因为学习的嵌入被包含偏差信息的源域所主导。于是我们提出了异构跨域推荐的预训练和微调图。我们设计了一个新的跨域推荐的预训练图神经网络(PCRec),它采用了一个图编码器的对比自监督预训练,然后我们转移预先训练好的图编码器来初始化目......