Nextion ekranda Sayı girdikten sonra MCU ya gönderme

Başlatan universitelim54, 23 Mayıs 2019, 22:59:46

universitelim54

Mrb. arkadaslar nextion ekran ve stm32f407 ile mikroc arm kullanarak bir proje hazırlıyorum . sorun şu ki ekrandan girdiğim sayıyı mcu ya gönderemiyorum. ekrandaki texbox tıklanır tıklanmaz printh n10.val komutu gercekleşiyor. henuz sayı yazmadan bu komut gerceklestıgı ıcın 0 degerini mcu ya gonderiyor. texbox tıklandıktan sonra sayısal numarator cıkıyor. onun enter tusuna bastıktan sonra ılgılı sayıyı mcu ya gondermesını istiyorum. konu ıle ılgılı bılgı sahıbı arkadaslardan yardım rıca edıyorum ... saygılar

Kabil ATICI

aslında çözüm karşında;

"textbox" "event" olaylarından "touch press event" veya "touch relase event" altındaki "printh n10.val" veya ilgili komutu sil veya kopyala bunu;
klavye  tuşlarından "enter" event olaylarından birinin altına yapıştır veya göndermek istediğin komutu yaz.

Burada klavye tuşlarını senin oluşturduğunu varsayıyorum.
ambar7

universitelim54

Klavye nextion editorundekini kullanıyorum yani global. boyle yaparsam her hangi bir yere deger girdiğimdede n0 degerini  mcu ya gönderecektir. Bu arada printh n10.val dediğimde numaratordeki deger degilde uartta farklı ve sabit bir sayı basıyor. sayı  değişsede aynı sayıyı basıyor.probelem 2 :(

forsa1975

#3
Sabit sayı dediğiniz hata mesajı olabilir mi? 

Bazı durumlarda hata mesajı veriyor ekran. Örnek; sayi isimli number penceresine   sati.val=15  diye bir komut gönderirseniz.

sati tanımlı değil diye bir hata mesaj kodu gönderir. 

universitelim54

n10.val=200 gibi sayi gonderdiğimde simulasyonda n10 komutu kabul ederek 200 degerını gosterıyor

Gediz1337

#5
Alıntı yapılan: universitelim54 - 23 Mayıs 2019, 23:21:04Klavye nextion editorundekini kullanıyorum yani global. boyle yaparsam her hangi bir yere deger girdiğimdede n0 degerini  mcu ya gönderecektir.

Buna çözüm olarak şöyle yapabilirsiniz; değer girilen number/text nesnesinin release eventinde global bir değişkene bir değer verin, örneğin değişkenin adı sendOnKybrdOK olsun ve release eventiyle bu değişkenin değeri 1 olarak güncellensin. Ardından klavye sayfasındaki OK tuşunun release eventine gelip en sonda bulunan page loadpageid.val satırının hemen üzerine aşağıdaki gibi bir ekleme yapın

if(MainPage.sendOnKybrdOK.val==1)
{
  prints MainPage.inputNumber1.val,3
  MainPage.sendOnKybrdOK.val=0
}

Burada tahmin edebileceğiniz üzere;
inputNumber1: ilgili nesnenin adı
sendOnKybrdOK: kontrol değişkeninin adı
MainPage: nesnenin bulunduğu sayfanın adı

Anlattığım düzenlemeyi içeren basit bir proje oluşturup hata ayıklama modunda test ettim ve çalıştığını gördüm. Yine de ihtiyacınız olursa proje dosyasının linki: https://send.firefox.com/download/bf09300cf96b4be5/#mekOzRsdO0f30XPMwg9xxQ


Alıntı yapılan: universitelim54 - 23 Mayıs 2019, 23:21:04Bu arada printh n10.val dediğimde numaratordeki deger degilde uartta farklı ve sabit bir sayı basıyor. sayı  değişsede aynı sayıyı basıyor.probelem 2 :(

Printh çıktısını ya da mümkünse proje dosyasını paylaşabilirseniz yardımcı olmaya çalışırım.

universitelim54

Gediz1337 ustam verdıgın bılgı super tşk ederim tecrubenı palastıgın ıcın . yanlız sayıları tersten verıyor .


Gediz1337

Alıntı yapılan: universitelim54 - 24 Mayıs 2019, 00:52:08Gediz1337 ustam verdıgın bılgı super tşk ederim tecrubenı palastıgın ıcın . yanlız sayıları tersten verıyor .



Rica ederim. Sayılar ters değil bu arada, gayet kitabına uygun. Komut listesinde print için yapılan açıklama şu şekilde:

Alıntı yapılan: Instruction Set - Nextion– numeric value sent in 4 byte 32-bit little endian order
value = byte1+byte2*256+byte3*65536+byte4*16777216

Endianness little olduğu için ilk byte least significant. Buna göre hesaplamalısın.

Bu arada, değer ASCII gitsin istiyorsan şöyle yapabilirsin;

Klavyenin olduğu sayfaya dönüşüm işleminde tampon olarak kullanmak üzere bir değişken ekle. Ben adına bufConvert dedim. Değişken türü String olarak belirlenmeli. txt_maxl de azami uzunluk, ihtiyacına kalmış.



OK tuşunun release eventine eklediğimiz kodu da aşağıdaki gibi düzenlersen print çıktısı resimdeki gibi olur.

if(MainPage.sendOnKybrdOK.val==1)
{
  covx MainPage.inputNumber1.val,bufConvert.txt,0,0
  print bufConvert.txt
  MainPage.sendOnKybrdOK.val=0
}




Proje dosyası

k0rkunc

hocam örnek projeleriniz indirilmiyor onurperinoglu@gmail.com dan iletirmisiniz rica etsm birde ben gönderme işini yaptıma am uzunluklar farklı olduğunda veri kayıyor onu nasıl çözerim rnekleriniz varsa lütfen benimle paylaşın