ich habe mal ein ´kleines PRG geschrieben welches daten von COM1 oder COM2, jeweils protokolliert und weitersendet. Frei nach dem Motto , was geht da eigentlich ab, zwischen diesen beiden Geräten ?
Nicht vollkommen aber es funzt.
Bitte um Eure Meinung ....
Ist sowas brauchbar oder nur Bullshit ?
Zu Details bitte fragen...
Hier der CODE:
Nicht vollkommen aber es funzt.
Bitte um Eure Meinung ....
Ist sowas brauchbar oder nur Bullshit ?
Zu Details bitte fragen...
Hier der CODE:
Visual Basic-Quellcode
- Dim buffer1, buffer2, bufferrx1, bufferrx2, buffertx1, buffertx2 As String
- Private Sub Form_Load()
- Form1.Caption = "Repeater von COM nach COM"
- With MSComm1
- .CommPort = 1
- .Handshaking = 2 - comRTS
- .RThreshold = 1
- .RTSEnable = True
- .Settings = "9600,n,8,1"
- .SThreshold = 1
- .PortOpen = True
- ' Leave all other settings as default values.
- End With
- With MSComm2
- .CommPort = 2
- .Handshaking = 2 - comRTS
- .RThreshold = 1
- .RTSEnable = True
- .Settings = "9600,n,8,1"
- .SThreshold = 1
- .PortOpen = True
- ' Leave all other settings as default values.
- End With
- Text1.Text = ""
- Text3.Text = ""
- End Sub
- Private Sub Form_Unload(Cancel As Integer)
- MSComm1.PortOpen = False
- MSComm2.PortOpen = False
- End Sub
- '--------------
- 'INT FÜR COM1 |
- '--------------
- Private Sub MSComm1_OnComm()
- Dim InBuff1 As String
- Select Case MSComm1.CommEvent
- ' Errors
- Case comEventBreak ' A Break was received.
- Case comEventCDTO ' CD (RLSD) Timeout.
- Case comEventCTSTO ' CTS Timeout.
- Case comEventDSRTO ' DSR Timeout.
- Case comEventFrame ' Framing Error.
- Case comEventOverrun ' Data Lost.
- Case comEventRxOver ' Receive buffer overflow.
- Case comEventRxParity ' Parity Error.
- Case comEventTxFull ' Transmit buffer full.
- Case comEventDCB ' Unexpected error retrieving DCB]
- ' Events
- Case comEvCD ' Change in the CD line.
- Case comEvCTS ' Change in the CTS line.
- Case comEvDSR ' Change in the DSR line.
- Case comEvRing ' Change in the Ring Indicator.
- Case comEvReceive ' Received RThreshold # of chars.
- InBuff1 = MSComm1.Input
- Call HandleInput1(InBuff1)
- Case comEvSend ' There are SThreshold number of
- ' characters in the transmit buffer.
- Case comEvEOF ' An EOF character was found in the
- ' input stream.
- End Select
- End Sub
- '---------------------
- 'Auswertung FÜR COM1 |
- '---------------------
- Sub HandleInput1(InBuff1 As String)
- 'IN TEXT1 WIRD DER INHALT DER EMPFANGENEN DATEN IN ASC ANGEZEIGT + einem " "
- buffer1 = ""
- i1 = 1
- For i1 = 1 To Len(InBuff1)
- buffer1 = Asc(Mid(InBuff1, i1))
- If Len(buffer1) = 3 Then
- Text1.Text = Text1.Text & buffer1 & " "
- buffertx1 = buffertx1 & buffer1 & " "
- Else
- If Len(buffer1) = 2 Then
- buffer1 = "0" & buffer1
- Text1.Text = Text1.Text & buffer1 & " "
- buffertx1 = buffertx1 & buffer1 & " "
- Else
- buffer1 = "00" & buffer1
- Text1.Text = Text1.Text & buffer1 & " "
- buffertx1 = buffertx1 & buffer1 & " "
- End If
- End If
- buffer1 = ""
- Next i1
- '-------------------------------------------------
- 'EMPFANG AUF COM1-SENDEN DES EMPFANGS AUF COM2 |-----------------------------------------------------------------
- '-------------------------------------------------
- For i3 = 1 To Len(Text1.Text)
- If Mid(buffertx1, i3, 1) <> " " Then
- buffers2 = buffers2 & Mid(buffertx1, i3, 1)
- Else
- MSComm2.Output = Chr(buffers2)
- buffers2 = ""
- End If
- Next i3
- buffertx1 = ""
- ' Text1.Text = Text1.Text & vbCrLf
- End Sub
Visual Basic-Quellcode
- '--------------
- 'INT FÜR COM2 |
- '--------------
- Private Sub MSComm2_OnComm()
- Dim InBuff2 As String
- Select Case MSComm2.CommEvent
- ' Errors
- Case comEventBreak ' A Break was received.
- Case comEventCDTO ' CD (RLSD) Timeout.
- Case comEventCTSTO ' CTS Timeout.
- Case comEventDSRTO ' DSR Timeout.
- Case comEventFrame ' Framing Error.
- Case comEventOverrun ' Data Lost.
- Case comEventRxOver ' Receive buffer overflow.
- Case comEventRxParity ' Parity Error.
- Case comEventTxFull ' Transmit buffer full.
- Case comEventDCB ' Unexpected error retrieving DCB]
- ' Events
- Case comEvCD ' Change in the CD line.
- Case comEvCTS ' Change in the CTS line.
- Case comEvDSR ' Change in the DSR line.
- Case comEvRing ' Change in the Ring Indicator.
- Case comEvReceive ' Received RThreshold # of chars.
- InBuff2 = MSComm2.Input
- Call HandleInput2(InBuff2)
- Case comEvSend
- Case comEvEOF
- End Select
- End Sub
- '----------------------
- 'Auswertung FÜR COM2 |
- '----------------------
- Sub HandleInput2(InBuff2 As String)
- 'IN TEXT3 WIRD DER INHALT DER EMPFANGENEN DATEN IN ASC ANGEZEIGT + einem " "
- buffer2 = ""
- i2 = 1
- For i2 = 1 To Len(InBuff2)
- buffer2 = Asc(Mid(InBuff2, i2))
- If Len(buffer2) = 3 Then
- Text3.Text = Text3.Text & buffer2 & " "
- buffertx2 = buffertx2 & buffer2 & " "
- Else
- If Len(buffer2) = 2 Then
- buffer2 = "0" & buffer2
- Text3.Text = Text3.Text & buffer2 & " "
- buffertx2 = buffertx2 & buffer2 & " "
- Else
- buffer2 = "00" & buffer2
- Text3.Text = Text3.Text & buffer2 & " "
- buffertx2 = buffertx2 & buffer2 & " "
- End If
- End If
- buffer2 = ""
- Next i2
- '-----------------------------------------------
- 'EMPFANG AUF COM2-SENDEN DES EMPFANGS AUF COM1 |-------------------------------------------------------------------
- '-----------------------------------------------
- For i4 = 1 To Len(Text3.Text)
- If Mid(buffertx2, i4, 1) <> " " Then
- buffers1 = buffers1 & Mid(buffertx2, i4, 1)
- Else
- MSComm1.Output = Chr(buffers1)
- buffers1 = ""
- End If
- Next i4
- buffertx2 = ""
- ' Text3.Text = Text3.Text & vbCrLf
- End Sub
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „LaMa5“ ()