Toon posts:

[C++] qextserialport garbage na openen poort

Pagina: 1
Acties:

Onderwerpen


  • LauPro
  • Registratie: augustus 2001
  • Laatst online: 15:33

LauPro

Prof Mierenneuke®

Topicstarter
Voor een applicatie gebruik ik qextserialport in combinatie met de QT GUI. Het is een vrij simpele applicatie:
C++:
1
2
3
4
5
6
7
port1 = new QextSerialPort("COM1", QextSerialPort::EventDriven);
port1->setBaudRate(BAUD9600);
port1->setFlowControl(FLOW_OFF);
port1->setParity(PAR_NONE);
port1->setDataBits(DATA_8);
port1->setStopBits(STOP_1);
port1->open(QIODevice::ReadWrite);
Het apparaat dat aan deze compoort zit geeft periodiek data door. Welke afgehandeld wordt door dit slot:
C++:
1
2
3
4
5
6
7
8
9
10
void MainWindow::receive() {
    char data[1024];
    QTextStream out(stdout);

    out << "data received: ";
    int bytesRead = port1->read(data, 1024);
    data[bytesRead] = '\0';

    buf1.append(data);
}
Vervolgens ga ik dan met buf1 aan de slag met een aantal bewerkingen.

Op het moment dat ik de comport eerst test met Hyperterminal dan leest de applicatie de data goed in. Is de computer gereboot, en ik open eerst de applicatie dan krijg ik alleen maar garbage. Als ik de applicatie dan sluit en Hyperterminal open dan werkt de applicatie daarna weer goed.

Ik heb het gevoel dat Hyperterminal een initiatiesequentie uitvoert welke ervoor zorgt dat de poort leesbaar is.

Iemand enig idee? De settings staan verder goed, geen flow control etc (zo staat het ook een HT).

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


  • MSalters
  • Registratie: juni 2001
  • Laatst online: 14-09 11:08
De poort is ongetwijfeld direct leesbaar. Ik vermoed alleen dat de andere kant een initialisatiesequence verstuurt. Jij interpreteert die als garbage, maar dat is natuurlijk niet het geval als HyperTerm 't gewoon snapt.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • farlane
  • Registratie: maart 2000
  • Laatst online: 12-09 12:10
Heeft het apparaat aan de andere kant toevallig iets van een autobaudrate oid? In dat geval kan het versturen van wat bogus data ervoor zorgen dat de andere kant op de goede baudrate gaat zitten.

Kun je controleren of er parity/framing errors zijn in je code? Kun je met een scope checken wat er daadwerkelijk over de lijn gaat?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • LauPro
  • Registratie: augustus 2001
  • Laatst online: 15:33

LauPro

Prof Mierenneuke®

Topicstarter
Volgens mij is het geen initialisatiesequentie. Het is namelijk zo dat er garbage binnen blijft komen als het apparaat data stuurt. Ik heb eerder het idee dat er een pariteit oid verkeerd staat. Ik gebruik echter exact dezelfde instellingen als in HT.

Ik heb geen scoop om dit te meten, wel een apparaat om mee te kijken op de lijn. Dat kan ik eens proberen, ik geloof echter wel dat er data komt, maar er zit iets met die instellingen.

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


  • farlane
  • Registratie: maart 2000
  • Laatst online: 12-09 12:10
LauPro schreef op maandag 04 oktober 2010 @ 18:10:
Ik heb geen scoop om dit te meten, wel een apparaat om mee te kijken op de lijn. Dat kan ik eens proberen, ik geloof echter wel dat er data komt, maar er zit iets met die instellingen.
Dat er data komt geloof ik ook wel maar met een scope kun je tenminste zien of het ook goede data is. Een alternatief is om eens te kijken met portmon wat wat nou precies binnenkomt.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Lone Gunman
  • Registratie: juni 1999
  • Niet online
Misschien heb je hier iets aan (patch voor een bug mbt het aanpassen van de baudrate).
https://code.google.com/p...rt/issues/detail?id=73#c1

Experience has taught me that interest begets expectation, and expectation begets disappointment, so the key to avoiding disappointment is to avoid interest.

Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee