Compoort configureren via VB

Status
Niet open voor verdere reacties.

boskrabber

Gebruiker
Lid geworden
27 mrt 2005
Berichten
11
Hallo Allemaal,

Ik ben nieuw op dit forum. En ben eigenlijk ook vrij nieuw in de wereld van programmeren. Ik heb reeds een klein beetje ervaring met VB, maar niet veel.

De vraag die ik heb is de volgende : ik zou dus graag vanuit VB de snelheid van de compoort kunnen aanpassen. Bv. Je communiceert met een snelheid van 9600, No parity, 1 stopbit. Dit om met een welbepaalde modem te kunnen communiceren. Heeft er iemand een idee, hoe ik deze programmatie zou kunnen uitvoeren ?

Alvast bedankt

Mario
 
Welkom bij Helpmij!
Helpen kan ik je niet maar omdat je vraag misschien te veel afzakt geef ik even een berichtje ;-)
Reageer morgenochtend maar (kom je weer bovenaan)dan zijn er misschien andere mensen op het forum die met je mee willen en kunnen denken.
 
Hallo Boskrabber,

Welkom bij Helpmij!

Wanneer je VB start, dan wordt er een scherm genaamd 'New project' geopend. Je kiest dan geen 'Standaard Exe', maar scroll je helemaal naar benden en selecteer je daar 'VB Enterprise Edition Controls' en klik op OK.

Waarom wel 'VB Enterprise Edition Controls' te gebruiken en niet 'Standaard Exe'? Welnu, omdat het contol(MSComm) dat voor je project benodigd is daarin te vinden is en niet bij 'Standaard Exe', dus vandaar.
(eigeenlijk niet helemaal waar, maar het is even om de uitleg wat te vereenvoudigen)

Plaats dat control op het Form, waar later ook de code voor het modem komt te staan, en druk op de F1-toets, hierdoor wordt de MSDN Library geopend. In dat geopende(Help) scherm klik je op 'Example', de code wordt dan zichtbaar.

In het geval je niet de beschikking hebt over de 'MSDN Library' plaats ik de code zekerheidshalve hieronder.

Code:
Private Sub Form_Load ()
    ' Buffer to hold input string
    Dim Instring As String
    ' Use COM1.
    MSComm1.CommPort = 1
    ' 9600 baud, no parity, 8 data, and 1 stop bit.
    MSComm1.Settings = "9600,N,8,1"
    ' Tell the control to read entire buffer when Input
    ' is used.
    MSComm1.InputLen = 0
    ' Open the port.
    MSComm1.PortOpen = True
    ' Send the attention command to the modem.
    MSComm1.Output = "ATV1Q0" & Chr$(13) ' Ensure that 
    ' the modem responds with "OK".
    ' Wait for data to come back to the serial port.
    Do
       DoEvents
       Buffer$ = Buffer$ & MSComm1.Input
    Loop Until InStr(Buffer$, "OK" & vbCRLF)
    ' Read the "OK" response data in the serial port.
    ' Close the serial port.
    MSComm1.PortOpen = False
End Sub

Ik zal wanneer ik meer tijd heb(misschien morgen wel) hier en daar wat aanpassingen gaan doen.

Groetjes,

Dennis.
 
Hallo,

Alvast bedankt voor de info. Ik had namelijk al geprobeerd gebruik te maken van de MS-commando's, maar dant ging niet. Maar ik had een gewone " Standaard Exe " geselecteerd.

Ik ga dit straks eens proberen !!! Maar ik moet eerst eens naar onze droogkast kijken !! Ze heeft gisteren de Geest gegeven.

Mario
 
Via 'Standaard.exe' kan ook en dat doe je als volgt:

1) Rechtsklik op de Tool-Box.

2) Klik op Components.

Er verschijnt een venster met de naam 'Components'. Daarin bevinden zich Activex-componenten die alfabetisch gesorteerd zijn.

3) Zet een vinkje bij 'Microsoft Comm Control 6.0' en klik op OK.

