Avatar billede djmaster Nybegynder
29. marts 2007 - 16:28 Der er 4 kommentarer og
1 løsning

Tilgå comporten fra forskellige funtioner i 1 program

Jeg har lavet et program der skal kommunikere med comporten (udfra dette eksempel http://damb.dk/snip/modem.html), og dette fungerer også fint. Jeg har to funktioner void test1() og void test2() som mit main program kalder, først test1 så test2. Begge funktioner skal kommunikere med comporten. I begge funktioner starter jeg med følgende kodelinjer:

  DCB dcb;
  HANDLE ComPort = CreateFile("COM2", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);

  GetCommState(ComPort, &dcb);
  dcb.BaudRate = 9600;
  dcb.ByteSize = 8;
  dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;
  dcb.fOutxCtsFlow = 1;
  SetCommState(ComPort, &dcb);
  SetTimeOut(ComPort, 1);

test1 funktionen får fint fat i comporten, men når jeg kalder test2, får jeg ikke fat i comporten. Begge funktioner er identiske, og kalder jeg test2 først, så virker test1 ikke.

Kan man virkelig kun tilgå comporten i én funktion?
Det er vel mig der gør noget forkert. (jeg får ingen compiler fejl, og alt sker efter hensigten, undtagen kommunikationen med comporten)
Avatar billede bitmatic Nybegynder
29. marts 2007 - 17:34 #1
Du skal huske at lukke com-porten efter du har brugt den. Ellers kan den anden funktion ikke få lov at åbne den.
Avatar billede bitmatic Nybegynder
29. marts 2007 - 17:35 #2
Det gør de i øvrigt også i det eksempel du linker til.

Sidst i main: CloseHandle(ComPort);
Avatar billede djmaster Nybegynder
29. marts 2007 - 19:21 #3
Okay, det er nok væsentlig lige at huske. Jeg har først mulighed for at tjekke om det virker imorgen, men mon ikke det gør. Jeg har ihvert fald ikke husket at lukke comporten.
Så smid du et svar, så får du point imorgen
Avatar billede bitmatic Nybegynder
30. marts 2007 - 00:46 #4
ok :)
Avatar billede djmaster Nybegynder
30. marts 2007 - 09:33 #5
Det var lige præcis det jeg manglede. Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester