更新SANT的摄像头,支持usb获取,修复文本清屏刷新问题

This commit is contained in:
dahanzimin
2025-06-17 19:59:18 +08:00
parent 05913fb01a
commit 5ded40ed21
3 changed files with 27 additions and 6 deletions

View File

@@ -417,7 +417,6 @@ class FrameBuffer_Uincode(FrameBuffer_Base):
if sync: self.fill(bg_color, sync=False)
self.set_buffer(data, sync)
else:
yy = y
if size is None:
font_len, font_buffer = self._take_buffer(str(data), space, 1)
size = min((self.width // font_len) if font_len > 0 else 1, self.height // self._font.height)
@@ -425,11 +424,7 @@ class FrameBuffer_Uincode(FrameBuffer_Base):
font_len, font_buffer = self._take_buffer(str(data), space, size)
x = (self.width - font_len + space) // 2 if center else x
y = (self.height - self._font.height * size) // 2 if y is None else y
if sync:
if yy is None:
self.fill(bg_color, sync=False)
else:
self.fill_rect(x - 1, y - 1, font_len + 2, font_buffer[0][1][1] * size + 2, bg_color, sync=False)
if sync: self.fill(bg_color, sync=False)
for buffer in font_buffer: #Display character
self.bitmap(buffer, x, y, size, bold, color)
x = buffer[1][0] * size + x + space

View File

@@ -11,6 +11,7 @@ import base64
from sensor import *
from machine import SoftI2C, Pin
from mixgo_sant import onboard_bot
from esp_usb import CAM
class GC032A(Camera):
def __init__(self, framesize=LCD, hmirror=None, frame=1):
@@ -43,3 +44,26 @@ class GC032A(Camera):
return _data
else:
return super().snapshot(path, quality=50)
class UVC(CAM):
def __init__(self, framesize=QVGA):
super().__init__(framesize)
def deinit(self):
super().deinit()
def display(self, show=True):
if show:
super().display()
else:
super().display_stop()
def snapshot(self, path=None, formats=0, quality=50):
if path is None:
_data = super().snapshot(formats=formats, quality=quality)
if formats >= 2:
return b'data:image/jpg;base64,' + base64.b64encode(_data)
else:
return _data
else:
return super().snapshot(path, quality=50)

View File

@@ -10,6 +10,8 @@ from tftlcd import LCD15
class ST7789(uframebuf.FrameBuffer_Uincode):
def __init__(self, width=240, height=240, reset=None, backlight=None, direction=1, font_address=0x700000):
self.display = LCD15(portrait=direction)
self.display.deinit()
if reset is not None:
reset(0, 50)
reset(1, 100)