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