Как связать файл python с мобильным приложением (python и kivymd) - PullRequest
0 голосов
/ 04 мая 2020

Я работаю над проектом, создаю мобильное приложение с python и kivymd, у меня есть файл (scanner_barcode.py), функция этого файла - открыть мою веб-камеру и отсканировать штрих-код продукта. с другой стороны, у меня есть мобильное приложение с kivymd, я хочу связать этот scanner_barcode.py с мобильным приложением, любая помощь ??

это: scanner_barcode.py

import argparse
import imutils
import time
import cv2
from threading import Thread
import cv2


class WebcamVideoStream:
    def __init__(self, src=0, name="WebcamVideoStream"):
        self.stream = cv2.VideoCapture(src)
        (self.grabbed, self.frame) = self.stream.read()
        self.name = name
        self.stopped = False
    def start(self):
        t = Thread(target=self.update, name=self.name, args=())
        t.daemon = True
        t.start()
        return self

    def update(self):
        while True:
            if self.stopped:
                return
            (self.grabbed, self.frame) = self.stream.read()
    def read(self):
        return self.frame

class VideoStream:
    def __init__(self, src=0, usePiCamera=False, resolution=(320, 240),
        framerate=32, **kwargs):
        if usePiCamera:
            from .pivideostream import PiVideoStream
            self.stream = PiVideoStream(resolution=resolution,
                framerate=framerate, **kwargs)
        else:
            self.stream = WebcamVideoStream(src=src)

    def start(self):
        return self.stream.start()
class scaner:
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
    def scanner(self):
        frequency = 2500  
        duration = 60
        ap = argparse.ArgumentParser()
        ap.add_argument(
            "-o", 
            "--output", 
            type=str, 
            default="barcodesData.csv",
            help="path to output CSV file "
        )
        frequency = 2500  # Set Frequency To 2500 Hertz
        duration = 60  # Set Duration To 1000 ms == 1 second


ap = argparse.ArgumentParser()
ap.add_argument(
    "-o", 
    "--output", 
    type=str, 
    default="barcodesData.csv",
    help="path to output CSV file "
)
args = vars(ap.parse_args())


print("Starting webcam")

vs = VideoStream(src=0).start()
time.sleep(2.0)
csvWrite = open(args["output"], "w")
found = set()
while True:
    frameData = vs.read()
    frameData = imutils.resize(frameData, width=600)
    barcodes = pyzbar.decode(frameData)
    for barcode in barcodes:
        (x, y, width, height) = barcode.rect
        cv2.rectangle(frameData, (x, y), (x + width, y + height), (0, 0, 255), 2)
        barcodeData = barcode.data.decode("utf-8")
        barcodeType = barcode.type
        textData = "{} ({})".format(barcodeData, barcodeType)

        cv2.putText(
            frameData,
            textData,
            (x, y - 10),
            cv2.FONT_HERSHEY_SIMPLEX,
            0.5,
            (0, 0, 255),
            2
        )
        print("barCode is %s" %textData)


    cv2.imshow("Barcode Scanner", frameData)
    key = cv2.waitKey(1) & 0xFF
    if key == ord("e"):
        break 

и файл main.py моего приложения

from kivy.lang import Builder
from baseclass.login import Login
from mysql.connector import Error
from baseclass.start import Start
from kivy.lang import Builder  
from kivy.uix.screenmanager import Screen
from kivy.utils import get_color_from_hex
from spin_load import ProgressSpinner
from kivymd.color_definitions import colors
from kivy.uix.recycleview import RecycleView
from kivy.core.window import Window
from kivy.uix.recycleview import RecycleView
import mysql.connector
import re
from kivymd.uix.menu import MDDropdownMenu
from kivy.properties import OptionProperty
from kivy.properties import ObjectProperty
from kivymd.uix.bottomsheet import MDListBottomSheet



Window.size = (360, 600)
class Codebarre(Screen):
    def back_to_scanner(self):
        self.manager.current = 'scanner'

class Compte(Screen):
    def back_to_scanner(self):
        self.manager.current = 'scanner'

class Scanner(Screen):
    def go_to_search(self):
        self.manager.current = 'search'

class Search(Screen):
    def go_to_scanner(self):
        self.manager.current = 'scanner'



class Connecter(Screen):
    pass

class Inscrire(Screen):
    pass
class Codebarre(Screen):
    pass
class Apropos(Screen):
    pass
class Search(Screen):
    pass
class Setting(Screen):
    def back_to_scanner(self):
        self.manager.current = 'scanner'


class MyApp(MDApp):
    def build(self):
        self.theme_cls.primary_palette = "DeepPurple"
        return Builder.load_file("pfe.kv")

MyApp().run()```
...