Avatar billede DTP Novice
12. november 2003 - 12:57 Der er 40 kommentarer og
1 løsning

udskrive til textboks (newb)

Jeg prøver at udskrive til en textbox hvad der kommer ind fra MSCOMM.Input . har prøvet følgende:




1)
Private Sub Text1_Change()
txtDisplay.Text = MSCOMM.Input
End Sub

2)
Private Sub Text1_Change()
txt1.Text = MSCOMM.Input
End Sub

3)

har også prøvet 
Dim input As integer
input = input + MSComm.Input

først og så i 1) og  2)  skrevet input efter lighedstegnet.



håber der er nogen der vil være behjælpelige

Tak på forhånd
Avatar billede tjacob Juniormester
12. november 2003 - 13:11 #1
Det er måske fordi du lægger koden i Change eventet,
som bare ikke bliver fyret af. (det sker kun hvis indholdet
i textboxen ændres, altså hvis du f.eks. begynder at skrive
i den).

prøv at lægge en knap på formen, og læg koden i den:

Private Sub Command1_Click()
    txt1.Text = MSCOMM.Input
End Sub

Nu har jeg ingen erfaring med MSCOMM, men er du sikker på
at der kommer et input? Og at der er en streng?
Det kunne jo også være fordi input er tom...

/tjacob
Avatar billede tjacob Juniormester
12. november 2003 - 13:19 #2
Det ser ud til at du skal køre noget loop for
at få hele inputtet med. Se her:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/comm98/html/vbobjcommx.asp

gør du det?
Avatar billede DTP Novice
12. november 2003 - 13:22 #3
jeg kan OVERHOVEDET intet udskrive til textboksen, hverken tal eller bogstaver som jeg selv definerer (hvad er syntaksen for at udskrive til en tekstboks?)

det kode der står i spørgsmålet er ikke AL min kode, jeg har noget kode foroven som ved et tryk på en knap sender noget ud på comporten, derefter får et svar som jeg gemmer i en variabel og i en logfil, men hvordan skriver jeg den ud i en tekstboks ?? og siden jeg kan gemme inputtet i en logfil hvor jeg kan se og læse inputtet, SÅ MÅ der jo være et input og DET ER en streng.
Avatar billede DTP Novice
12. november 2003 - 13:26 #4
nej tjacob dit link er på noget helt andet, der har jeg været inde.

prøv at kigge på dette link istedet:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconusingcommunicationscontrol.asp

og så kig under overskriften "The Receive Buffer" cirka midt på siden.
de giver et eksempel, men der sker ikke noget når jeg prøver.
Avatar billede tjacob Juniormester
12. november 2003 - 13:26 #5
Din syntax er OK: txt1.Text = 'strengvariabel' er korrekt.

Du er sikker på at navnet (txt1) er korrekt?
Du har ikke enabled = False på textboxen?

Prøv at indsætte en ny textbox, med default properties.

Hvis din strengvariabel er på flere linier, skal du
huske multiline = True
Avatar billede hammerhead Nybegynder
12. november 2003 - 13:26 #6
Hej.

Hvis du gemme dit input i en variabel kan du så ikke vise den i tekstboksen med:

Jeg kan ikke huske syntaksen til teksboksen i VB, nedenfor er det i VB.NET

Textbox1.Text = navnet på din variabel

Jeg kan ikke huske syntaksen til teksboksen i VB.
Avatar billede martin_moth Mester
12. november 2003 - 13:30 #7
Det er præcis det samme, i dette tilfælde ingen forskel på VB6 og VB.NET :o)
Avatar billede DTP Novice
12. november 2003 - 13:30 #8
jeg har enabled = true

og ja er sikker på text1 ....se kode i spørgsmål  :)

har prøvet med multiline = true

prøver med ny textbox................
Avatar billede DTP Novice
12. november 2003 - 13:36 #9
ok har prøvet med textbox1.text = minvariabel  stadig intet

har det noget at skulle have sagt at :

Private Sub Command1_Click()

' Buffer to hold input string
  Dim svar As String


kode



End Sub
_______________________________________________________________________________

Private Sub Text1_Change()
Textbox1.Text = svar
End Sub                  'hvis i forstår hvad jeg mener ? ved vb godt at det "svar" jeg nævner hernede er det samme som "svar" aller øverst ??
Avatar billede tjacob Juniormester
12. november 2003 - 13:41 #10
Nej det er måske problemet:

Svar skal erklæres globalt, dvs UDENFOR subs.
Sæt Dim Svar As String øverst i formen eller modulet.
Avatar billede tjacob Juniormester
12. november 2003 - 13:42 #11
Sludder:    Public Svar As String
Avatar billede tjacob Juniormester
12. november 2003 - 13:43 #12
For i øvrigt burde du have Option Explicit slået til.
-Så ville den slags fejl blive fanget at debuggeren.

Jeg har ikke adgang til VB lige nu men det er inde i Tools/Options
Avatar billede martin_moth Mester
12. november 2003 - 13:45 #13
Hvis du Dim'mer en variabel i en sub er den IKKE synlig i en anden sub, med mindre du opretter den som public.

Ta og læs dette, og bliv MEGET klogere på hvordan variabler opfører sig i VB:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconunderstandingscopeofvariables.asp

Et eksempel på hvordan du skriver til en textbox:

Private Sub Command1_Click()
  Dim svar As String
  Svar = "Hej"
  Text1.Text = svar
End Sub

I øvrigt skriver du noget underligt noget - hvorfor skriver du i Text1_Change-eventen? Det kode du skriver i en _Change event bliver KUN kørt når eventen bliver triggeret.

Tror du skal få lidt styr på dine events. Spørg endelig
Avatar billede DTP Novice
12. november 2003 - 13:47 #14
nu får jeg en "TYPE MISMATCH" på linie **

Public svar As Integer

Private Sub Command1_Click()


MSComm1.CommPort = 1


'indstillinger for kommunikationen: 9600 Baud rate, ingen paritet, 8 databit, og 1 stop bit
MSComm1.Settings = "9600,N,8,1"

'rts cts handshaking dvs hardware handshaking
MSComm1.Handshaking = comRTS


'MSComm1.InputLen = 0

'Så skal porten åbnes
MSComm1.PortOpen = True

'Nu kan der sendes AT kommandoer til transmit-bufferen, f.eks.
MSComm1.Output = "AT" & vbCr
'MSComm1.Output = "AT+CMGS= 26208789" & vbCr 'ASCII 13 svarer til ENTER som skal sendes efter en AT kommando
'Sleep (500)
'MSComm1.Output = "sender en besked fra vb" & Chr$(26)

filnummer = FreeFile
  Open "C:\log.txt" For Append As #filnummer
  Print #filnummer, MSComm1.InBufferCount & MSComm1.InBufferSize
 
  Close #filnummer
 
Sleep (1000)

** svar = svar & MSComm1.Input


filnummer = FreeFile
  Open "C:\log.txt" For Append As #filnummer
  Print #filnummer, "sendsvar er:" & svar & MSComm1.OutBufferSize
   
  Close #filnummer

MSComm1.PortOpen = False
End Sub

Private Sub Text1_Change()

Textbox1.Text = svar


End Sub
Avatar billede tjacob Juniormester
12. november 2003 - 13:48 #15
Det er fordi du erklærer Svar som en Integer, men det er en Streng

Public Svar As String
Avatar billede martin_moth Mester
12. november 2003 - 13:49 #16
Så er det fordi MSComm1.Input ikke er en string...

Jeg synes stadig det ser meget(!) forkert ud med den _Change event...
Avatar billede DTP Novice
12. november 2003 - 13:49 #17
HOV !!!!
Avatar billede tjacob Juniormester
12. november 2003 - 13:49 #18
Men, som jeg skrev i første kommentar, og som Martin også nævner:

Hvorfor i Change eventet?
Avatar billede martin_moth Mester
12. november 2003 - 13:50 #19
Doh - det er omvendt. Lyt til tjacob :o)
Avatar billede martin_moth Mester
12. november 2003 - 13:50 #20
Det går sgu hurtigt det her :o)
Avatar billede DTP Novice
12. november 2003 - 13:52 #21
martin_moth>> jeg er jo newB, men tror du har ret jeg skal have styr på events, men hvilken event vil du foreslå og hvor kan jeg se hvilke events jeg kan vælge imellem ?
Avatar billede DTP Novice
12. november 2003 - 13:53 #22
tjacob>> sorry du nævnte det faktisk i det allerførste svar
Avatar billede DTP Novice
12. november 2003 - 13:56 #23
jeg vil have det således at når jeg trykker på den knap så bliver svar skrevet ud i tekstboksen eller at mscomm.input HELE TIDEN bliver skrevet ud i tekstboxen
Avatar billede tjacob Juniormester
12. november 2003 - 14:25 #24
I din ovenstående kode kunne du bare lægge Textbox1.Text = svar

ind allernederst i din Command1_Click:

Public svar As String  <<<<<<<<<NB!NB!NB HUSK>>>>>>>>>>>>>>>>>>>>>>>>

Private Sub Command1_Click()


MSComm1.CommPort = 1


'indstillinger for kommunikationen: 9600 Baud rate, ingen paritet, 8 databit, og 1 stop bit
MSComm1.Settings = "9600,N,8,1"

