Loop i VB6 & andra problem
Mer problem!
Nu har jag kommit på ganska bra hur jag ska lösa det med det programmet som jag håller på med men har börjat på ett till projekt nu och behöver lite mer hjälp.
I det här nya programmet så ska man i ett fönster kunna se ett kurvdiagram och nu undrar jag hur jag ska göra det, själva kurvan altså.
Sa jag ta och sätta ut massa linjer vars position jag kontrollerar via koden eller kan man göra på något annat sätt?
Om jag nu ska ha 30 linjer måsta jag sätta ut alla då elelr kan jag skriva ungefär såhär:
Dim line(30) as line
Hur gör jag sen för att bestämma kordinater på en viss linje sen om man ens kan göra så med indexerade linjer?
Och nu till problem 2:
Seriell kommunikation ut vet jag hur man gör nu men nu är det input funktionen som är svårare. Det jag vill göra är att placera inkommande information i en sträng för senare avläsning.
Output:
MSComm1.Output = "hej" & vbCr
Input:?
Här borde det vara:
MSComm1.Input = sträng
Kom med lite hjälp, det behövs
Hej sålänge.
Nu har jag kommit på ganska bra hur jag ska lösa det med det programmet som jag håller på med men har börjat på ett till projekt nu och behöver lite mer hjälp.
I det här nya programmet så ska man i ett fönster kunna se ett kurvdiagram och nu undrar jag hur jag ska göra det, själva kurvan altså.
Sa jag ta och sätta ut massa linjer vars position jag kontrollerar via koden eller kan man göra på något annat sätt?
Om jag nu ska ha 30 linjer måsta jag sätta ut alla då elelr kan jag skriva ungefär såhär:
Dim line(30) as line
Hur gör jag sen för att bestämma kordinater på en viss linje sen om man ens kan göra så med indexerade linjer?
Och nu till problem 2:
Seriell kommunikation ut vet jag hur man gör nu men nu är det input funktionen som är svårare. Det jag vill göra är att placera inkommande information i en sträng för senare avläsning.
Output:
MSComm1.Output = "hej" & vbCr
Input:?
Här borde det vara:
MSComm1.Input = sträng
Kom med lite hjälp, det behövs

Hej sålänge.
Gör en ny "Standard EXE", sätt ut en Picture box (5400x5400) på formuläret och klistra sedan in följande kod:Cenorpa skrev:I det här nya programmet så ska man i ett fönster kunna se ett kurvdiagram och nu undrar jag hur jag ska göra det, själva kurvan altså.
Kod: Markera allt
Private Sub Form_click()
Dim i As Double
Dim x As Long, y As Long
Dim Pi As Double
Pi = 3.14159265
For i = 0 To 2 * Pi Step Pi / 50
x = i * (5400 / (2 * Pi))
y = 2700 + 2700 * Sin(i)
Me.Picture1.PSet (x, y)
'Debug.Print x, y
Next i
End Sub
Byt ut PSet mot Line.
Kolla här för lite mer information om egenskaperna för en PictureBox:
http://www.garybeene.com/vb/tut-plot.htm
Kolla här för lite mer information om egenskaperna för en PictureBox:
http://www.garybeene.com/vb/tut-plot.htm
Cenorpa undrade:
"I det här nya programmet så ska man i ett fönster kunna se ett kurvdiagram och nu undrar jag hur jag ska göra det, själva kurvan altså."
Jag har använt mig mycket av en lättvikts-control som heter Graphlite, för att rita lite enkla och snygga grafer. Tyvärr har originalartikeln försvunnit från nätet, men det finns en kopia hos developer.com. Artikeln är välskriven och lätt att följa.
Här är länken: http://www.developer.com/net/vb/article ... _1539491_1
Exempel från Graphlite.

Om det är något du undrar över så fråga på, jag har manglat den VBcontrolen på både längden och tvären.
Cenorpas problem 2:
"Seriell kommunikation ut vet jag hur man gör nu men nu är det input funktionen som är svårare. Det jag vill göra är att placera inkommande information i en sträng för senare avläsning."
Jag brukar använda mig av OnComm() händelsen för få reda på när det finns nya bytes att hämta från serieporten. Då får man initiera MSComm med att sätta RThreshold större än noll. Är det bara ett fåtal bytes som kommer varje gång så brukar jag sätta MSComm1.RThreshold = 1.
Då anropas MSComm1_OnComm() varje gång en (1) byte trillar in från serieporten.
MSComm1_OnComm kan då se ut som den biten jag har klippt ur ett av mina program. Hoppas att kommentarerna förklarar så pass mycket så du kan anpassa det till ditt eget projekt :
Hittade ett bra exempel på hur man kommer igång med OnComm: http://support.microsoft.com/default.as ... -us;194922
Edit: Lade till en bild och en länk
"I det här nya programmet så ska man i ett fönster kunna se ett kurvdiagram och nu undrar jag hur jag ska göra det, själva kurvan altså."
Jag har använt mig mycket av en lättvikts-control som heter Graphlite, för att rita lite enkla och snygga grafer. Tyvärr har originalartikeln försvunnit från nätet, men det finns en kopia hos developer.com. Artikeln är välskriven och lätt att följa.
Här är länken: http://www.developer.com/net/vb/article ... _1539491_1
Exempel från Graphlite.

Om det är något du undrar över så fråga på, jag har manglat den VBcontrolen på både längden och tvären.
Cenorpas problem 2:
"Seriell kommunikation ut vet jag hur man gör nu men nu är det input funktionen som är svårare. Det jag vill göra är att placera inkommande information i en sträng för senare avläsning."
Jag brukar använda mig av OnComm() händelsen för få reda på när det finns nya bytes att hämta från serieporten. Då får man initiera MSComm med att sätta RThreshold större än noll. Är det bara ett fåtal bytes som kommer varje gång så brukar jag sätta MSComm1.RThreshold = 1.
Då anropas MSComm1_OnComm() varje gång en (1) byte trillar in från serieporten.
MSComm1_OnComm kan då se ut som den biten jag har klippt ur ett av mina program. Hoppas att kommentarerna förklarar så pass mycket så du kan anpassa det till ditt eget projekt :
Kod: Markera allt
Private Sub MSComm1_OnComm()
Dim strStop As String
Select Case MSComm1.CommEvent
' Handle each event or error by placing
' code below each case statement
'Events
Case comEvReceive ' Received RThreshold # of chars.
strBuffer = strBuffer & MSComm1.Input
'Check if we have a complete return message.
'It is 14 bytes long and ends with a CR.
Select Case Len(strBuffer)
Case Is < 14
'Exit the sub and wait for more characters
Exit Sub
Case 14
'A complete message is returned.
'
'Stop the timeout timer
TimeOut.Enabled = False
'
'Check if the last character is a "CR".
'Sometimes the instrument sends a space instead of a CR,
'so check for that too.
strStop = Right$(strBuffer, 1)
If strStop = Chr(13) Or strStop = " " Then
'
'Display the data
Call UpdateData(Left(strBuffer, 13))
Else
'
Call UpdateError("Wrong stop charachter (" & Asc(Right$(strBuffer, 1)) & ")", strBuffer)
'Flash the comm error led
Call ComErrorLED_Timer
End If
Case Is > 14
'
Call UpdateError("Too many bytes (" & Len(strBuffer) & ")", strBuffer)
'Flash the comm error led
Call ComErrorLED_Timer
End Select
'
'Clear the input buffer and make it ready for a new value
strBuffer = ""
bolReady = True
End Select
End Sub
Edit: Lade till en bild och en länk
Senast redigerad av Lindqvist 31 januari 2006, 22:54:42, redigerad totalt 1 gång.
Jag har under kvällen filat lite på en demo för hantering av comportar, och nu tror jag att den är klar.Cenorpa skrev:Seriell kommunikation ut vet jag hur man gör nu men nu är det input funktionen som är svårare. Det jag vill göra är att placera inkommande information i en sträng för senare avläsning.
[snip]
Hämta den här.
Obs! Har inte testkört den än, men den borde funka...

Nu har jag försökt lite mer med comporten men kan inte få det att fungera.
Att skicka ut gåt hur lätt som helst men att ta emot var en annan femma...
RRacer har satt ihop ett mycket bra demo för comporten men det enda jag får att fungera i det är att skicka vilket jag redan kan.
Har kopplat ihop min dator med laptopen via seriekabel och försöker testa lite.
Här på datorn kör jag RRacer:s program och på den andra hyperterminalen.
Skriver jag nått på laptopen så komemr det inte upp i RRacer:s program men tvärsemot fungerar det.
Någon som vet felet?
Att skicka ut gåt hur lätt som helst men att ta emot var en annan femma...
RRacer har satt ihop ett mycket bra demo för comporten men det enda jag får att fungera i det är att skicka vilket jag redan kan.
Har kopplat ihop min dator med laptopen via seriekabel och försöker testa lite.
Här på datorn kör jag RRacer:s program och på den andra hyperterminalen.
Skriver jag nått på laptopen så komemr det inte upp i RRacer:s program men tvärsemot fungerar det.
Någon som vet felet?