[C++] qextserialport garbage na openen poort

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 19-09 16:51

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!


Acties:
  • 0 Henk 'm!

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
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


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 15:26
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.


Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 19-09 16:51

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!


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 15:26
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.


Acties:
  • 0 Henk 'm!

  • 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