Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Com mal wieder...

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
04.11.2004, 09:29 Uhr
Mr. T



Hallo!

Ich hätte ein Problemchen, mit meinem Com - Programm.

Wenn ich ein anderes Programm, daß auch auf diese Comschnittstelle zugreift ausführe und dann wieder beende, lässt sich die richtige Kommunikation erst wieder herstellen, wenn ich den Rechner neu starte. Da kommt dann nur mist raus.
Andersrum geht´s aber tadellos. Also mein Programm lässt nach Beendigung (selbst, wenn ich es irregulär über das x schliesse) wieder neues Lesen und Schreiben auf dem Com zu, egal von welchem Programm aus.
Kann das an dem andéren Programm liegen?
Oder besser: Wie bekomme ich denn den Com sozusagen wieder richtig frei, wenn ich ihn initialisiere?
So initialisiere ich:


C++:

HANDLE Com1INI()
{
////////////////////////////////COM1////////////////////////////////////

    HANDLE h_com1_Bus = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0 , NULL);
    DCB com1_Einstellungen;
    COMMTIMEOUTS com1_HorchZeit;

    GetCommState(h_com1_Bus, &com1_Einstellungen);

    com1_Einstellungen.BaudRate = 115200;
    com1_Einstellungen.ByteSize = 8;
    com1_Einstellungen.Parity   = MARKPARITY;
    com1_Einstellungen.StopBits = ONESTOPBIT;
    
    SetCommState(h_com1_Bus, &com1_Einstellungen);

    GetCommTimeouts(h_com1_Bus,&com1_HorchZeit);

    com1_HorchZeit.ReadTotalTimeoutConstant=0;
    com1_HorchZeit.ReadTotalTimeoutMultiplier=0;

    SetCommTimeouts(h_com1_Bus,&com1_HorchZeit);

    return(h_com1_Bus);
}





void main()
{    
    HANDLE Syn;

    Syn = Com1INI();
...
...
}



--
So ist das!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.11.2004, 10:37 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du solltest den Com-Port wieder freigeben (CloseHandle)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.11.2004, 10:48 Uhr
Mr. T




Zitat von FloSoft:
du solltest den Com-Port wieder freigeben (CloseHandle)


Hmm.. Später im Programm mache ich das auch. Wenn ich also über x mein Programm verlasse bleibt der Com nicht freigegeben, oder? Aber wieso kann dann das andere Programm trotzdem wieder auf den Com zugreifen, (fehlerfrei) obwohl ich nicht mit CloseHandle()freigegeben habe?

Das ist doch widersprüchlich, oder?
--
So ist das!

Dieser Post wurde am 04.11.2004 um 10:51 Uhr von Mr. T editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.11.2004, 22:12 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Windows gibt nach Beendigung alle vom Programm belegten Resourcen wieder frei, zumindest die neueren Versionen.

Ich denke mal das es daran liegt das das andere Programm einstellungen am COM-Port verändert und du nicht alle Werte wieder so setzt wie du sie brauchst.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.11.2004, 22:15 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


oder du irgendwelche einstellungen nicht wieder zurücksetzt die das andere programm dann zum zusammenbrechen (und sch** bauen) verleitet
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: