wysyłanie przez comport na RS232

0

witam
mam taki problem.
chcĘ wysłać zawartość edit1 przez rs232 za pomoca comportu, dodaje ze edit1 jest zmienna typu string i jego długość zmienia sie.
wysyłanie to musi odbywać sie w określonej ustalonej liczbie bajtów mimo iż edit sie zmienia bo chcĘ to odbierac przez mikrokontroler.
np.
w edit1 znajduje sie wartość -12,2 czasem 2,3 widać ze jest rózna liczba znaków.
teraz jak to przerobic zeby wysłać bajtowo poprzez polecenie comport.write(dana,liczba bajtów) na rs232?
nie wiem czy trzeba edita rozbijać na ciag znaków i jakos pojedynczo wysyłac?. Ale nie wiem jak stringa na byte konwertowc.
pomocy.

0

A nie możesz zmienić tego na Single i wysłać te 4 bajty jako zmiennoprzecinkowe? Jeśli uC nie obsługuje IEEE754, to możesz string obciąć powiedzmy do 8 znaków i w postaci array[0..7] of char wysłać do układu.

0

stwórz sobie ramkę danych z tego i już

0

co to jest ta ramka moge o fragment kodu?

Misiekd napisał(a)

stwórz sobie ramkę danych z tego i już

0

moze inaczej.
jak przekonwertować liczbę w postaci string na liczbe w postaci bajtowej jednocześnie znając ile zajmuje bajtów???

0

jak przekonwertować liczbę w postaci string na liczbe w postaci bajtowej jednocześnie znając ile zajmuje bajtów???

0

ustalasz znak A i B, który na pewno nie wystąpi w danych, dobrze, żeby były rózne i wysyłając na port najpierw wysyłasz znak A potem dane (ew wcześniej długość danych) i na końcu znak B. w mikrokontrolerze jak dostaniesz A to wiesz, że to nowa dana i odczytujesz aż do znaku B - wiesz, że to koniec danych. Popatrz sobie na znaki o kodach < 32 - powinno Ci to coś podpowiedzieć

0
Misiekd napisał(a)

ustalasz znak A i B, który na pewno nie wystąpi w danych, dobrze, żeby były rózne i wysyłając na port najpierw wysyłasz znak A potem dane (ew wcześniej długość danych) i na końcu znak B. w mikrokontrolerze jak dostaniesz A to wiesz, że to nowa dana i odczytujesz aż do znaku B - wiesz, że to koniec danych. Popatrz sobie na znaki o kodach < 32 - powinno Ci to coś podpowiedzieć

hmm ten sposob nie działa coś jest z komunikacją chyba bo czyta tylko 2piersze cyfry oraz ostatnia.
jak zamienic ta liczbe ba byte?

0

byte - 1 bajt
word - 2 bajty
single -4 bajty

==================

wczytujesz normalnie z edita wartosc do zmiennej
(uzywajac odpowiednio StrToInt, StrToFloat co tam sobie chcesz)
i wysylasz zmienna

var x: single;
begin
x := StrToFloat(edit1.text);
comport.write(x,sizeof(x)); 
end;
0

Delphi: Typy całkowite (właściwie to stałoprzecinkowe)
Delphi: Typy rzeczywiste (właściwie to zmiennoprzecinkowe)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0