Finns en klass i .net framework som heter någonting i stil med "serialport" eller liknande, kolla på google efter den System.IO.Ports.SerialPort om jag inte missminner mej... "serialport" känner jag till redan ... med vad menas med 110,n,8,1 ? 110,N,8,1 betyder: Det du vill göra är högst asynkront i mina öron. Testa att se vad som exekveras i eventen på SerialPort-objektet när det kommer "data" Enligt dokumentationen så kan du inte använda pinchanged. Så, som sagt, titta på error-eventet och datareceived-eventet eller vad det nu heter och se om du kan använda det. (släng in msgbox eller något i eventen å se om å vad som exekveras) ... men "SerialPinChange Enumeration" ... "CtsChanged", "DsrChanged", "CDChanged" ... mm hur kan man använda detta ? Detta har jag hittat i ett program som jag "deassemblat"... är lite dålig på detta område. behörver hjälp att förstå ...RS232 - 110,N,8,1 (binary/raw mode) ?
Jag vill läsa in puls/kortslutning via RS232 porten med en givare där tillverkaren säger att inläsningen skall ske efter "110,N,8,1 (binary/raw mode)" ... en 50ms puls läses in som ett tecken med ASCII koden 0xE0 eller 0xF0.
Hur skall man översätta detta till vb.net?Sv: RS232 - 110,N,8,1 (binary/raw mode) ?
Sv:RS232 - 110,N,8,1 (binary/raw mode) ?
Sv: RS232 - 110,N,8,1 (binary/raw mode) ?
DTR och RxD kopplas samman genom en strömställare som är öppen. När strömställaren kortslutes under en period av ca 50ms vill jag fånga detta genom RxD.
Det som händer är att DTR skickar ut en spänning som kan likställas med en 1:a. Det är denna 1:a som jag vill läsa av genom RxD.
<code>
Dim Comport As SerialPort
Comport = New SerialPort()
With Comport
.PortName = "COM1"
.BaudRate = 110
.Parity = IO.Ports.Parity.None
.DataBits = 8
.StopBits = IO.Ports.StopBits.One
.RtsEnable = True
.DtrEnable = True
.ReadTimeout = 1500
.Open()
End With
</code>
men hur får jag tag på min 1:a ?Sv:RS232 - 110,N,8,1 (binary/raw mode) ?
110 baud
ingen paritetsbit
8 databitar
1 stopbit
som jag ser det så är det de inställningar du använder
Angående dtr så begriper jag inte riktigt scenariot, vad har dtr att göra med rxd? och i vilken ände?Sv: RS232 - 110,N,8,1 (binary/raw mode) ?
Det jag vill göra är att läsa av en puls (kortslutning) från en elmätare. kan göra det enkelt för mig och använda redan färdiga mjukvaror men vill lära mig hur det går till från grunden.
DTR ansluts till RxD med en öppen strömbrytare. När strömbrytaren under 50ms stängs (kortslutes) så blir Rxd "hög". Hur läser man av detta?
se: http://www.techtrade.se/sv/emc-connect.asp för hur det skall kopplas mot serieporten om det verkar oklart. Sv: RS232 - 110,N,8,1 (binary/raw mode) ?
det där med startbit, paritet och stoppbit tillhör asynkron dataöverföring. det jag vill göra känns som ickeasynkron. Jag måste
ett normalvärde är en "etta". en startbit är en "nolla" ...... det borde fungera som så att det alltid är en "etta" med en "nolla" under 50ms. Frågan är bara hur fungar man upp detta...
error event ? Sv:RS232 - 110,N,8,1 (binary/raw mode) ?
Sv: RS232 - 110,N,8,1 (binary/raw mode) ?
Hittat ett event som kanske skulle passa ... "SerialPort.PinChanged". Man jag är kass på hur man skall använda detta i praktiken ... förslag/hjälp önskasSv:RS232 - 110,N,8,1 (binary/raw mode) ?
Sv: RS232 - 110,N,8,1 (binary/raw mode) ?
Sv: RS232 - 110,N,8,1 (binary/raw mode) ?
<code>
Private _commtest As SerialPort
Private Sub CommTest_PinChanged(ByVal sender As Object, ByVal e As SerialPinChangedEventArgs)
If (e.EventType = SerialPinChange.CDChanged) Then
'do my shit
End If
If (e.EventType = SerialPinChange.Break) Then
'do my shit
End If
If (e.EventType = SerialPinChange.DsrChanged) Then
'do my shit
End If
If (e.EventType = SerialPinChange.CtsChanged) Then
'do my shit
End If
If (e.EventType = SerialPinChange.Ring) Then
'do my shit
End If
End Sub
Friend Overridable Property CommTest() As SerialPort
Get
Return Me._CommTest
End Get
Set(ByVal WithEventsValue As SerialPort)
Dim handler2 As SerialPinChangedEventHandler = New SerialPinChangedEventHandler(AddressOf Me.CommTest_PinChanged)
If (Not Me._CommTest Is Nothing) Then
RemoveHandler Me._CommTest.PinChanged, handler2
End If
Me._CommTest = WithEventsValue
If (Not Me._CommTest Is Nothing) Then
AddHandler Me._CommTest.PinChanged, handler2
End If
End Set
End Property
</code>Sv: RS232 - 110,N,8,1 (binary/raw mode) ?
Varför kan jag inte komma in och köra "do my shit" ?
<code>
Private _commtest As SerialPort
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
CommTest = New SerialPort("COM1")
CommTest.Open()
End Sub
Private Sub CommTest_PinChanged(ByVal sender As Object, ByVal e As SerialPinChangedEventArgs)
If (e.EventType = SerialPinChange.CDChanged) Then
'do my shit
End If
If (e.EventType = SerialPinChange.Break) Then
'do my shit
End If
If (e.EventType = SerialPinChange.DsrChanged) Then
'do my shit
End If
If (e.EventType = SerialPinChange.CtsChanged) Then
'do my shit
End If
If (e.EventType = SerialPinChange.Ring) Then
'do my shit
End If
End Sub
Friend Overridable Property CommTest() As SerialPort
Get
Return Me._CommTest
End Get
Set(ByVal WithEventsValue As SerialPort)
Dim handler2 As SerialPinChangedEventHandler = New SerialPinChangedEventHandler(AddressOf Me.CommTest_PinChanged)
If (Not Me._CommTest Is Nothing) Then
RemoveHandler Me._CommTest.PinChanged, handler2
End If
Me._CommTest = WithEventsValue
If (Not Me._CommTest Is Nothing) Then
AddHandler Me._CommTest.PinChanged, handler2
End If
End Set
End Property
</code>