'rts cts handshaking dvs hardware handshaking
MSComm1.Handshaking = comRTS


'MSComm1.InputLen = 0

'Så skal porten åbnes
MSComm1.PortOpen = True

'Nu kan der sendes AT kommandoer til transmit-bufferen, f.eks.
MSComm1.Output = "AT" & vbCr
'MSComm1.Output = "AT+CMGS= 26208789" & vbCr 'ASCII 13 svarer til ENTER som skal sendes efter en AT kommando
'Sleep (500)
'MSComm1.Output = "sender en besked fra vb" & Chr$(26)

filnummer = FreeFile
  Open "C:\log.txt" For Append As #filnummer
  Print #filnummer, MSComm1.InBufferCount & MSComm1.InBufferSize
 
  Close #filnummer
 
Sleep (1000)

** svar = svar & MSComm1.Input


filnummer = FreeFile
  Open "C:\log.txt" For Append As #filnummer
  Print #filnummer, "sendsvar er:" & svar & MSComm1.OutBufferSize
   
  Close #filnummer

MSComm1.PortOpen = False

Textbox1.Text = svar

End Sub


/tjacob
Avatar billede DTP Novice
12. november 2003 - 14:29 #25
prøvede dette dengang du skrev dit første svar fik run time error 424 "object required"
Avatar billede tjacob Juniormester
12. november 2003 - 14:30 #26
På hvilken linie?
Avatar billede DTP Novice
12. november 2003 - 14:31 #27
på den linie jeg tilføjer : textbox1.text =svar
Avatar billede tjacob Juniormester
12. november 2003 - 14:33 #28
Så er det fordi du ikke HAR en textbox der hedder Textbox1
Avatar billede tjacob Juniormester
12. november 2003 - 14:33 #29
det skal evt være txtbox1
Avatar billede tjacob Juniormester
12. november 2003 - 14:37 #30
textboxen ligger på den samme form?

ellers skal du huske at have formen med:  'din_form'.'din textbox'.Text = svar
Avatar billede DTP Novice
12. november 2003 - 14:37 #31
tjacob>> jeg blev forvirret efterhånden og fik mixet en masse ting sammen du har ret:

change eventet skal stryges
Text1.text = svar  linjen skal tilføjes
Avatar billede tjacob Juniormester
12. november 2003 - 14:39 #32
Virker det så nu?
Avatar billede DTP Novice
12. november 2003 - 14:40 #33
tak tjacob  ...er det med vilje at du kun har kommenteret og ikke svaret ?

får også nogle mærkelig tegn skrevet ud i tekstboksen !! er det kontroltegn ? det kunne godt se sådan ud
Avatar billede DTP Novice
12. november 2003 - 14:42 #34
ja det virker og jeg skal selfølgelig ind og slå multiline til !
Avatar billede tjacob Juniormester
12. november 2003 - 14:44 #35
Ja, jeg skal da ikke have nogle points før det virker, men
nu har jeg lagt et svar........

Ja, det er sikkert kontroltegn. Du kan evt køre nogle
Replace på svar, og erstatte dem:

f.eks. svar = Replace(svar, Chr(10)," ")

INDEN du indsætter i textboxen.

-erstatter karakteren LineFeed med et mellemrum

-lige den skal du IKKE bruge, da du så ikke har nogen linieskift,
det er bare et eksempel.

/tjacob
Avatar billede DTP Novice
12. november 2003 - 14:46 #36
eller jeg kan nøjes med at slå multilibe til i textboxens property vindue

tak tak tak for hjælpen !
Avatar billede tjacob Juniormester
12. november 2003 - 14:48 #37
OK, og tak for points
Avatar billede DTP Novice
12. november 2003 - 15:09 #39
Tak, ja jeg skal vist sætte mig ned og læse lidt mere, istedet for bare at kaste mig ud i tingene.  :)
Avatar billede martin_moth Mester
12. november 2003 - 15:10 #40
I ovenstående kan du finde frem til

http://www.vbtutor.net/vbtutor.html

http://165.193.123.40/content/articlex.asp?product_id={2AF3918A-975A-4E73-81EE-75E7376B63DC}&element_id={E9FCD057-E1C3-4E81-BB6E-1D36D845ADAE}#Heading2
(godt nok VB5 og ikke VB6)

Og en masse andre. Desuden anbefalinger af bøger. God læsning :o)
Avatar billede martin_moth Mester
12. november 2003 - 15:12 #41
Og du har ret - selvom det tager tid at pløje en bog eller en tutorail igennem, så er tiden givet godt ud, for det tager mindst 10 gange så lang tid hvis man famler sig frem i blinde, og koden bliver med garanti dårligere hvis man bare prøver sig frem indtil det virker :o)
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