De Tool-Box bevat nu het Activex-control(dit is het MSCOMM32.OCX bestand in de directory windows\system32), en het heeft de vorm v.e. telefoontje.

Enige opmerkingen:

Indien er een foutmelding tijdens het invoegen van dat Activex-control op het Form verschijnt, dan moet dat control met regsvr32.exe in de Windows-Registry worden gerigistreerd . Maar dit zou tijdens de installatie van VB al automatisch plaats hebben gevonden.

Zoals je weet kwam de code die ik aan je gaf uit de 'MSDN Library', het is een help bestand ter grootte van 2GB, tijdens de installatie van VB krijgt men de keus het wel of niet te willen installeren. Tegenwoordig is de MSDN online te bezichtigen(MS heeft dit reeds enige tijd geleden geannonceerd voor al haar produkten), desondanks is de 'MSDN Library' nog steeds erg goed bruikbaar.

Dennis.
 
Laatst bewerkt:
Geplaatst door Elisa
Reageer morgenochtend maar (kom je weer bovenaan)dan zijn er misschien andere mensen op het forum die met je mee willen en kunnen denken.
Had je soms aan (o.a.) mij gedacht?;)

Dennis.
 
Zoiets Dennis, ik ben hier alleen maar receptioniste :D
 
Geplaatst door Elisa
ik ben hier alleen maar receptioniste :D
Hahaha(heb binnenpretjes gekregen nu, wat ben je leuk, Elisa) In mijn ogen veel meer dan dat!;)

Dennis.
 
Laatst bewerkt:
Thanks voor de enorme info !! Ik ga dezen avond ne keer eraan beginnen !! Mijn droogkast is nu toch gemaakt !! Dan is mijn vrouw blij en dan kan ikl vanavond mij volop concentreren op het programmeren !!

Groetjes !!!

Mario
 
Boskrabber ben je een Belg? Bedoel je met droogkast een droogtrommel? Kan me voorstellen dat die voorging :D
 
boskrabber,

Ik ben blij voor jullie, dat het kapotte apparaat het nu weer doet.

Overigens v.w.b. VB geen dank hoor. Het was zo summier.

Dennis.
 
Heb mijn code juist ingetypt en heb gebruik gemaakt van een activX component (het telefoontje), maar als ik mijn project run, dan zie ik nergens een button staan waar ik op kan klikken om mijn compoort te gaan activeren en te testen.

Het is namelijk zo, dat ik een programma wil maken waarbij je een modem kan automatisch configureren door het invoeren van een aantal AT-commando's. Maar ik wil ook vanuit mijn programma een selectie kunnen maken tussen meerdere compoorten. Bv. Ik wens te kunnen communiceren via mijn seriële poort 1 ,3 of 4.

Daarvoor heb ik een Case structuur opgezet. Maar op een gegeven moment als je de gewenste compoort hebt geselecteerd, moet ik deze kunnen aanspreken en de communicatie naar mijn modem opzetten.

Hieronder vindt je mijn testprogrammaatje !!

Dim Instring As String
Dim Config As Integer
Dim buffer As String




Private Sub CmdCOMSel_Click()

Select Case CmdCOMSel.ListIndex

Case 0
MsgBox " COM 1 "
Case 1
MsgBox " COM 3 "
Case 2
MsgBox " COM 4 "

End Select


End Sub



Private Sub CmdDwnld_Click()



End Sub

Private Sub MSComm1_OnComm()

If CmdCOMSel.ListIndex = -1 Then

MsgBox " Er werd geen Compoort geselecteerd ", , "Foutmelding"

Else: Select Case CmdCOMSel.ListIndex
Case 0
Config = MsgBox("Download via COM 1", vbOKCancel, "Config GSM Modem")

If Config = vbOK Then
' Use COM 1
MSComm1.CommPort = 1
' 9600 Baud, no parity, 8 data, and 1 Stopbit
MSComm1.Settings = "9600,N,8,1"
' Tell the control to read entire buffer when Input is used
MSComm1.InputLen = 0
' Open Port
MSComm1.PortOpen = True
' Send the attention command to the modem
MSComm1.Output = "ATV1Q0" & Chr(13)
' Ensure that the modem responds with OK
' Wait for data to come back to the serial port.
' Do
' DoEvents
' Buffer$ = Buffer$ & MsComm1.Input
' Loop Until InStr(Buffer$, "OK" & vbCrLf)
' Read The " OK" response data in the serial port.
' Close the serial port
' MsComm1.PortOpen = False
buffer = MSComm1.Input

MsgBox buffer

Else: MsgBox " Canceled "
End If

Case 1
Config = MsgBox("Download via COM 2", vbOKCancel, "Config GSM Modem")

If Config = vbOK Then
MsgBox Config
Else: MsgBox " Canceled "
End If

Case 2
Config = MsgBox("Download via COM 3", vbOKCancel, "Config GSM Modem")
If Config = vbOK Then
MsgBox Config
Else: MsgBox " Canceled "
End If

End Select

End If

End Sub
End Sub


Zoals jullie kunnen zien ben ik nog maar een amateurtje !! Maar alléé al doende leert men !!

Thanks
 
boskrabber,

Ik zou dan eerst een modem op mijn andere pc moeten plaatsen en ook VB installeren. Je hoort het nog wel vanavond(en uiterlijk pas morgen) van mij.

Dennis.
 
Geplaatst door DENNIS90
boskrabber,

Ik zou dan eerst een modem op mijn andere pc moeten plaatsen en ook VB installeren. Je hoort het nog wel vanavond(en uiterlijk pas morgen) van mij.

Dennis.
En dan zegt ie dan ik een goedzak ben...moet je kijken wat voor moeite jij nu doet om een ander te helpen...

Chapeau! :thumb:
 
boskrabber,

Even de code ordenen, zodat eventueel anderen het ook beter kunnen volgen:

Code:
Dim Instring As String 
Dim Config As Integer 
Dim buffer As String 

Private Sub CmdCOMSel_Click() 
   Select Case CmdCOMSel.ListIndex 
      Case 0 
         MsgBox " COM 1 " 
      Case 1 
         MsgBox " COM 3 " 
      Case 2 
         MsgBox " COM 4 " 
   End Select 
End Sub 

Private Sub CmdDwnld_Click() 

End Sub 

Private Sub MSComm1_OnComm() 
   If CmdCOMSel.ListIndex = -1 Then 
      MsgBox " Er werd geen Compoort geselecteerd ", , "Foutmelding" 
      Else
      Select Case CmdCOMSel.ListIndex 
         Case 0 
            Config = MsgBox("Download via COM 1", vbOKCancel, _ &
            "Config GSM Modem") 
            If Config = vbOK Then 
              ' Use COM 1 
              MSComm1.CommPort = 1 
              ' 9600 Baud, no parity, 8 data, and 1 Stopbit 
              MSComm1.Settings = "9600,N,8,1" 
              ' Tell the control to read entire buffer when Input is used 
              MSComm1.InputLen = 0 
              ' Open Port 
              MSComm1.PortOpen = True 
              ' Send the attention command to the modem 
              MSComm1.Output = "ATV1Q0" & Chr(13) 
              ' Ensure that the modem responds with OK 
              ' Wait for data to come back to the serial port. 
              ' Do 
                 ' DoEvents 
                 ' Buffer$ = Buffer$ & MsComm1.Input 
                 ' Loop Until InStr(Buffer$, "OK" & vbCrLf) 
                 ' Read The " OK" response data in the serial port. 
                 ' Close the serial port 
                 ' MsComm1.PortOpen = False 
                 buffer = MSComm1.Input 
                 MsgBox buffer 
              Else
                 MsgBox " Canceled " 
              End If 

         Case 1 
            Config = MsgBox("Download via COM 2", vbOKCancel, _ &
            "Config GSM Modem") 
            If Config = vbOK Then 
                MsgBox Config 
            Else
                MsgBox " Canceled " 
            End If 
         Case 2 
            Config = MsgBox("Download via COM 3", vbOKCancel, _ &
            "Config GSM Modem") 
            If Config = vbOK Then 
               MsgBox Config 
            Else
               MsgBox " Canceled " 
            End If 
      End Select 
   End If 
