15. oktober 2002 - 12:21Der er
20 kommentarer og 2 løsninger
MSComm - besynderlig opførsel
Jeg bruger i et program MSComm komponenten til at kommunikere med en infrarød enhed men jeg har et lille problem. Når jeg starter programmet normalt (i IDE'et) åbnes COM-porten godt nok men der kommer aldrig svar på de kommandoer jeg ligger i komponentens output-buffer. Men hvis jeg derimod indsætter et breakpoint umiddelbart efter porten er blevet åbnet og derefter starter programmet, venter på at det stoppes af breakpointet og starter det igen virker alting som det skal! Sætter jeg breakpointet inden porten er åbnet virker det ikke.
Da det naturligvis hverken er acceptabelt eller teknisk muligt at have et breakpoint midt i sit program går pointene til den der kan få mit program til at fungere på normal vis.
Giv venligst konkrete løsningsforslag, ikke bare links til tilfældige sider hvor man måske (måske ikke) kan finde information om problemet.
Det havde jeg faktisk men nu da jeg prøvede det igen opdagede jeg at uden breakpoints udløses OnComm lige efter jeg har lagt data i output-bufferen - dog ikke med CommEvent=comEvReceive men med CommEvent=comEvCD. Ikke helt sikker på hvad det vil sige men det sker i hvertfald ikke når jeg bruger breakpoint-tricket.
Jep, den kiggede jeg også lige på men det giver stadigvæk ikke rigtig nogen mening. Men da jeg inspicerede OnComm event'en igen viste det sig at hvis jeg sætter en "MsgBox comMSComm.CommEvent" helt øverst i OnComm proceduren får jeg CommEvent=comEventTxFull (Transmit Buffer Full) - først et par instruktioner senere bliver den CommEvent=comEvCD.
Jeg sender kun nogle få bytes og jeg ikke umiddelbart se noget sted hvor jeg kan forøge bufferstørrelsen. Der er en property på komponenten, OutBufferSize, men den har allerede en langt større værdi (512) end længden af det data jeg sender.
Man kan måske forestille sig at bufferen skal "cleares" eller initialiseres på en eller anden måde før man kan sende og at det er der sker når programmet startes igen efter et breakpoint...
comEvCD angiver at modem signalet Carrier Detect har ændret sig - benyttes dette af din infrarøde enhed, eller kan der være tale om, at dit kabel er forkert bygget?
Det jeg mener med en mulig kabelfejl er, at hvis ledningen med data fra den infrarøde enhed til COM-porten fejlagtigt er forbundet til COM-portens Carrier-Detect indgang, kunne dette forklare hvad du ser.
Der er intet kabel - den infrarøde forbindelse går direkte fra computeren til enheden. Driverne til den infrarøde port opretter en virtuel COM-port (COM 4) der gør det muligt at foretage almindelig seriel kommunikation over den infrarøde forbindelse.
Husk også at alting fungerer som det skal (jeg kan både sende og modtage data) hvis jeg bruger det underlige breakpoint-trick, så problemet er helt sikkert ikke hardware-relateret.
Løst! Det var faktisk et timing problem men forsinkelsen skulle indlægges umiddelbart efter der hvor porten blev åbnet (ligesom breakpointet - burde jeg have tænkt på før). Tak for hjælpen.
dk_akj>> Hvis du vil have del i pointene så drop lige et svar her inden fredag.
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.