Toon posts:

[VB] seriele communicatie wil niet werken :(

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik moet met spoed een heel klein programmaatje maken in Visual Basic.
Maar het wil niet helemaal vlotten.

Ik moet een teller maken die elke keer ophoogt als de pc via de seriele poort een karakter ontvangt. (laten we zeggen A)
OF liever de string die verstuurd wordt via de seriele poort weergeeft.

Ik gebruik namelijk een microcontroller waarin een teller loopt, maar deze teller moet ook op een groot scherm getoond worden. Nu lukt het me wel via de mscomm control om een string naar mijn microcontroller te sturen maar ik ontvang niks.

het gaat om de getallen 1 tot en met 1000 dus de microcontroller zal eerst 1 karakter sturen bij 1t/m9 evrvolgens 2 bij 10 t/m 99 enz.
Als dit te moeilijk is kan tie ook wel 0000 t/m 1000 sturen hoor.

wat doe ik fout in de onderstaande code?

code:
1
2
3
4
5
6
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True
MSComm1.InputLen = 0
txttest.Text = MSComm1.Input
MSComm1.PortOpen = False

  • AceRimmer
  • Registratie: Maart 2001
  • Laatst online: 27-05 20:39

AceRimmer

What a guy...

Voor het ontvangen moet je gebruik maken van het onComm event.

Zie: http://www.rentron.com/receiving_data.htm

Smoke me a kipper, I'll be back for breakfast


Verwijderd

Topicstarter
dat heb ik overgenomen die code.
Maar als ik test met hyperterminal dan komt het programma helemaal niet inde sub MSComm1_OnComm() als ik op een willekeurig karakter druk.

er moeten dus maximaal 4 karakters in de input buffer kunnen.

Verwijderd

Moet je niet nog je event wire'en?
/me is niet echt bekent met VB6

Verwijderd

Topicstarter
ik ook niet :D
moet VB niet automatisch die sub ingaan als er een karakter aangeboden wordt op de seriele poort?

Verwijderd

Stop dan maar :P B)
Verwijderd schreef op 09 december 2003 @ 23:24:
moet VB niet automatisch die sub ingaan als er een karakter aangeboden wordt op de seriele poort?
Als ie niet is gewired niet... maarja, VB kweet niet of ie dat automatisch doet ;(

  • Kix@$$
  • Registratie: December 2001
  • Laatst online: 26-05 15:11
Verwijderd schreef op 09 december 2003 @ 23:24:
ik ook niet :D
moet VB niet automatisch die sub ingaan als er een karakter aangeboden wordt op de seriele poort?
OnComm vind ik zelf nooit zo lekker werken omdat hij daar de ene keer wel komt en de andere keer niet.

Wat je beter kunt doen is een eigen soort event bouwen met een simpele timer en dan kijken of de InputLength groter is dan 0 oid :)

  • Foxie_s
  • Registratie: Maart 2002
  • Laatst online: 18-03 20:30
Ben ook niet helemaal thuis in vb6.0 maar ga toch eens een gokje doen.

in uwe Form
code:
1
2
3
4
5
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputLen = X        //Uitlezing buffer
MSComm1.RThreshold = 1      //Er wordt een onComm event gegenereerd telkens er een karakter in de ingangsbuffer komt
MSComm1.PortOpen = True

elke keer als er nu iets binnen komt krijgt ge een commEvent
dus in een aparte private sub "Private Sub MSComm1_OnComm()"

code:
1
2
3
4
5
6
7
8
9
Select Case MSComm1.CommEvent
    Case comEvReceive
        MSComm1.RThreshold = 0
        
    //Codex

        MSComm1.RThreshold = 1
    End Select
end Sub

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 07-10-2025
gewoon een timer zetten die de compoort uitleest, is de lengte >0 (of 14 als je dat wilt) dan is er een karakter of string binnen gekomen. Hieraan kun je een sub koppelen, een routine ingaan of weetik veel wat allemaal nog meer.

Je kunt niet met hyper Term. kijken terwijl je VVVB applicatie ook draait -> compoort bezet.

Probeer eens met die timer en alle inputs met debug.print te laten zien in je immediate panel
Pagina: 1