Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Odczytywanie danych z portu COM
zibiw




Typ: neutral
Postów: 9
Zarejestrowany: Jul 2004
Odczytywanie danych z portu COM

Potrzebuję z pewnego urządzenia wysyłąjącego na port com dane w odstępach 3 minutowych.Odczytać wartości: data i godzina , ciąg liczb typu single,ciąg liczb typu double
kontrolka mscomm odczytuje i wyświetla mi w textboxie jakąś Chinszczyznę (63znaki) ani jednej liczby
Parametry transmisji mam ustawione prawidłowo (chyba),a w obsłudze zdarzenia Com coś takiego:
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive
s = MSComm1.Input
text1.text = s
End Select
end sub


_____________________________________________
zbigniew w.

27-09-2004 21:05
Pokaż profil zibiw  Wyślij email do zibiw        7129445
kicaj




Typ: neutral
Postów: 271
Zarejestrowany: Aug 2003

a nie zastanowiles sie ze nie powinienes tego traktowac jako stringa tylko jako wartosc, np.
1000 w integer zajmuje 2Bajty a w Stringu 4 (bo cztery miejsca), i z tad te twoje chinskie znaczki

28-09-2004 00:29
Pokaż profil kicaj  Wyślij email do kicaj        3914568
zibiw




Typ: neutral
Postów: 9
Zarejestrowany: Jul 2004

Jeśli zmienną s deklaruje jako Integer lub jakikolwiek inny typ oprócz stringa to otrzymuje błąd (13) type mismatch.


_____________________________________________
zbigniew w.

28-09-2004 16:18
Pokaż profil zibiw  Wyślij email do zibiw        7129445
andrey
Łódź



Typ: neutral
Postów: 295
Zarejestrowany: Mar 2003

Witam,
A probowaleś zadeklarowć tą zmienną jako typu Variant?
Pozdrawiam
Andrzej


_____________________________________________
http://www.carbondesign.pl/ - rowery poziome, trójkołówce, handbike-i, tuning, akcesoria

28-09-2004 18:53
Pokaż profil andrey  Wyślij email do andrey   Odwiedź stronę andrey       3078613
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Komputer przecież nie wie, czy tam jest data, godzina, czy ciąg liczb. Dla niego jest to ciąg bajtów i taki ci zwraca. To, co widzisz, to właśnie ciąg bajtów. Do programisty należy zamiana tego na potrzebne mu dane.
A jak?
Przede wszystkim ustaw InputMode na binarny, bo otrzymujesz dane binarne, nie tekst. W takim przypadku metoda .Input zwróci ci tablicę (nie String!) zawierajacą kolejne bajty danych. Aby uzyskać z tego dane, proponuję użyć np. funkcji API: CopyMemory i kopiować dane do przygotowanego wcześniej bufora. No i modlić się, by maszynka operowała na tym samym typie danych, co VB i tak samo rozumiała Single, Double i inne dane...

[Post edytowany dnia 29-09-2004 13:44 przez marcin_an]


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

29-09-2004 13:44
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
zibiw




Typ: neutral
Postów: 9
Zarejestrowany: Jul 2004

Serdeczne dzięki cały mój problem rozwiązało MSComm1.InputMode = comInputModeBinary to co sugerował marcin_an.
Tak proste a tak trudne .Teraz to już dalej pójdzie
bezproblemowo.
Jeszcze raz dzięki.


_____________________________________________
zbigniew w.

29-09-2004 19:35
Pokaż profil zibiw  Wyślij email do zibiw        7129445
Wszystkich odpowiedzi: 5 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1