Пример #1
0
def test_radio(port):
    nexSerial = PySerialNex(port)
    nexSerial.init()

    nexPage = NexPage(nexSerial, "pg_dsb_chk_rad", pid=13)

    nexRadio0 = NexRadio(nexSerial, "r0", cid=8)
    nexRadio1 = NexRadio(nexSerial, "r1", cid=9)
    nexRadio2 = NexRadio(nexSerial, "r2", cid=10)

    nexPage.show()

    nexRadio0.value = False
    nexRadio1.value = False
    nexRadio2.value = False

    assert not nexRadio0.value

    time.sleep(1)

    nexRadio0.value = True

    assert nexRadio0.value

    time.sleep(1)

    nexRadio0.value = False

    assert not nexRadio0.value

    time.sleep(1)

    nexSerial.close()
Пример #2
0
def test_progressbar(port):
    nexSerial = PySerialNex(port)
    nexSerial.init()

    nexPage = NexPage(nexSerial, "pg_pbar", pid=6)

    nexProgressBar = NexProgressBar(nexSerial, "j0", cid=1)

    nexPage.show()

    time.sleep(1)

    nexProgressBar.backcolor = NamedColor.GRAY
    nexProgressBar.forecolor = NamedColor.GREEN
    nexProgressBar.value = 30

    with pytest.raises(Exception):
        nexProgressBar.value = 105  # should raise error because value must be in 0-100

    with pytest.raises(Exception):
        nexProgressBar.value = -1  # should raise error because value must be in 0-100

    time.sleep(1)

    nexSerial.close()
Пример #3
0
def test_slider(port):
    nexSerial = PySerialNex(port)
    nexSerial.init()

    nexPage = NexPage(nexSerial, "pg_slider", pid=11)

    nexSlider = NexSlider(nexSerial, "h0", cid=4)

    nexPage.show()

    time.sleep(0.1)

    nexSlider.value = 43691  # 0-65535

    time.sleep(1)

    # nexSlider.cursor.color = NamedColor.GRAY
    nexSlider.forecolor = NamedColor.GRAY

    time.sleep(1)

    w = 10
    nexSlider.cursor.width = w
    assert nexSlider.cursor.width == w

    time.sleep(1)

    h = 13
    nexSlider.cursor.height = h
    assert nexSlider.cursor.height == h

    time.sleep(1)

    nexSerial.close()
Пример #4
0
def test_button(port, delay):
    nexSerial = PySerialNex(port)
    nexSerial.init()

    nexPage = NexPage(nexSerial, "pg_but", pid=8)

    nexButtonPlus = NexButton(nexSerial, "b0", cid=1)
    nexNumber0 = NexNumber(nexSerial, "n0", cid=2)
    nexButtonMinus = NexButton(nexSerial, "b1", cid=3)
    nexButtonEnter = NexButton(nexSerial, "b2", cid=4)  # noqa: F841

    nexPage.show()

    nexButtonPlus.backcolor = NamedColor.GREEN
    nexButtonMinus.backcolor = NamedColor.RED

    # nexNumber0.value = value
    value = nexNumber0.value
    dt_start = datetime.datetime.utcnow()
    while True:
        time.sleep(0.2)
        new_value = nexNumber0.value
        if new_value != value:
            value = new_value
            print(value)
        if datetime.datetime.utcnow() - dt_start > datetime.timedelta(
                seconds=delay):
            break

    nexSerial.close()
Пример #5
0
def test_checkbox(port):
    nexSerial = PySerialNex(port)
    nexSerial.init()

    nexPage = NexPage(nexSerial, "pg_dsb_chk_rad", pid=13)

    nexCheckbox0 = NexCheckbox(nexSerial, "c0", cid=4)
    nexCheckbox1 = NexCheckbox(nexSerial, "c1", cid=5)
    nexCheckbox2 = NexCheckbox(nexSerial, "c2", cid=7)

    nexPage.show()

    nexCheckbox0.value = False
    nexCheckbox1.value = False
    nexCheckbox2.value = False

    assert not nexCheckbox0.value

    time.sleep(1)

    nexCheckbox0.value = True

    assert nexCheckbox0.value

    time.sleep(1)

    nexCheckbox0.value = False

    assert not nexCheckbox0.value

    time.sleep(1)

    nexSerial.close()
