c ++ - QSerialPort fungerer ikke korrekt på Windows med en bestemt enhed

Indlæg af Hanne Mølgaard Plasc

Problem



Rediger : Jeg fandt problemet! Til alle med lignende problemer, her er hvad jeg gjorde:


Enheden, der benyttede Hardware Flowcontrol, som tilsyneladende ikke er noget problem med Linux, men på Windows, skal denne parameter indstilles eksplicit!


Problemet



Vi ønsker at læse enheder, der sporer omridset af et skuespil.
De bruger RS232 Port. Vi har implementeret kommunikationen med QSerialPort-klassen fra QT 5.7. Vores Test-Setup har i øjeblikket to spor fra diffenrent-leverandører og en Windows 7-pc. Kommunikationen med spor 1 virker korrekt, sporeren 2 sender ingen data til Windows PC.


Test



Til test har jeg skrevet et meget simpelt program, der blot udskriver alle bytes som ASCII-tegn, der modtages via serielporten. Det giver dig også mulighed for at indtaste tekst for at sende svar tilbage til enheden.
Testning af den nøjagtige samme kildekode på Linux fungerer perfekt med begge enheder.
Testsoftware på Linux (Device Requesting initialization)
. På Windows (ved hjælp af samme kabler og adaptere) forbliver loggen tom.
Forbindelsen af ​​Windows-pc'en med et Nullmodem-kabel til Linux-pc'en eller til den anden enhed fungerer kommunikationen som forventet. [3]


Tester kommunikationen med PuTTy på Windows, begge enheder arbejder.


Koden



Koden i testapplikationen ser sådan ud:


Efter opsætning af parametrene til porten og åbning af den:


QObject::connect(&m\_serialPort, SIGNAL(readyRead()), this, SLOT(bytesReady()));


Slottet:


void Device::bytesReady(){
while(m\_serialPort.bytesAvailable()){
    emit read(m\_serialPort.read(1).at(0));
}


}


Derefter konverterer 'Konsole' -Class Bytes modtaget til læsbare ASCII-tegn og viser dem i en QTextEdit


Konklusion/Spørgsmål



Vi har mistanke om, at der er en fejl i Qt eller Windows, men vi har ingen ide om, hvordan vi skal undersøge problemet. Testningen på Linux viser, at selve enheden fungerer fint og også vores testprogram. Er der nogen indstilling i Windows eller nogen speciel ting, jeg skal gøre for at oprette serialPort?

Bedste reference


Jeg regnede med det selv. Se toppen af ​​spørgsmålet til løsningen.