• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Visual C++ - serial port

Object Storage Arubacloud
0 głosów
1,468 wizyt
pytanie zadane 26 maja 2015 w C i C++ przez Marcin Nowicjusz (210 p.)
Witam

Mama problem z komunikacją SerialPort ( Microsoft Visual Studio C++)

mianowicie otwieram port i wysyłam do niego ciąg znaków ok działa

także odbieram co na tym porcie się pojawia w odpowiedzi także działa ok

wysyłanie i odpytywanie wykonuje w pentli co 200 ms

jedyny problem jest taki że po upływie 3-4 minut program się automatycznie wyłącza

nie mam pojęciea dlaczego się tak dzieje

zwiększałem ReadBufferSize oraz WriteBufferSize i nic to nie dawało nadal program się wyłącza.

po wysłaniu na serialport:

this->serialport1->Write();

this->serialport1->ReadChar();

wysyłam :

this->serialport1->DiscardInBuffer();

this->serialport1->DiscardOutBuffer();

w celu czyszczenia buforów tak więc zakładam że przyczyna tego nie leży po tej stronie

Jeśli ktoś by mnie mógł nakierowac na to gdzie należy szukać przyczyny był bym wdzięczny.

Z góry wielkie dzięki za pomoc i pozdrawiam

2 odpowiedzi

0 głosów
odpowiedź 26 maja 2015 przez Bartek85 Mądrala (7,440 p.)
wklej kod... pomyslimy. ;)
0 głosów
odpowiedź 27 maja 2015 przez Marcin Nowicjusz (210 p.)
Witam

Wczoraj jeszcze siedziałem nad tym moim problemem i znalazłęm

w pętli while gdzie wysyłałem i odczytywałem port miałem na samym końcu zrobioną pętle For gdzie przepisywałem tablice_odczytaną znaków do tablicy tak zwanej old ma to służyć sprawdzaniu czy coś się zmieniło przy następnym odczytaniu portu

if tab_old != tab odczytana to .........

jeśli nie to zapytaj port jeszcze raz

Nie wiem do końca dlaczego ale tam pojawiał się problem

wywaliłem FOR i podałem na sztywno przepisywanie tablic

tab_old[0]=tab_odczytana[0];

tab_old[1]=tab_odczytana[1];

itd.

I to pomogło.
komentarz 27 maja 2015 przez Bartek85 Mądrala (7,440 p.)
Chyba masz złe podejście ;) lepiej być świadomym programista :) Poza tym Twoje rozwiązanie jest karkołomne.... jakbyś miał 1000 elementów, albo 10 tys. tez byś napisał 10 tys. linijek ? :)
komentarz 2 czerwca 2015 przez Marcin Nowicjusz (210 p.)
To może mi powiesz dlaczego pętla for mi wywałała program

najszybszym rozwiązaniem okazało się przypisywanie na sztywno 20 elementów

możliwe że gdybym miał tablicę 1000 elementowa to próbował bym znaleźć inne rozwiazanie, ale to jak dla mnie okazało się najlepsze.
komentarz 2 czerwca 2015 przez Bartek85 Mądrala (7,440 p.)
Wklej cały kod który powodował problem, to postaram sie pomóc.
komentarz 3 czerwca 2015 przez Marcin Nowicjusz (210 p.)
kod był taki

mam dwie tablice char

T1 i T2

T1 - tablica odczytu z Serial  [100];

T2 - jest to tablica zapisanych wyników z T1 [40];

sprawdzam

if (T1!=T2)

{

wywołaj funkcje .... oraz;

for (i=0; i<40; i++)

{

T2[i]=T1[i];

}

i to by było na tyle

jedynie czego się moge przyczepić to ile razy ma się wykonać pętla for

ponieważ odczytane wartości to nie 40 znaków tylko 18 tak więc pętla

przepisuje "puste" wartości pomiędzy tablicami. I możliwe że wtym przepisywaniu przepełniam jakiś bufor albo co.

Tak jak wspomniałem zrobiłem przepisywanie na sztywno 20 znaków do tablicy.

Nie wiem czy jest sens się zagłębiać może komus się przyda ta wiedza.

pozdrawiam.
komentarz 3 czerwca 2015 przez Bartek85 Mądrala (7,440 p.)
Ok, jeżeli nie chcesz poznać przyczyny problemu, to nie ma sprawy. Powodzenia w rozwoju programowania...

Pozdrawiam.
komentarz 7 czerwca 2015 przez Marcin Nowicjusz (210 p.)
Tak jak napisałem nie ma sensu dla 20 przepisać dukać gdzie jest problem

jeśli chcesz to wyżej opisałem tobie kod to jak chcesz to posiedź i wymyśl coś.

Ale proszę nie pisz tak jak ostatnie towje zdanie ponieważ nie jest to trochę na miejscu.

Pozdrawiam.

Podobne pytania

0 głosów
0 odpowiedzi 131 wizyt
pytanie zadane 9 kwietnia 2019 w Inne języki przez muzyk Użytkownik (940 p.)
0 głosów
1 odpowiedź 132 wizyt
pytanie zadane 17 marca 2019 w C i C++ przez muzyk Użytkownik (940 p.)
0 głosów
1 odpowiedź 195 wizyt

92,620 zapytań

141,474 odpowiedzi

319,813 komentarzy

62,004 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...