Loop i VB6 & andra problem

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
Cenorpa
Inlägg: 737
Blev medlem: 11 juli 2005, 20:58:03
Ort: Stockholm | Borlänge
Kontakt:

Inlägg av Cenorpa »

Tack för hjälpen!
Användarvisningsbild
RRacer
Inlägg: 370
Blev medlem: 29 januari 2005, 19:40:17
Ort: Lerum

Inlägg av RRacer »

My pleasure!
Användarvisningsbild
Cenorpa
Inlägg: 737
Blev medlem: 11 juli 2005, 20:58:03
Ort: Stockholm | Borlänge
Kontakt:

Inlägg av Cenorpa »

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.
Användarvisningsbild
jack
EF Sponsor
Inlägg: 2059
Blev medlem: 5 oktober 2004, 17:32:27

Inlägg av jack »

Det där med diagramet: Har för mig att det finns nån färdig "kontroll" där man enkelt kan rita streck, punkter osv direkt från koden. "PictureBox" kanske?
Användarvisningsbild
RRacer
Inlägg: 370
Blev medlem: 29 januari 2005, 19:40:17
Ort: Lerum

Inlägg av RRacer »

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å.
Gör en ny "Standard EXE", sätt ut en Picture box (5400x5400) på formuläret och klistra sedan in följande kod:

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
Klicka sedan på formuläret (inte picture box:en).
Användarvisningsbild
Cenorpa
Inlägg: 737
Blev medlem: 11 juli 2005, 20:58:03
Ort: Stockholm | Borlänge
Kontakt:

Inlägg av Cenorpa »

Det där var ju väldigt praktiskt.

Kan man göra på något sätt så att det dras en linje mellan punkterna?
Användarvisningsbild
jack
EF Sponsor
Inlägg: 2059
Blev medlem: 5 oktober 2004, 17:32:27

Inlägg av jack »

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
Användarvisningsbild
Cenorpa
Inlägg: 737
Blev medlem: 11 juli 2005, 20:58:03
Ort: Stockholm | Borlänge
Kontakt:

Inlägg av Cenorpa »

Nu har jag lite mer kött på benen!
Tack för hjälpen åter igen!
Användarvisningsbild
Lindqvist
EF Sponsor
Inlägg: 236
Blev medlem: 6 juli 2004, 19:19:53

Inlägg av Lindqvist »

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.
Bild

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
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
Senast redigerad av Lindqvist 31 januari 2006, 22:54:42, redigerad totalt 1 gång.
Användarvisningsbild
RRacer
Inlägg: 370
Blev medlem: 29 januari 2005, 19:40:17
Ort: Lerum

Inlägg av RRacer »

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]
Jag har under kvällen filat lite på en demo för hantering av comportar, och nu tror jag att den är klar.

Hämta den här.

Obs! Har inte testkört den än, men den borde funka... Bild
Användarvisningsbild
Cenorpa
Inlägg: 737
Blev medlem: 11 juli 2005, 20:58:03
Ort: Stockholm | Borlänge
Kontakt:

Inlägg av Cenorpa »

Oj, nu kom det mycket information :shock:

Ska försöka hinna titta på allt och försöka fårstå det...

RRacer: Jag kollade på ditt lilla testprogram med det verkar inte vilja fungera för mig :?
Ska kolla lite mer på koden om jag får lite tips därifrån.
Användarvisningsbild
Cenorpa
Inlägg: 737
Blev medlem: 11 juli 2005, 20:58:03
Ort: Stockholm | Borlänge
Kontakt:

Inlägg av Cenorpa »

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?
Användarvisningsbild
RRacer
Inlägg: 370
Blev medlem: 29 januari 2005, 19:40:17
Ort: Lerum

Inlägg av RRacer »

Jag har nu testat mitt lilla program mot ett modem, och det funkar sådär...
Det är något problem med buffringen, all data tas emot rätt, men den visas inte förrän extra data har skickats. Jag ska fixa det i helgen.





Note to self:
Testa alltid program innan publicering!
Användarvisningsbild
RRacer
Inlägg: 370
Blev medlem: 29 januari 2005, 19:40:17
Ort: Lerum

Inlägg av RRacer »

Tur att jag inte skrev vilken helg jag menade...

Här kommer en rättad version. Här är den.
Användarvisningsbild
Cenorpa
Inlägg: 737
Blev medlem: 11 juli 2005, 20:58:03
Ort: Stockholm | Borlänge
Kontakt:

Inlägg av Cenorpa »

Oj, jag hade helt glömt av att kolla den här tråden :shock:
Ska testa lite med den nya versionen nu, tack så mycket!
Skriv svar