Пример #6
0
def test_qrcode(port):
    nexSerial = PySerialNex(port)
    nexSerial.init()

    nexPage = NexPage(nexSerial, "pg_qr", pid=9)

    nexQRcode = NexQRcode(nexSerial, "qr0", cid=1)
    nexText = NexText(nexSerial, "t1", cid=3)

    nexPage.show()

    time.sleep(1)

    text = "Hello"
    nexQRcode.text = text
    nexText.text = text

    time.sleep(2)

    # text = "https://github.com/py3-nextion/pynextion"
    text = "http://bit.ly/2QRZsuV"
    nexText.text = text
    # nexQRcode.textmaxlength = len(text)
    # nexQRcode.textmaxlength = 50
    # time.sleep(1)
    nexQRcode.text = text

    assert nexText.text == text
    assert nexQRcode.text == text

    nexSerial.close()
Пример #7
0
def test_gauge(port):
    nexSerial = PySerialNex(port)
    initialized = nexSerial.init()
    assert initialized

    nexPage = NexPage(nexSerial, "pg_gauge", pid=10)

    nexGauge = NexGauge(nexSerial, "z0", cid=3)

    nexPage.show()

    nexGauge.backcolor = NamedColor.WHITE
    nexGauge.forecolor = NamedColor.RED

    nexGauge.width = 3  # 0-5
    # nexGauge.pointer.width = 3  # 0-5

    # for angle in range(30, 360 + 30, 30)
    #     time.sleep(1)
    #     nexGauge.value = angle

    for angle in range(0, 360 + 6, 6):
        time.sleep(0.1)
        nexGauge.value = (angle + 90) % 360

    time.sleep(1)

    assert nexGauge.value == 90

    nexSerial.close()
Пример #8
0
def test_NexScrollText(port):
    nexSerial = PySerialNex(port)
    # nexSerial.write("page pg_scroll")

    nexPage = NexPage(nexSerial, "pg_scroll", pid=5)
    nexPage.show()

    nexScrollText = NexScrollText(nexSerial, "g0", pid=1)
    msg = "Hello Nextion!"
    nexScrollText.text = msg
    assert nexScrollText.text == msg
    time.sleep(10)

    nexSerial.close()
Пример #9
0
def test_number(port):
    nexSerial = PySerialNex(port)
    nexSerial.init()

    nexPage = NexPage(nexSerial, "pg_num", pid=7)

    nexNumber = NexNumber(nexSerial, "n0", cid=1)

    nexPage.show()

    time.sleep(1)
    nexNumber.value = 1
    time.sleep(1)
    n = 2
    nexNumber.value = n
    nexNumber.backcolor = NamedColor.RED
    nexNumber.forecolor = NamedColor.WHITE

    time.sleep(1)
    assert nexNumber.value == n
    time.sleep(1)
    nexNumber.value = 3
    nexNumber.backcolor = NamedColor.WHITE
    nexNumber.forecolor = sign_color(n)
    time.sleep(1)

    n = -2
    nexNumber.value = n
    nexNumber.forecolor = sign_color(n)
    time.sleep(1)
    assert nexNumber.value == n

    min_val, max_val = limits(True, 32)

    n = max_val
    nexNumber.value = n
    nexNumber.forecolor = sign_color(n)
    time.sleep(1)
    assert nexNumber.value == n

    n = min_val + 1  # display only "-" is n = min_val
    nexNumber.value = n
    nexNumber.forecolor = sign_color(n)
    time.sleep(1)
    assert nexNumber.value == n

    nexSerial.close()
Пример #10
0
def test_picture(port):
    nexSerial = PySerialNex(port)
    nexSerial.init()

    nexPage = NexPage(nexSerial, "pg_pic", pid=3)

    nexPicture = NexPicture(nexSerial, "p0", cid=1)

    nexPage.show()

    for i in range(1, 8):
        time.sleep(1)
        # nexPicture.picture = i
        nexPicture.picture = Picture(i)
        # assert nexPicture.picture == Picture(i)  # ToDo

    nexSerial.close()
Пример #11
0
def test_waveform(port, delay):
    nexSerial = PySerialNex(port)

    nexPage = NexPage(nexSerial, "pg_waveform", pid=12)

    nexWaveform = NexWaveform(nexSerial, "s0", cid=2)

    nexSerial.send("cls WHITE")
    nexPage.show()

    nexWaveform.grid.width = 20
    nexWaveform.grid.height = 20
    nexWaveform.grid.color = NamedColor.GRAY

    time.sleep(1)

    # send(nexSerial, "s0.pco0=65535")

    # nb_channels = len(nexWaveform.channels)
    # @test nb_channels == 4
    nb_channels = 4

    channel = nexWaveform.channels[2]  # 0, 1, 2, 3
    channel.color = NamedColor.RED

    # channel.append(123)  # values in 0:255 (add cid,chid,val)
    # channel.append(133)  # values in 0:255 (add)
    # channel.append(143)  # values in 0:255 (add)
    # channel.append(153)  # values in 0:255 (add)

    # channel.append([123, 133, 143, 153, 163, 173, 183])  # (addt)

    vals = [51 * x for x in range(1, 5)]
    dt_start = datetime.datetime.utcnow()
    while True:
        for ch in range(nb_channels):
            channel = nexWaveform.channels[ch]
            val = vals[ch]
            channel.append(val)
            vals[ch] = int(vals[ch] + 2 * random.uniform(-1, 1))
        if datetime.datetime.utcnow() - dt_start > datetime.timedelta(seconds=delay):
            break
        time.sleep(0.01)
