19. april 2001 - 01:35Der 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..
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å :-)
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...
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.
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 :-)
Synes godt om
Ny brugerNybegynder
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.