El código es muy grande y no traduce bien todo. Voy partes por partes como este y este no convierte.
Puerto_serie.DataReceived += New SerialDataReceivedEventHandler(DataReceivedHandler)
En VB.NET, para asociar eventos en tiempo de ejecución se hace con las sentencias
AddHandler y
AddressOf.
AddHandler Puerto_serie.DataReceived, AddressOf Me.Puerto_serie_DataReceived
Pero a diferencia de C# en VB.NET esto es algo opcional, no es necesario asociarlo de esa manera a menos que el objeto en cuestión haya sido creado en tiempo de ejecución. En su lugar puedes usar al keyword
Handles:
Private Sub Puerto_serie_DataReceived(ByVal sender As Object, ByVal e As DataReceivedHandler) Handles Puerto_serie.DataReceived
' ...
End Sub
string[] data = indata.Split('A');
Dim data As String() = indata.Split("A"c)
Esto ni siquiera tiene que ver con VB.NET. No existe ninguna sobrecarga del método String.Split en cuya firma acepte un caracter como parámetro, sino un array de caracteres. Al escribir "A"c se casteará automáticamente y puedes llamarlo así, pero no es un buen hábito hacerlo ya que no estás evitando el factor de error humano...
string[] data
= indata
.Split(new char[] { 'A' });
Dim data As String() = indata.Split( { "A"c } )
Hay otra parte del código que traduce bien en teoría, pero hay muchos peros, da errores en VB .net.
A diferencia de C#, en VB.NET las cadenas de texto se concatenan usando el operador
&, no
+, el cual es un operador aritmético de suma. Se puede concatenar en ciertas circunstancias pero dará problemas ya que no es su propósito.
Aparte de eso, en VB.NET no es necesario escribir al final la sentencia
Exit Select (
break en C#). La instrucción ya va implícita en el código compilado.
' Dim cantidadBytes As Integer
Dim sp As SerialPort = DirectCast(sender, SerialPort)
Dim indata As String = sp.ReadExisting()
Dim data As String() = indata.Split({"A"c})
cantidadBytes = Integer.Parse(data(0))
Select Case data(1).ToString()
Case "1"
Console.WriteLine("Tamaño: " & cantidadBytes & " Bytes.")
Console.WriteLine("Foto: " & data(1) & ". Tipo de archivo: JPG")
Case "2"
Console.WriteLine("Tamaño: " & cantidadBytes & " Bytes.")
Console.WriteLine("Foto: " & data(1) & ". Tipo de archivo: PNG.")
Case Else
Console.WriteLine("Cosas raras en 'data': " & data.ToString())
End Select
De todas formas tanto en C# como en VB.NET la concatenación tradicional (y fea) de strings puedes evitarlo, utilizando el método String.Format():
Console.WriteLine(String.Format("Foto: {0}. Tipo de archivo: {1}.", data(1) ,"PNG"))
Todo lo que estás preguntando son cosas básicas que podrías averiguar con dos minutos en Google o leyendo la referencia de VB.NET y su modo de empleo en MSDN, hay ejemplos para todo.