Sida 3 av 3
Postat: 18 januari 2006, 18:53:04
av Cenorpa
Tack för hjälpen!
Postat: 18 januari 2006, 19:07:18
av RRacer
My pleasure!
Postat: 31 januari 2006, 17:36:28
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.
Postat: 31 januari 2006, 17:41:48
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?
Postat: 31 januari 2006, 18:29:53
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).
Postat: 31 januari 2006, 21:18:18
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?
Postat: 31 januari 2006, 21:22:46
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
Postat: 31 januari 2006, 21:55:54
av Cenorpa
Nu har jag lite mer kött på benen!
Tack för hjälpen åter igen!
Postat: 31 januari 2006, 22:40:38
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.
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
Postat: 31 januari 2006, 22:53:07
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...

Postat: 1 februari 2006, 19:21:26
av Cenorpa
Oj, nu kom det mycket information
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.
Postat: 17 februari 2006, 11:28:20
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?
Postat: 17 februari 2006, 13:08:52
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!
Postat: 1 mars 2006, 20:55:49
av RRacer
Tur att jag inte skrev
vilken helg jag menade...
Här kommer en rättad version.
Här är den.
Postat: 12 mars 2006, 10:36:44
av Cenorpa
Oj, jag hade helt glömt av att kolla den här tråden
Ska testa lite med den nya versionen nu, tack så mycket!