Avatar billede twister10 Nybegynder
19. april 2001 - 01:35 Der er 5 kommentarer og
1 løsning

Vente på at data er afsendt !

Hvordan får man Visual Basic til at vente med at fortsætte programmet (rutinen), således at den sender data via den serielle port, men de næste linier bliver først eksekveret når den er færdig med at sende det. eks. at man kan måde på en outputbuffer, hvornår den er tom for de informationer man har sendt ud. eks. en byte..
Avatar billede powell Nybegynder
19. april 2001 - 09:08 #1
Jeg vil umiddelbart mene at du skal bruge MSComm Controlen.

Hvordan kan ses her: http://www.ontrak.net/visual.htm
Avatar billede twister10 Nybegynder
19. april 2001 - 09:14 #2
Det gør jeg skam osse :-)

Private Sub Command2_Click()
MSComm.RTSEnable = False
MSComm.Output = Chr(2)
MSComm.RTSEnable = True
End Sub

Mit problem er bare at linien :

MSComm.RTSEnable = True

bliver kørt for hurtigt til at RTS signalet er højt længe nok på porten, så RS485 netværket når ikke at få modtaget dataene korrekt, jeg ved det er det der er fejlen, for hvis jeg indsætter denne kode :

Private Sub Command2_Click()
MSComm.RTSEnable = False
MSComm.Output = Chr(2)
MSComm.RTSEnable = False
MSComm.RTSEnable = False
MSComm.RTSEnable = False
MSComm.RTSEnable = True
End Sub

Så laver de False-Linier et lille delay, og så begynder det at virke på modtager siden, det modtageren så sender tilbage til mig kommer osse, men det er ikke det samme data (byte) der bliver modtaget hver gang, og det er der problemt ligger, da de mini-delays nævnt for oven her jo ikke er den rigtige måde at chekke om dataene er afsendt på :-)
Avatar billede twister10 Nybegynder
19. april 2001 - 09:16 #3
Kører jeg dette program på RS232 porten så virker alting, jeg sender data ud, modtageren behandler disse data og returnerer den rigtige streng værdi, men RS232 er jo osse fuld duplex, og det er RS485 ikke...
Avatar billede powell Nybegynder
19. april 2001 - 09:33 #4
Hvis det er til RS485, så tror jeg du kan finde dit svar ved at kikke i Modbus Protocol.
Mener at den kan findes her: www.essproducts.com/serial_communications.htm
Avatar billede twister10 Nybegynder
19. april 2001 - 10:29 #5
OK, jeg har kigget men der står nu ikke lige noget direkte omkring afsendelse af dataene og hvordan omkring RTS...

Det jeg roder med er et hjemmelavet RS485 system, som virker på den simple måde at nogle kredse skal aktiveres (RTS) når de sender, og de-aktiveres når de modtager..

Det er meningen at når jeg snder noget til den RS485 enhed jeg har via PC\'en (Som har en RS232<-->RS485 konverter), at enheden skal skifte udgangene på nogle porte, og derefter returnere en værdi tilbage til mig, men her er det jo vigtigt at man styrer sende og modtage flagene (RTS) da de jo ellers bare sender oven i hindanden, og RS485 er jo halv-duplex, så hvis dette ikke kontrolleres så får man hverken noget den ene eller den anden vej.
Avatar billede twister10 Nybegynder
19. april 2001 - 11:16 #6
Jeg har løst det nu, jeg har indsat et MINI-delay på sender siden så den ikke når at sende oven i hatten på PC\'en...Og nu virker det, selv ved max. hastighed...

Ellers 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