End Sub

Dennis.
 
Geplaatst door joost verdaasdo
En dan zegt ie dan ik een goedzak ben...
Wil je het nog een keer horen?
Joost, you're just a very helpfull guy!!!:thumb:
And are you also an API expert?(dit n.a.v. de andere thread)
Ja, heb zelf zoveel API routines gehad in het verleden. Heb ze nu niet meer.:(
Geplaatst door joost verdaasdo
moet je kijken wat voor moeite jij nu doet om een ander te helpen...

Chapeau! :thumb:
Waar? Ik zie niks. Vous chapeau!:thumb:

Dennis.

PS. Ja, Hayes commando's kan helaas niet meer onder het huidige 'Dos' worden uitgevoerd.
Helpmij was even traag. Het duurde wel even voordat ik dit bericht kon intypen.
 
Hahaha, nee hoor we hebben elkaar genoeg complimentjes gegeven! :p

Weet ook wel wat van API's ja..maar probeer het af te leren deze zijn vervangen in .NET door Klasses dus ja als we straks overgaan dan probeer ik nu alvast wat gewoontes af te leren..;) (We krijgen gelukkig wel tijd genoeg om over te schakelen) :thumb:
 
Ja Joost, Ik had .NET eigenlijk al veel langer moeten installeren(heb de software wel). Ik loop anders achter.

Groetjes,

Dennis.

PS. Ik ga eerst even wat rondkijken op Helpmij en dan begin ik pas met installeren v.h. modem en VB. Moet morgen trouwens vroeg op.
 
boskrabber,

Ik heb nog niet echt naar je code gekeken/bestudeerd. Over een paar uurtjes zal ik dat zeker doen. Ga nu wat uitrusten, heb gisternacht heel slecht geslapen.

Hieronder alvast een code voor het detecteren v.e. modem, en als er een modem aanwezig is, dan zal het programma melding maken op welk com poort hij aangesloten is.

Code:
Private Sub Command1_Click()
   'Bepaal op welke com poort het modem
   'aangesloten is.

   On Error Resume Next

   Dim Com_Poort_Nummer As Integer

   'Scan 10 poorten
   For Com_Poort_Nummer = 1 To 10
       Label1.Caption = "Com poort " & Com_Poort_Nummer _
       & " wordt gescand...."
       'Er worden naar 10 com poorten gekeken of er wel
       'een modem op     'één van die poorten aangesloten
       'is, te beginnen bij com poort 1.
       MSComm1.CommPort = Com_Poort_Nummer
       If MSComm1.PortOpen = False Then
           MSComm1.PortOpen = True
           'Hier wordt een Hayes AT-commando naar het
           'modem verstuurd.
           MSComm1.Output = "AT" + Chr$(13)
           DoEvents
           'Zit een modem op de PC, dan zal de de buffer
           't.g.v. het AT-commando, het woord "OK"
           'bevatten,
           If MSComm1.InBufferCount >= 2 Then
               'Deze poort is al getest, en het
               'wordt nu gesloten.
               'Daarom verlaten we de For/Next lus.
               Exit For
           Else
               MSComm1.PortOpen = False
           End If
       End If
   Next Com_Poort_Nummer
   If Com_Poort_Nummer = 11 Then
      Label1.Caption = "Er is geen modem op uw pc of het " _
      & "is in gebruik."
      Else
      MSComm1.PortOpen = False
      Label1.Caption = "Com poort v.h. modem is " _
      & Com_Poort_Nummer & "."
   End If
End Sub

Dennis.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan