更新SANT的摄像头,支持usb获取,修复文本清屏刷新问题
This commit is contained in:
@@ -417,7 +417,6 @@ class FrameBuffer_Uincode(FrameBuffer_Base):
|
|||||||
if sync: self.fill(bg_color, sync=False)
|
if sync: self.fill(bg_color, sync=False)
|
||||||
self.set_buffer(data, sync)
|
self.set_buffer(data, sync)
|
||||||
else:
|
else:
|
||||||
yy = y
|
|
||||||
if size is None:
|
if size is None:
|
||||||
font_len, font_buffer = self._take_buffer(str(data), space, 1)
|
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)
|
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)
|
font_len, font_buffer = self._take_buffer(str(data), space, size)
|
||||||
x = (self.width - font_len + space) // 2 if center else x
|
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
|
y = (self.height - self._font.height * size) // 2 if y is None else y
|
||||||
if sync:
|
if sync: self.fill(bg_color, sync=False)
|
||||||
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)
|
|
||||||
for buffer in font_buffer: #Display character
|
for buffer in font_buffer: #Display character
|
||||||
self.bitmap(buffer, x, y, size, bold, color)
|
self.bitmap(buffer, x, y, size, bold, color)
|
||||||
x = buffer[1][0] * size + x + space
|
x = buffer[1][0] * size + x + space
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import base64
|
|||||||
from sensor import *
|
from sensor import *
|
||||||
from machine import SoftI2C, Pin
|
from machine import SoftI2C, Pin
|
||||||
from mixgo_sant import onboard_bot
|
from mixgo_sant import onboard_bot
|
||||||
|
from esp_usb import CAM
|
||||||
|
|
||||||
class GC032A(Camera):
|
class GC032A(Camera):
|
||||||
def __init__(self, framesize=LCD, hmirror=None, frame=1):
|
def __init__(self, framesize=LCD, hmirror=None, frame=1):
|
||||||
@@ -43,3 +44,26 @@ class GC032A(Camera):
|
|||||||
return _data
|
return _data
|
||||||
else:
|
else:
|
||||||
return super().snapshot(path, quality=50)
|
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)
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ from tftlcd import LCD15
|
|||||||
|
|
||||||
class ST7789(uframebuf.FrameBuffer_Uincode):
|
class ST7789(uframebuf.FrameBuffer_Uincode):
|
||||||
def __init__(self, width=240, height=240, reset=None, backlight=None, direction=1, font_address=0x700000):
|
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:
|
if reset is not None:
|
||||||
reset(0, 50)
|
reset(0, 50)
|
||||||
reset(1, 100)
|
reset(1, 100)
|
||||||
|
|||||||
Reference in New Issue
Block a user