| Naam |
Bericht |
timmie
|
wie weleens eens met de seriële poort heeft gewerkt onder VB2005/2008 heeft vast wel gemerkt dat je waarde boven de 127 niet kan verzenden, of beter gezegt dat je dan ? of 63 eruit krijgt.
dit is echter te verhelpen met een paar vrij simpele programeerregels
nu zullen er vast heel veel mooie methode voor zijn maar dit is toch wel een van de makkelijkere denk ik
code:
imports system
imports system.text
public class naam
dim utf8 as new UTF8Encoding()
mijncompoort.encoding = utf8
public sub Open_port()
mijncompoort.open
end sub
public sub send_data(byval data as byte)
mijncompoort.write = (data)
end sub
'wat ook mogelijk is
public sub send_data_2(byval data as integer)'waarde tussen 0 en 255
mijncompoort.write(chrW(data))
end sub
end class
hopelijk hebben jullie er wat aan
mocht er vraag zijn naar een C equilvant dan ben ik bereid die heir ook te posten
succes [Bericht gewijzigd door timmie op 26 mei 2008 22:34:36]
my place, DMX interface
|
Stynus
|
Bedankt.
Dit had ik net nodig bij 1 van men projectjes.
http://www.elektronicastynus.be ||| http://www.schematheek.net ||| Goedkope kwaliteits webhosting
|
timmie
|
om toch deze nog een keer om hoog te schoppen heb ik hier weer een tipje voor in vb dit keer om een bestand aan te maken en deze te beschrijven.
ik heb gekozen voor een csv file die op de C directory staat
code:
Using writer As StreamWriter = New StreamWriter(pad) 'open een streamwriter
writer.WriteLine(text als string) 'schrijf naar het bestand
End Using
in mijn geval dus:
code:
Using writer As StreamWriter = New StreamWriter("C:/save_file.csv") 'open een streamwriter
writer.WriteLine(TimeOfDay & ";" & SerialPort1.ReadChar) 'schrijf naar het bestand
End Using
hopelijk hebben jullie er iets aan
my place, DMX interface
|
timmie
|
en zo creëer je dus een file
code:
Dim file As System.IO.FileStream
file = System.IO.File.Create(C:/save_file.csv)
je moet wel even
system en system.io importeren.
my place, DMX interface
|
sunoke
|
quote: Op 2 maart 2008 19:33:29 schreef timmie:
wie weleens eens met de seriële poort heeft gewerkt onder VB2005/2008 heeft vast wel gemerkt dat je waarde boven de 127 niet kan verzenden, of beter gezegt dat je dan ? of 63 eruit krijgt.
Heeft dit niet gewoon te maken met het signed zijn van je waarde? Dan heb je een waarde tussen -128 en 127. Ik weet niet hoe dit in basic is geregeld, maar in C gebruik je dan gewoon de unsigned declaratie, bijvoorbeeld:
in plaats van
|
Stynus
|
Nee komt omdat ascii maar tot 127 gebruikt.
Overigens werkte de code hierboven ook niet helemaal goed bedacht ik me net.
Ik heb deze code gebruikt:
code:
Private WithEvents MSComm1 As New System.IO.Ports.SerialPort
MSComm1.Encoding = System.Text.Encoding.Default
quote:
vb.net 2005
[Bericht gewijzigd door Stynus op 4 mei 2008 14:48:04]
http://www.elektronicastynus.be ||| http://www.schematheek.net ||| Goedkope kwaliteits webhosting
|
Wristy
|
het volgende werkt voor mij perfect en ja ik maak ook gebruik van de extended ascii-tabel karakters (>127)
code: If serialPort.IsOpen Then
serialPort.Close()
End If
Try
With serialPort
.WriteBufferSize = 10
.PortName = cbbCOMPorts.Text
.BaudRate = 19200
.Parity = IO.Ports.Parity.None
.DataBits = 8
.StopBits = IO.Ports.StopBits.One
.Encoding = System.Text.UnicodeEncoding.Default
End With
serialPort.Open()
serialPort.Write(SpecCode + "v")
lblMessage.Text = cbbCOMPorts.Text & " connected."
btnConnect.Enabled = False
btnDisconnect.Enabled = True
Catch ex As Exception
MsgBox(ex.ToString)
End Try
|
timmie
|
zet er even bij welke VB je gebruikt en de het gebruikte component
voor mij geld:
VB2008
serialport component
.net framework 3.5
volgens msdn2 moet het volgens bovenstaand(eerste post van mij)
en voor mensen die net zoals ik de msdn help op hun computer hebben hier de directe link
ms-help://MS.MSDNQTR.v90.en/fxref_system/html/18320aae-c9c6-fef7-d437-56d8dacd9219.htm [Bericht gewijzigd door timmie op 4 mei 2008 14:28:03]
my place, DMX interface
|
timmie
|
quote: Op 4 mei 2008 12:34:05 schreef sunoke:
[...]
Heeft dit niet gewoon te maken met het signed zijn van je waarde? Dan heb je een waarde tussen -128 en 127. Ik weet niet hoe dit in basic is geregeld, maar in C gebruik je dan gewoon de unsigned declaratie, bijvoorbeeld:
in plaats van
ja dat zou je normaal misschien zeggen omdat je moet worstelen met unsigned chars maar de encoding die standaard ingesteld is is ASCII encoding die maar tot 127 strekt.
dus de read command leest 7 bits uit omdat dat de encoding aangeeft.
in C zal je dat ook moeten veranderen.
quote:
euhm ja dat klopt omdat jij unicode encoding gebruikt dat dus ook extended ascii gebruikt
my place, DMX interface
|
timmie
|
werken met multiform apps
even een trucje voor het makkelijk aanroepen van andere forms binnen je app
code: syntax
designname.show()'zorg dat het form wordt geladen
appactivate(designname.text)'activeer het form
in mijn geval
code:
settings.show()
appactivate(settings.text)
zou een van de mods de titel kunnen aanpassen naar
tips en trics in vb? mocht er geen bezwaar zijn dat dit topic openblijft [Bericht gewijzigd door timmie op 13 mei 2008 21:33:21]
my place, DMX interface
|