[VB.NET] Overload resolution, hoe dit weg te werken

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Intheweb
  • Registratie: April 2005
  • Laatst online: 25-09 20:15
Sinds een aantal dagen ben ik bezig met een programma in Visual Basic 2008.
Dit programma moet straks via RS232 een digitale videorecorder aan sturen.

Het grootste probleem wat momenteel speelt is het kunnen versturen van een hexadecimale string naar de seriële poort.

De fout speelt zich af in deze functie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
' Calculate the checksum for the given hex string
    Public Function sendCommand(ByVal ByteArray) As Byte
        Dim checkSum = 0
        Dim NumberOfBytes As Integer = (ByteArray.Length - 1)

        For i = 0 To NumberOfBytes
            checkSum = (checkSum + ByteArray(i)) And 255
        Next

        ReDim ByteArray(NumberOfBytes + 1)
        ByteArray(NumberOfBytes) = Hex(checkSum)

        SerialPort1.Open()
        SerialPort1.Write(ByteArray, 0, ByteArray.Length)
        SerialPort1.Close()
    End Function


En wel op deze regel:
code:
1
SerialPort1.Write(ByteArray, 0, ByteArray.Length)


VB geeft dan de volgende foutmelding:
Overload resolution failed because no Public 'Write' can be called with these arguments:

'Public Sub Write(buffer As Byte(), offset As Integer, count As Integer)':
Argument matching parameter 'buffer' cannot convert from 'Object()' to 'Byte()'.

'Public Sub Write(buffer As Char(), offset As Integer, count As Integer)':
rgument matching parameter 'buffer' cannot convert from 'Object()' to 'Char()'.
Nu heb ik het object 'SerialPort1' op public gezet (kijkend naar het stukje 'public' in de foutmelding), maar dit veranderd niks aan de foutmelding.

Mijn vraag:
A) Wat is de reden dat dit gebeurd?
B) Wat is de oplossing?

Alvast bedankt!

Doe maar een onsje meer...


Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Je hebt geen type voor ByteArray (input parameter) opgegeven en dan gaat VB.NET uit van een object.
Uit m'n hoofd als je er 'ByVal byteArray() as Byte' van maakt dan zal het als een array van het type byte worden gezien.

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • Intheweb
  • Registratie: April 2005
  • Laatst online: 25-09 20:15
Dat had ik ook gedaan, 'As Byte' toevoegen. Alleen regent het dan opeens foutmeldingen:
Afbeeldingslocatie: http://peter.intheweb.nl/got/pgr/vb_probleem.JPG

Doe maar een onsje meer...


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 11:37

Creepy

Tactical Espionage Splatterer

Dan ga je daar vervolgens mee aan de slag? Het gros van de foutmeldingen zijn vrij duidelijk. Je gebruikt een byte (geen array dus) terwijl je die als array van bytes wilt behandelen. Dat moet je toch wel zelf kunnen oplossen?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Intheweb
  • Registratie: April 2005
  • Laatst online: 25-09 20:15
Jou reactie zorgde wel voor de oplossing, ik voegde dit () toe en weg waren alle problemen :/

En daar zat ik dan uren naar te kijken... maar goed het werkt. Thanks.

Doe maar een onsje meer...


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Je weet dat in de MSDN een (minimale) VB tutorial en VB reference zit?
(Development Tools --> Visual Studio --> Visual Basic).

If it isn't broken, fix it until it is..


  • Intheweb
  • Registratie: April 2005
  • Laatst online: 25-09 20:15
Ja, dat weet ik en daar maak ik ook erg veel gebruik van, alleen kwam ik dit niet tegen of las ik erover heen.

Programma is in ieder geval opgeleverd. :)

Doe maar een onsje meer...

Pagina: 1