2015-07-30 4 views
-7

Я пытаюсь преобразовать некоторый VB6 код VB.NetVB6 в VB.NET эквиваленты

Private Sub MSComm1_OnComm() 
    Dim RxNumeric As String 

    Dim i As Integer 

    Rx = MSComm1.Input 
    RxNumeric = "" 
    For i = 1 To Len(Rx) 
     SReply(i - 1) = Asc(Mid(Rx, i, 1)) 
     RxNumeric = RxNumeric + " " + Hex(SReply(i - 1)) 
    Next i 
    txtWindow.Text = RxNumeric 
    Replied = True 
End Sub 

Мой вопрос:
что в VB.Net MSComm1_OnComm?

Если это как-то должно быть внутри serialport_DataRecieved, что мне включить?

+4

'MSComm1_OnComm' не что-то в VB .NET. Этот код определяет функцию, называемую 'MSComm1_OnComm'. Таким образом, в VB .NET вы бы достигли того же самого, аналогично определяя функцию с тем же именем. Вы что-то пробовали? Что не сработало? – David

+0

Я попытался скопировать и вставить его ... я вставил его под 'SerialPort_DataRecieved' ... я действительно не знаю, где разместить это ... спасибо –

+2

Ну, копирование и вставка кода между различными средами разработки, вероятно, t будет очень эффективным. Если вы попытаетесь реализовать некоторые функции в VB .NET и застряли на чем-то, мы можем с этим справиться. Но если вы спрашиваете: «где в .NET я копирую/вставляю этот код VB 6», тогда мы не можем ответить на это, потому что сам вопрос не имеет никакого смысла. – David

ответ

1
Imports System.IO.Ports 
WithEvents MSComm1 As SerialPort 

Private Sub MSComm1_DataReceived(ByVal eventSender As System.Object, ByVal eventArgs As SerialDataReceivedEventArgs) Handles MSComm1.DataReceived 
    Dim RxNumeric As String 
    Dim i As Short 

    Dim Rx As String = MSComm1.ReadExisting 
    RxNumeric = "" 
    For i = 1 To Len(Rx) 
     SReply(i - 1) = Asc(Mid(Rx, i, 1)) 
     RxNumeric = RxNumeric & " " & Hex(SReply(i - 1)) 
    Next i 
    txtWindow.Text = RxNumeric 
    Replied = True 
End Sub 
0

же, как @ ответ EJD, но ОПТИМИЗИРОВАННАЯ:

  • Я предпочитаю Int32 над Int16,
  • не используют методы LEGACY (в пользу managed из них) и
  • воспользуйтесь Using и
  • StringBuilder объект

Imports System.IO.Ports 
WithEvents MSComm1 As SerialPort 

Private Sub MSComm1_DataReceived(ByVal eventSender As System.Object, ByVal eventArgs As SerialDataReceivedEventArgs) Handles MSComm1.DataReceived 

    Using RxNumeric As New StringBuider 
     Dim Rx As String = MSComm1.ReadExisting 

     For i As Int32 = 0 To Rx.Length - 1 
      SReply(i) = Convert.ToInt32(Rx.Chars(i)) 
      RxNumeric.Append(" " & Convert.ToString(SReply(i), 16)) 
     Next i 

     txtWindow.Text = RxNumeric.ToString() 
    End Using 

    Replied = True 
End Sub 

Я также мог избавиться от SReply массива, но я оставил его - просто для удобства чтения.

Смежные вопросы