Wij moeten voor een project een testomgeving maken in VB6.0 (waar wij nog niks van ervaring in hebben => dit is ons eerste ontwerp) waar we foto's (die in een picturebox gezet wordt) willen doorzenden via de seriele poort (COM1) naar een IC (een FPGA, voorlopig zenden we ze direct terug => zender=ontvanger) die ze bewerkt en terugzendt. Na een beetje programmeren en uitzoeken kunnen we al 1 pixel uit een foto halen en deze doorsturen via de poort en ontvangen en op het scherm zetten. We gebruiken volgende functie voor het terugkrijgen van de pixel uit de foto:
waarde = Picture_send.Point(a, b)
*****************************************
uit deze long halen we de RGB kleuren via
'uit een kleur dat van type LONG is halen wij de waarde van de RODE kleur die zich in de pixel bevindt
Private Function getRed(colour As Long) As Integer
getRed = Int(colour Mod 256)
End Function
'uit een kleur dat van type LONG is halen wij de waarde van de GROENNE kleur die zich in de pixel bevindt
Private Function getGreen(colour As Long) As Integer
getGreen = Int((colour / 256) Mod 256)
End Function
'uit een kleur dat van type LONG is halen wij de waarde van de BLAUWE kleur die zich in de pixel bevindt
Private Function getBlue(colour As Long) As Integer
getBlue = Int((colour / 256) / 256)
End Function
****************************************
en zenden ze door via de procedure:
Private Sub sending(data As Integer)
MSComm1.Output = Chr(data)
End Sub
****************************************
(alle communicatievariabelen zijn gedecl. en geinit.)
=> deze combinatie werkt perfect!!!!!
Wanneer we nu de ganse foto pixel per pixel willen inlezen en doorsturen doormiddel van 2 for-lussen en dezelde herkeningsfunctie en sending() procedure willen gebruiken geeft ie een foutmelding (terwijl hij vroeger voor 1 pixel wel werkte) ...
ie geeft de volgende foutmelding:
RUN TIME ERROR '5':
INVALID PROCEDURE CALL OR ARGUMENT
en verwijst in ons programma naar =>
MSComm1.Output = Chr(getRed(waarde))
Aangezien dit ons eerste echte source code is in VB zijn alle tips welkom ... alvast merci voor de hulp!!
waarde = Picture_send.Point(a, b)
*****************************************
uit deze long halen we de RGB kleuren via
'uit een kleur dat van type LONG is halen wij de waarde van de RODE kleur die zich in de pixel bevindt
Private Function getRed(colour As Long) As Integer
getRed = Int(colour Mod 256)
End Function
'uit een kleur dat van type LONG is halen wij de waarde van de GROENNE kleur die zich in de pixel bevindt
Private Function getGreen(colour As Long) As Integer
getGreen = Int((colour / 256) Mod 256)
End Function
'uit een kleur dat van type LONG is halen wij de waarde van de BLAUWE kleur die zich in de pixel bevindt
Private Function getBlue(colour As Long) As Integer
getBlue = Int((colour / 256) / 256)
End Function
****************************************
en zenden ze door via de procedure:
Private Sub sending(data As Integer)
MSComm1.Output = Chr(data)
End Sub
****************************************
(alle communicatievariabelen zijn gedecl. en geinit.)
=> deze combinatie werkt perfect!!!!!
Wanneer we nu de ganse foto pixel per pixel willen inlezen en doorsturen doormiddel van 2 for-lussen en dezelde herkeningsfunctie en sending() procedure willen gebruiken geeft ie een foutmelding (terwijl hij vroeger voor 1 pixel wel werkte) ...
ie geeft de volgende foutmelding:
RUN TIME ERROR '5':
INVALID PROCEDURE CALL OR ARGUMENT
en verwijst in ons programma naar =>
MSComm1.Output = Chr(getRed(waarde))
Aangezien dit ons eerste echte source code is in VB zijn alle tips welkom ... alvast merci voor de hulp!!