[solved] [gambas] odczyt danych z portu usb

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
lknetpl
Piegowaty Guziec
Piegowaty Guziec
Posty: 5
Rejestracja: 08 wrz 2011, 00:27
Wersja Ubuntu: 11.04
Środowisko graficzne: LXDE
Architektura: x86
Lokalizacja: Wrocław
Kontakt:

[solved] [gambas] odczyt danych z portu usb

Post autor: lknetpl »

Witam, piszę program do obsługi GPSa logera. Program właściwie radzi sobie z odczytem danych z urządzenia gps przez bluetooth. Jedna kiedy próbuję odczytać dane przez USB to niestety program nic nie pobiera. I tu jestem w miejscu bo nie wiem czy to mój błąd konfiguracji programu (może bardziej ustawień kontrolki obsługującej port) czy wina leży po stronie Lubuntu (a może mojego laptopa?). Przez konsolę poleceniem:

Kod: Zaznacz cały

cat /dev/ttyUSB0
dostaję cały ciąg danych nmea z urządzenia gps. Mój program niby łączy się z portem ale nie dostaje żadnych danych. Usunąłem nawet z kodu ograniczenia co do wielkości danych pobranych. Nie pomogło. Skończyły mi się pomysły bo odczyt z /dev/rfcomm0 działa doskonale nawet przez cat'a. Może ma ktoś pomysł którym mógłbym zaradzić na to.

Pozdrawiam.
Ostatnio zmieniony 12 wrz 2011, 01:42 przez lknetpl, łącznie zmieniany 1 raz.
Awatar użytkownika
mario_7
Administrator
Administrator
Posty: 8659
Rejestracja: 30 sie 2006, 13:11
Płeć: Mężczyzna
Wersja Ubuntu: 20.04
Środowisko graficzne: GNOME
Architektura: x86_64

Re: [gambas] odczyt danych z portu usb

Post autor: mario_7 »

Rzuć okiem tutaj:
http://www.mail-archive.com/gambas-user ... 06052.html
http://cobecoballes-gambas.blogspot.com ... using.html
A jeśli to nie pomoże, to będziesz musiał wkleić tutaj kawałek kodu odpowiedzialny za komunikację z USB, bo inaczej ciężko wskazać co zrobiłeś źle...
Awatar użytkownika
lknetpl
Piegowaty Guziec
Piegowaty Guziec
Posty: 5
Rejestracja: 08 wrz 2011, 00:27
Wersja Ubuntu: 11.04
Środowisko graficzne: LXDE
Architektura: x86
Lokalizacja: Wrocław
Kontakt:

Re: [gambas] odczyt danych z portu usb

Post autor: lknetpl »

Dzięki mario_7. Przejrzałem podane linki. Niestety nie pomogło. Fakt że już coś tam napływa z USB (zmieniałem ustawienia FlowControl kontrolki SerialPort i prędkość na 9600 może poprzednia 38400 była za duża) ale są to krzaki:
bez kontroli przepływu

Kod: Zaznacz cały

H??^H????????X^HH^B????J??JZG
|??H??^H^HJ????^X??^B????J??^XHZ^X^H
??????^HX?????HHXZX??JZ^H^R??
sprzętowa kontrola przepływu

Kod: Zaznacz cały

wn??z??r??<G??/??z>~?{??v/??z??zN:>??zg????r^_8v{.rF??
programowa kontrola

Kod: Zaznacz cały

^PH
H??^H??X????X^HH^B????Z????Z^XJ^B??JJ^H^X??^HX??J??????^HH??????^H^H^H??^B??????????JHX??X
JX
J??
Nie wiem co mam rozumieć z tych danych :pt36:

Kiedy łączę się przez Bluetooth tego problemu nie ma.
Poniżej kod funkcji łączącej się z portem:

Kod: Zaznacz cały

PUBLIC SUB button_polacz_Click()
  WITH SerialPort1
    .PortName = Trim(tbPortName.Text)
    .Speed = vb_baudrate.Value
  END WITH 
  IF SerialPort1.Status = 0 THEN 
    SerialPort1.Open
    Timer1.Delay = vb_timerdelay.Value
    Timer1.Start
    status_portu()
    Timer2.Start
    button_polacz.Enabled = FALSE
    Button1.Enabled = TRUE
  ENDIF 
  CATCH
  message.Error((Error.Code) & (Error.text) & (Error.Where))
END
I odbierająca dane:

Kod: Zaznacz cały

PUBLIC SUB odbierz_dane()

SLEEP 0.025
dane_port = ""
    READ #SerialPort1, dane_port, Lof(SerialPort1)
    PRINT dane_port
    IF dane_port <> "" AND Len(dane_port) > 300 AND Left$(dane_port, 1) = "$" THEN
      rozdziel_dane()
    ENDIF 

CATCH 
PRINT (Error.Code) & (Error.text) & (Error.Where)

END
Na ten moment brak mi pomysłów.
Zastosowałem również:
chown -R leszek.leszek /dev/ttyUSB0

-- 12 wrz 2011, o 01:41 --

Problem rozwiązany. Aż sam stukam się w głowę że wcześniej na to nie wpadłem. Błędnie podawałem wartość

Kod: Zaznacz cały

baudrate
(zbyt małą :shock: ). :clap:
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 12 gości