Пример #12
0
def test_button(port, delay):
    nexSerial = PySerialNex(port)
    nexSerial.init()

    nexPage = NexPage(nexSerial, "pg_but", pid=8)
    nexButtonEnter = NexButton(nexSerial, "b2", cid=4)

    nexButtonEnter.callback = callback
    # button.when_pressed = callback_when_pressed
    # button.when_released = callback_when_released

    nexPage.show()

    dt_start = datetime.datetime.utcnow()
    while True:
        nexSerial.poll()
        if datetime.datetime.utcnow() - dt_start > datetime.timedelta(seconds=delay):
            break
        time.sleep(0.2)

    nexSerial.close()
Пример #13
0
def test_pages(port):
    nexserial = PySerialNex(port)
    nexpages = []
    pages_nb = 22
    for i in range(pages_nb):
        print(i)
        page = NexPage(nexserial, "page%d" % i, i)
        nexpages.append(page)

    for page in nexpages:
        print(page.show())
        time.sleep(0.5)

    page = nexpages[0]
    page.show()

    time.sleep(2)

    assert nexserial.current_page == page.pid

    assert nexpages[0].ishown()
    assert not nexpages[1].ishown()

    nexserial.close()
Пример #14
0
def test_page(port):
    nexserial = PySerialNex(port)
    nexserial.init()

    pages = ["page0", "page1"]
    assert len(pages) == 2

    pages = [
        "page0", "page1", "pg_text", "pg_pic", "pg_var", "pg_scroll",
        "pg_pbar", "pg_num", "pg_but", "pg_qr", "pg_gauge", "pg_slider",
        "pg_waveform", "pg_dsb_chk_rad", "pg_hotspot", "pg_crop", "pg_timer",
        "pg_num_kb", "keybdB", "pg_text_kb", "keybdC", "keydbA"
    ]
    assert len(pages) == 22

    nexpages = []
    for i, name in enumerate(pages):
        page = NexPage(nexserial, name, i)
        nexpages.append(page)

    for i, page in enumerate(nexpages):
        print(page.show())
        assert nexserial.current_page == i
        time.sleep(0.5)

    page = nexpages[0]
    page.show()

    time.sleep(2)

    assert nexserial.current_page == page.pid

    assert nexpages[0].ishown()
    assert not nexpages[1].ishown()

    nexserial.close()
