将PC画面实时传送至M5Stack-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2042|回复: 0

将PC画面实时传送至M5Stack

[复制链接]
发表于 2020-3-20 13:46 | 显示全部楼层 |阅读模式
本项目来源于lovyan03,源码及库地址ScreenShotSender,作者主要专注与图像处理领域,发布多个M5代码.以下示例将通过一个PC端的应用将画面无线传送到M5Stack屏幕进行实时显示,如果你有多个M5Stack可以完成屏幕拼接显示。Windows端的ScreenShotSender可以设定图像的宽度、高度、画质的各参数和JPEG化的范围,输入接收侧的IP地址进行连接后,Windows画面的一部分会显示在LCD上。如果有多个接收侧,可以通过Col/Row增加列数、行数来分割图像。可以用鼠标和键盘上的光标键移动抓取窗口。如果一边按Ctrl键一边操作光标键,则移动量变大。一边按Shift键一边操作光标键,可以调整宽度和高度。默认使用SmartConfig进行wifi配置,如果安装没有此app请手动输入SSID和PASSWORD 截屏2020-03-20 下午12.04.07.png IMG_3248.JPG


[mw_shl_code=arduino,true]#pragma GCC optimize ("O3")

#if defined(ARDUINO_M5Stack_Core_ESP32) || defined(ARDUINO_M5STACK_FIRE)

  #include <M5Stack.h>
  #include <M5StackUpdater.h>     // https://github.com/tobozo/M5Stack-SD-Updater/
  TFT_eSPI &Tft = M5.Lcd;

#elif defined(ARDUINO_M5Stick_C)

  #include <M5StickC.h>
  TFT_eSPI &Tft = M5.Lcd;

#else

  #include <TFT_eSPI.h>  // https://github.com/Bodmer/TFT_eSPI

  TFT_eSPI Tft;

#endif

#include <WiFi.h>
#include <esp_wifi.h>

#include "TCPReceiver.h"
#include "DMADrawer.h"

TCPReceiver recv;

const char* ssid     = "SSID";
const char* password = "PASSWORD";

void setup(void)
{
#if defined(ARDUINO_M5Stack_Core_ESP32) || defined(ARDUINO_M5STACK_FIRE) || defined(ARDUINO_M5Stick_C)
  M5.begin();
  #ifdef __M5STACKUPDATER_H
    if(digitalRead(BUTTON_A_PIN) == 0) {
       Serial.println("Will Load menu binary");
       updateFromFS(SD);
       ESP.restart();
    }
  #endif
#else
  Serial.begin(115200);
  Serial.flush();
  Tft.begin();

  #ifdef TFT_BL
    if (TFT_BL >= 0) {
      ledcAttachPin(TFT_BL, 1);
      ledcSetup(1, 12000, 8);
      ledcWrite(1, 128);
    }
  #endif
#endif

  Tft.setRotation(0);
  if (Tft.width() < Tft.height())
    Tft.setRotation(1);

  int width  = Tft.width();
  int height = Tft.height();
  if (width  > 320) width  = 320;
  if (height > 240) height = 240;

  Tft.setTextFont(2);

  Serial.println("WiFi begin.");
  Tft.println("WiFi begin.");

  WiFi.mode(WIFI_MODE_STA);
  WiFi.begin(ssid, password);


  for (int i = 0; WiFi.status() != WL_CONNECTED && i < 100; i++) { delay(100); }


  // https://itunes.apple.com/app/id1071176700
  // https://play.google.com/store/ap ... erclub.iot.esptouch
  if (WiFi.status() != WL_CONNECTED) {
    Serial.print("SmartConfig start.");
    Tft.println("SmartConfig start.");
    WiFi.mode(WIFI_MODE_APSTA);
    WiFi.beginSmartConfig();

    while (WiFi.status() != WL_CONNECTED) {
      delay(100);
    }
    WiFi.stopSmartConfig();
    WiFi.mode(WIFI_MODE_STA);
  }

  Serial.println(String("IP:") + WiFi.localIP().toString());
  Tft.println(WiFi.localIP().toString());

  setup_t s;
  Tft.getSetup(s);

  int spi_freq = SPI_FREQUENCY;

//  if (spi_freq > 40000000)  spi_freq = 40000000;

  recv.setup( s.r0_x_offset
            , s.r0_y_offset
            , width
            , height
            , spi_freq
            , TFT_MOSI
            , TFT_MISO
            , TFT_SCLK
            , TFT_CS
            , TFT_DC
            );
}

void loop(void)
{
  recv.loop();
}[/mw_shl_code]

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-27 17:10 , Processed in 0.075073 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表