def run(): #создаем трансляцию с камеры (тип потока h264/mjpeg, разрешение, частота кадров, хост куда шлем, функция обрабтчик кадров) rpiCamStreamer = rpicam.RPiCamStreamer(FORMAT, RESOLUTION, FRAMERATE, (IP, RTP_PORT), onFrameCallback) #robotCamStreamer.setFlip(False, True) #отражаем кадр (вертикальное отражение, горизонтальное отражение) rpiCamStreamer.setRotation(180) #поворачиваем кадр на 180 град, доступные значения 90, 180, 270 rpiCamStreamer.start() #запускаем трансляцию #поток обработки кадров frameHandlerThread = FrameHandlerThread(rpiCamStreamer) frameHandlerThread.start() #запускаем обработку try: while True: print ('CPU temp: %.2f°C. CPU use: %.2f%%' % (rpicam.getCPUtemperature(), psutil.cpu_percent())) time.sleep(1) except (KeyboardInterrupt, SystemExit): print('Ctrl+C pressed') #останавливаем обработку кадров frameHandlerThread.stop() #останов трансляции c камеры rpiCamStreamer.stop() rpiCamStreamer.close() print('End program')
def run(self): print('SK_DisplayStatus started') # gpio = RPiPWM.Gpio() # gpio.ButtonAddEvent(self.ButtonEvent) # создаем объект для работы с дисплеем (еще возможные варианты - 128_32 и 96_16 - размеры дисплеев в пикселях) disp = RPiPWM.SSD1306_128_64() disp.Begin() # запускаем дисплей disp.Clear() # очищаем буффер изображения disp.Display() # выводим пустую картинку на дисплей width = disp.width # получаем высоту и ширину дисплея height = disp.height image = Image.new( '1', (width, height )) # создаем изображение из библиотеки PIL для вывода на экран draw = ImageDraw.Draw(image) # создаем объект, которым будем рисовать top = -2 # сдвигаем текст вверх на 2 пикселя x = 0 # сдвигаем весь текст к левому краю font = ImageFont.load_default() # загружаем стандартный шрифт while not self.stopped.wait(self.interval): self.cpuTemp = rpicam.getCPUtemperature() self.cpuPercent = psutil.cpu_percent() self.voltage = self.adc.GetVoltageFiltered() #print ('CPU temp: %.2f°C. CPU use: %.2f%% .Battery: %.2fV' % ( #self.cpuTemp, self.cpuPercent, self.voltage)) draw.rectangle((0, 0, width, height), outline=0, fill=0) # очищаем дисплей if self.number_disp: draw.text((x, top), "Screen: 1 / 2", font=font, fill=255) draw.text((x, top + 8), "Battery: " + str(self.voltage) + " V", font=font, fill=255) # высота строки - 8 пикселей draw.text((x, top + 16), "CPU Temp: " + str(self.cpuTemp) + " °C", font=font, fill=255) draw.text((x, top + 24), "CPU Percent: " + str(self.cpuPercent) + " %", font=font, fill=255) draw.text((x, top + 32), "...", font=font, fill=255) draw.text((x, top + 40), "...", font=font, fill=255) draw.text((x, top + 48), "...", font=font, fill=255) else: draw.text((x, top), "Screen: 2 / 2", font=font, fill=255) disp.Image(image) disp.Display()
#создаем трансляцию с камеры (тип потока h264/mjpeg, разрешение, частота кадров, хост куда шлем, функция обрабтчик кадров) rpiCamStreamer = rpicam.RPiCamStreamer(FORMAT, RESOLUTION, FRAMERATE, (IP, RTP_PORT), onFrameCallback) #robotCamStreamer.setFlip(False, True) #отражаем кадр (вертикальное отражение, горизонтальное отражение) rpiCamStreamer.setRotation( 180) #поворачиваем кадр на 180 град, доступные значения 90, 180, 270 rpiCamStreamer.start() #запускаем трансляцию #поток обработки кадров frameHandlerThread = FrameHandlerThread(rpiCamStreamer) frameHandlerThread.start() #запускаем обработку #главный цикл программы try: while True: print('CPU temp: %.2f°C. CPU use: %.2f%%' % (rpicam.getCPUtemperature(), psutil.cpu_percent())) time.sleep(1) except (KeyboardInterrupt, SystemExit): print('Ctrl+C pressed') #останавливаем обработку кадров frameHandlerThread.stop() #останов трансляции c камеры rpiCamStreamer.stop() rpiCamStreamer.close() print('End program')
# Отрисовываем на картинке черный прямоугольник, тем самым её очищая draw.rectangle((0, 0, self._disp.width, self._disp.height), outline=0, fill=0) #Отрисовываем строчки текста с текущими значениями напряжения, сылы тока и мощности draw.text((0, 0), "State: %d" % frameHandlerThread.state, font=font, fill=255) draw.text((0, 10), "Voltage: %.2fV" % self._ina.voltage(), font=font, fill=255) draw.text((0, 20), "CPU temp: %.2f°C" % rpicam.getCPUtemperature(), font=font, fill=255) draw.text((0, 30), "CPU use: %.2f%%" % psutil.cpu_percent(), font=font, fill=255) time.sleep(1) except (KeyboardInterrupt, SystemExit): print('Ctrl+C pressed') #останавливаем поток отправки онлайн сообщений в контроллер EduBot robot.Release() #останавливаем обработку кадров frameHandlerThread.stop()
def getTempVoltage(self): temp = rpicam.getCPUtemperature() voltage = adc.GetVoltageFiltered() res = [temp, voltage] return res
#создаем трансляцию с камеры (тип потока h264/mjpeg, разрешение, частота кадров, функция обрабтчик кадров) rpiCamStreamer = rpicam.RPiCamStreamer(FORMAT, RESOLUTION, FRAMERATE, onFrameCallback) #задаем порт и хост куда шлем видео rpiCamStreamer.setPort(RTP_PORT) rpiCamStreamer.setHost(IP) #robotCamStreamer.setFlip(False, True) #отражаем кадр (вертикальное отражение, горизонтальное отражение) rpiCamStreamer.setRotation(180) #поворачиваем кадр на 180 град, доступные значения 90, 180, 270 rpiCamStreamer.start() #запускаем трансляцию #поток обработки кадров frameHandlerThread = FrameHandlerThread(rpiCamStreamer) frameHandlerThread.start() #запускаем обработку #главный цикл программы try: while True: print ('CPU temp: %.2f°C. CPU use: %.2f%%' % (rpicam.getCPUtemperature(), psutil.cpu_percent())) time.sleep(1) except (KeyboardInterrupt, SystemExit): print('Ctrl+C pressed') #останавливаем обработку кадров frameHandlerThread.stop() #останов трансляции c камеры rpiCamStreamer.stop() rpiCamStreamer.close() print('End program')