Пример #15
0
def test_draw(port):
    nexSerial = PySerialNex(port)
    nexSerial.init()

    nexPage = NexPage(nexSerial, "page0", pid=0)
    nexPage.show()

    cls(nexSerial, DEFAULT_COLOUR)

    def print_several_lines(nexSerial, lcd_width=LCD_WIDTH, color1=NamedColor.WHITE, color2=NamedColor.BLACK):
        def swap(x, y):
            return y, x

        x, y = 0, 10
        w, h = lcd_width, 30
        font = Font(0)
        fontcolor = color1
        backcolor = color2
        xcenter = Alignment.Horizontal.CENTRE  # NONE/LEFT/CENTRE/RIGHT
        ycenter = Alignment.Vertical.CENTRE  # NONE/UP/CENTRE/DOWN
        sta = Background.SOLIDCOLOUR  # NONE/CROPIMAGE/SOLIDCOLOUR/IMAGE/NOBACKCOLOUR

        rows = [
            "Hello Python!",
            "",
            "This is Nextion",
            "",
            "I'm an intelligent display",
            "",
            "",
            "",
            "https://github.com/scls19fr",
            "/pynextion"
        ]
        for row in rows:
            print(nexSerial, row, x, y, w, h, font, fontcolor, backcolor, xcenter, ycenter, sta)
            xstr(nexSerial, row, x, y, w, h, font, fontcolor, backcolor, xcenter, ycenter, sta)
            y = y + h
            fontcolor, backcolor = swap(fontcolor, backcolor)

    def diagonal_line(nexSerial, lcd_width=LCD_WIDTH, lcd_height=LCD_HEIGHT):
        x1, y1 = 0, 0
        x2, y2 = lcd_width, lcd_height
        colour = NamedColor.BLUE
        line(nexSerial, x1, y1, x2, y2, colour)

    def circle_frame_fill(nexSerial, lcd_width=LCD_WIDTH, lcd_height=LCD_HEIGHT, delay=1):
        x = int(round(lcd_width / 2))
        y = int(round(lcd_height / 2))
        r = 100
        colour = NamedColor.BLUE
        circle(nexSerial, x, y, r, colour)
        time.sleep(delay)
        circle(nexSerial, x, y, r, colour, Background.SOLIDCOLOUR)

    def clear_screen_color_france(nexSerial, delay=1):
        cls(nexSerial, NamedColor.BLUE)
        time.sleep(delay)
        cls(nexSerial, NamedColor.WHITE)
        time.sleep(delay)
        cls(nexSerial, NamedColor.RED)

    def france_flag(nexSerial, lcd_width=LCD_WIDTH, lcd_height=LCD_HEIGHT):
        w, h = int(round(lcd_width / 3)), lcd_height
        x1, y1 = 0, 0
        y2 = h
        x2 = x1 + w
        colour = NamedColor.BLUE
        rectangle(nexSerial, x1, y1, x2, y2, colour, Background.SOLIDCOLOUR)
        x1 = x1 + 2 * w
        x2 = x1 + w
        colour = NamedColor.RED
        rectangle(nexSerial, x1, y1, x2, y2, colour, Background.SOLIDCOLOUR)

    def rectangle_frame_fill(nexSerial, lcd_width=LCD_WIDTH, lcd_height=LCD_HEIGHT):
        w, h = 120, 80
        x1 = int(round((lcd_width - w) / 2))
        y1 = int(round((lcd_height - h) / 2))
        x2 = x1 + w
        y2 = y1 + h
        colour = NamedColor.RED
        rectangle(nexSerial, x1, y1, x2, y2, colour)
        time.sleep(1)
        rectangle(nexSerial, x1, y1, x2, y2, colour, Background.SOLIDCOLOUR)

    def picture_example(nexSerial, lcd_width=LCD_WIDTH, lcd_height=LCD_HEIGHT, img_width=IMG_WIDTH, img_height=IMG_HEIGHT, delay=0.5):
        x = int(round((lcd_width - img_width) / 2))
        y = int(round((lcd_height - img_height) / 2))
        for picid in range(8):
            picture(nexSerial, x, y, Picture(picid))
            time.sleep(delay)

    cls(nexSerial)

    print_several_lines(nexSerial)
    time.sleep(2)

    cls(nexSerial, DEFAULT_COLOUR)
    diagonal_line(nexSerial)

    time.sleep(2)
    cls(nexSerial)

    circle_frame_fill(nexSerial)

    time.sleep(2)
    cls(nexSerial)

    clear_screen_color_france(nexSerial)

    time.sleep(2)
    cls(nexSerial)

    france_flag(nexSerial)

    time.sleep(2)
    cls(nexSerial)
    time.sleep(1)

    rectangle_frame_fill(nexSerial)

    time.sleep(2)
    cls(nexSerial)

    picture_example(nexSerial)

    nexSerial.close()
Пример #16
0
def test_text(port):
    nexSerial = PySerialNex(port)

    print("Init")
    nexSerial.init()

    print("Create objects")
    nexPage = NexPage(nexSerial, "pg_text", pid=2)

    # nexText = NexText(nexSerial, "t1", pid=2, cid=1)
    # nexText = NexText(nexSerial, "t1")
    nexText = NexText(nexSerial, "t1", cid=1)

    print("Reset")
    nexSerial.reset()

    time.sleep(1)

    nexPage.show()

    time.sleep(1)

    msg = "Hello"
    nexText.text = msg

    time.sleep(1)
    assert nexText.text == msg

    time.sleep(0.5)

    nexText.backcolor = NamedColor.BLUE
    nexText.text = "1"

    time.sleep(0.5)

    nexText.backcolor = NamedColor.WHITE
    nexText.text = "2"

    time.sleep(0.5)

    nexText.backcolor = NamedColor.RED
    nexText.text = "3"

    time.sleep(0.5)

    nexText.text = "Bye nexText"

    time.sleep(0.5)

    nexText.visible = False
    nexText.backcolor = NamedColor.WHITE

    time.sleep(2)

    nexText.visible = True

    time.sleep(0.5)

    nexText.alignment.horizontal = Alignment.Horizontal.RIGHT
    nexText.alignment.vertical = Alignment.Vertical.DOWN
    nexText.forecolor = NamedColor.BLUE

    # Change fontid from 0 to 1
    nexText.font = Font(1)

    # nexSerial.reset()
    # time.sleep(0.5)

    nexSerial.close()