Avatar billede Lasse Novice
09. september 2005 - 00:49 Der er 4 kommentarer og
1 løsning

Hjaelp til COM port

Jeg skal bruge en MEGET simpel COM kommunikation. Derfor har jeg soegt til SELV at lave den, istedet for at bruge en af de mange allerede eksisterende komponenter. COM porten skal ikke bruge events, da den skal bruges i en client server model: Client spoerger og faar svar tilbage fra server.

Jeg har initialiseret den saaledes:

IntPtr hCom = CreateFile("COM" + comPortNumber, FILE_ACCESS.FILE_GENERIC_READ | FILE_ACCESS.FILE_GENERIC_WRITE, 0, IntPtr.Zero, FILE_CREATION.OPEN_EXISTING, 0, IntPtr.Zero);

Jeg faar en brugbar pointer tilbage... saa lt spiller perfekt. Derefter saetter jeg COM state vha. SetCommState

Jeg har lavet en funktion til at laese fra COM-porten:

private int Read(byte[] bytes, int size)
{
  int read = 0;
  ReadFile(hCom, bytes, size, ref read, IntPtr.Zero);
  return read;
}

Nogen gange saetter jeg f.eks. size = 20, men der findes kun 3 bytes paa COM porten. Derfor blokker funktions kaldet, selvom dokumentationen beskriver at der skulle vaere et meget kort timeout. Det virker alligevel som om der er ikke er et timeout sat.

Hvad goer jeg her?
Avatar billede bertelbrander Novice
09. september 2005 - 01:02 #1
Kalder SetCommTimeouts ?
Avatar billede Lasse Novice
09. september 2005 - 01:47 #2
Jeg har kaldt getCommTimeouts for at checke hvilke vaerdier der er sat. De er alle sat til 0, hvilket skulle medfoere at ReadFile kaldet returnere MED DET SAMME - altsaa uden timeout.
Avatar billede bertelbrander Novice
09. september 2005 - 01:49 #3
For ReadIntervalTimeout i strukturen (jeg arbejder normalt i C++) står der:

"A value of MAXDWORD, combined with zero values for both the ReadTotalTimeoutConstant and ReadTotalTimeoutMultiplier members, specifies that the read operation is to return immediately with the characters that have already been received, even if no characters have been received."
Avatar billede Lasse Novice
09. september 2005 - 01:55 #4
ahh, ja, det staar der soerme ogsaa... jeg havde kun laest den forrige paragraf. Mange tak.
Avatar billede Lasse Novice
11. oktober 2005 - 01:41 #5
jeg regner med at du stadig ikke samler paa point bertelbrander. Hvis andet er tilfaeldet maa du lige sige til.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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