Avatar billede htm Nybegynder
11. april 2005 - 12:42 Der er 9 kommentarer og
1 løsning

Windows seriel programmering

Hej

Kan I give mig et simpelt eks. på hvordan jeg komunikerer med en serielport?

Jeg har kun brug for at læse.

Det skal virke i Windows 2000/XP.

Jeg bruger MS Visual Studio 2003.
Avatar billede medions Nybegynder
11. april 2005 - 13:14 #1
Hej Tomas,

Her er et lille eksempel, håber du kan bruge det:

#include <stdio.h>
#include <windows.h>

void SetTimeOut(HANDLE Port, int sec)
{
  COMMTIMEOUTS commtimeouts;
  GetCommTimeouts(Port, &commtimeouts);
  commtimeouts.ReadIntervalTimeout = 1000*sec;
  commtimeouts.ReadTotalTimeoutMultiplier = 10;
  commtimeouts.ReadTotalTimeoutConstant = 1000*sec;
  SetCommTimeouts(Port, &commtimeouts);
}

void Tx(HANDLE Port, const char *data)
{
  DWORD Dummy;
  WriteFile(Port, data, strlen(data), &Dummy, 0);
  WriteFile(Port, "\r\n", 2, &Dummy, 0);
}

void Rx(HANDLE Port)
{
  char Buffer[128];
  DWORD Length, i;

  ReadFile(Port, Buffer, 128, &Length, 0);

  for(i = 0; i < Length; i++)
    if(Buffer[i] != '\r')
      printf("%c", Buffer[i]);
}

int main(void)
{
  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);

  Tx(ComPort, "AT");
  Rx(ComPort);
  Tx(ComPort, "ATZ");
  Rx(ComPort);

  CloseHandle(ComPort);

  return 0;
}

//>Rune
Avatar billede htm Nybegynder
11. april 2005 - 13:42 #2
Helt sikkert Rune

Det var lige hvad jeg manglede ;-)
Avatar billede medions Nybegynder
11. april 2005 - 13:50 #3
Kanont mester :)
Jamen godt jeg kunne hjælpe ;o) - du kunne jo også bare ha' spurgt over MSN, så havde det også været gratis :oD

//>Rune
Avatar billede htm Nybegynder
11. april 2005 - 14:05 #4
Fuck det :-)

Har rigeligt point til at dele dem ud også.
Avatar billede medions Nybegynder
11. april 2005 - 14:26 #5
:-D
Avatar billede bertelbrander Novice
11. april 2005 - 19:51 #6
>>Rune, nydelig eksempel, jeg synes dog at det virker bekendt...
Avatar billede medions Nybegynder
12. april 2005 - 09:22 #7
bertelbrander> ja, kan det ikke passe at det er fra din hjemmeside? - brugte det engang til at teste det med noget modemhalløj, men kunne ikke helt huske hvorfra det kom... beklager hvis du har noget imod jeg har brugt den?!

//>Rune
Avatar billede bertelbrander Novice
12. april 2005 - 19:34 #8
Rune, jeg har intet imod at du bruger og vidregiver "min" kode, det er sådan set meningen.
Jeg havde fortrukket en note om hvorfra koden kom.
Avatar billede medions Nybegynder
13. april 2005 - 20:18 #9
Ahh okay, well sorry, men havde ikke det med i mit kodeeksempel jeg lavede dengang, da det blot var en test til et modem for at se om det virkede...
- ellers ville jeg selvf. ha' skrevet hvor koden kom fra.

//>Rune
Avatar billede bertelbrander Novice
13. april 2005 - 20:23 #10
No problem.
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