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.
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.
stwórz sobie ramkę danych z tego i już
co to jest ta ramka moge o fragment kodu?
Misiekd napisał(a)
stwórz sobie ramkę danych z tego i już
moze inaczej.
jak przekonwertować liczbę w postaci string na liczbe w postaci bajtowej jednocześnie znając ile zajmuje bajtów???
jak przekonwertować liczbę w postaci string na liczbe w postaci bajtowej jednocześnie znając ile zajmuje bajtów???
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ć
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?
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;
Delphi: Typy całkowite (właściwie to stałoprzecinkowe)
Delphi: Typy rzeczywiste (właściwie to zmiennoprzecinkowe)