mrkulla
Üye
- Katılım
- 4 Ocak 2024
- Mesajlar
- 1
- Puanları
- 1
- Yaş
- 34
Selam, elimde Delta HMI 103BQ var ve buradan VESC 75/300 sürücüsündeki verileri UART üzerinden okumak istiyorum ancak buradaki işlemler tam olarak neler bilmediğim için tıkandım.
Daha öncesinde bu VESC den veri okumuştum ancak bir mikrodenetleyici ile yapmıştım bu işlemi, şimdi bu ekran üzerinden nasıl okuyabilirim yardımcı olabilir misiniz?
Önce VESC ye 6 bit yollamamız lazım
yollanması gereken bitler bunlar.
2 1 4 64 132 3
Daha sonrasında bana 59 byte lık bir ver paketi yolluyor bunun içinde voltaj bilgisi, amper bilgisi gibi bilgiler var.
Sorularım tam olarak şunlar:
1-) Bu bitleri VESC ye UART üzerinden nasıl yollayabilirim?
2-) Bana döndüğü verileri nasıl ekranda gösterebilirim?
Şuanda Delta HMI daki LUA üzerinden belirli bir aşamaya kadar geldim
Ancak işe yaramıyor.
Nasıl bir şey önerirsiniz?
Daha öncesinde bu VESC den veri okumuştum ancak bir mikrodenetleyici ile yapmıştım bu işlemi, şimdi bu ekran üzerinden nasıl okuyabilirim yardımcı olabilir misiniz?
Önce VESC ye 6 bit yollamamız lazım
yollanması gereken bitler bunlar.
2 1 4 64 132 3
Daha sonrasında bana 59 byte lık bir ver paketi yolluyor bunun içinde voltaj bilgisi, amper bilgisi gibi bilgiler var.
Sorularım tam olarak şunlar:
1-) Bu bitleri VESC ye UART üzerinden nasıl yollayabilirim?
2-) Bana döndüğü verileri nasıl ekranda gösterebilirim?
Şuanda Delta HMI daki LUA üzerinden belirli bir aşamaya kadar geldim
-- Add initial code here (run once)
com_num = 1 -- COM1
interface = "RS232"
databits = 8
parity = "EVEN"
stopbits = 1
baudrate = 19200
flowcontrol = "OFF"
ret = com.Open(com_num, interface, databits, parity, stopbits, baudrate, flowcontrol)
function equal (val_1,val_2)
if val_1 == val_2 then
return 1
else
return 0
end
end
while true do
len = 6 -- 6 bytes
timeout = 1000 -- ms
bytes_read, buffer = com.ReadChars(com_num, len, timeout)
if ret ~= 1 then
value_string_1 = "Bulunamadi"
mem.inter.WriteAscii(51,value_string_1,string.len(value_string_1))
else
value_string_2 = "Bulundu"
mem.inter.WriteAscii(51,value_string_2,string.len(value_string_2))
end
if bytes_read == 0 then
value_string_3 = "Okunamadi"
mem.inter.WriteAscii(30,value_string_3,string.len(value_string_3))
else if bytes_read ~= 0 then
value_string_4= "Okundu"
mem.inter.WriteAscii(30,value_string_4,string.len(value_string_4))
end
end
check_1 = mem.inter.Read(40)
check_2 = mem.inter.Read(41)
isEqual = equal(check_1, check_1)
if equal(check_1, check_2) == 1 then
mem.inter.Write(22, 1)
else if equal(check_1, check_1) == 1 then
mem.inter.Write(22, 0)
end
end
value_bool=true
value_integer=11
value_double = 13.6
value_string = "test123"
mem.inter.Read()
v1 = mem.inter.Read(21)
v2 = v1 + 1
mem.inter.Write(20,value_integer,string.len(value_integer))
mem.inter.Write(21, v2)
end
Ancak işe yaramıyor.
Nasıl bir şey önerirsiniz?