Springen naar inhoud


- - - - -

Hoe een leddisplay aansturen?

Led VB.Net RS232

  • Log in a.u.b. om te beantwoorden
Er zijn 162 reacties in dit onderwerp

#61 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 614 berichten
    Laatst bezocht 16 aug 2018 17:25

Geplaatst op 14 december 2010 - 17:40

Het mooie van een klasse is dat alle private variabelen beschermd zijn van de boze buitenwereld.

#62 Swets

Swets

    Professional Developer

  • Leden
  • PipPipPipPip
  • 367 berichten
    Laatst bezocht 22 feb 2018 16:36
  • LocatieKrimpen a/d IJssel

Geplaatst op 15 december 2010 - 17:31

Visual Basic Code:
leddisp.Clear()
leddisp.Graphics.DrawRectangle(New Pen(leddisp.Color1), 0, 0, ctr, ctr)


even , ik ben nu bezig het te begrijpen...   die leddisp.clear() die heb je gemaakt in die klasse , maar waar komt die leddisp.Graphics vandaan?

#63 Swets

Swets

    Professional Developer

  • Leden
  • PipPipPipPip
  • 367 berichten
    Laatst bezocht 22 feb 2018 16:36
  • LocatieKrimpen a/d IJssel

Geplaatst op 16 december 2010 - 00:35

josk79 zei:

Over serial.read: Moet je eerst nog maar even zelf proberen, want heb nu geen tijd om er naar te kijken.

heb je alweer tijd?  
Of iemand anders natuurlijk....  

dus hoe lees ik in visualbasic 2010 via de serialport bytes terug?

Code:
HSEROUT ["ascii:",ascii_checksum," checksum:",checksum,13]


vanuit me electronica (de Pic micro controller) doe ik het bovenstaande...

dus dat verzend via de seriele poort  de volgende string:
"ascii:"en dan een getal "checksum:" en dan een getal, en dan een return..

maar nu aan de visual basic kant....   daar krijg ik het maar niet voor elkaar?

dus eigenlijk lezen tot je CHR(13) zie?

#64 Swets

Swets

    Professional Developer

  • Leden
  • PipPipPipPip
  • 367 berichten
    Laatst bezocht 22 feb 2018 16:36
  • LocatieKrimpen a/d IJssel

Geplaatst op 16 december 2010 - 17:10

nmm niemand....   jammer....

#65 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 614 berichten
    Laatst bezocht 16 aug 2018 17:25

Geplaatst op 16 december 2010 - 17:46

ik weet het niet uit mijn hoofd en heb geen serieel apparaatje om het te testen maar even kijkend bij de intellisense denk ik dat je hier een eind mee komt:

event DataReceived; wordt getriggerd als nieuwe data binnenkomt.
method ReadExisting; alle beschikbare data ophalen.

er is ook een method ReadLine, maar als je die gebruikt en er komt geen eindkarakter(s) binnen (in te stellen middels NewLine) zal je applicatie blijven wachten tot de data beschikbaar is. Evt kun je hem gebruiken icm ReadTimeout.

#66 Swets

Swets

    Professional Developer

  • Leden
  • PipPipPipPip
  • 367 berichten
    Laatst bezocht 22 feb 2018 16:36
  • LocatieKrimpen a/d IJssel

Geplaatst op 17 december 2010 - 00:08

Is aardig gelukt.... met:
Visual Basic Code:
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
		TextBox1.Text = SerialPort1.ReadExisting
	End Sub

kon ik goed zien in het visual basic programma wat de PIC voor checksum uitgerekend had,  en of de checksum welke ik mee verzond goed aangekomen was, en als die 2 het zelfde zij, wordt de data naar het scherm gekopieert, anders genegeerd.....

en ik heb geen verminkte beeld meer gezien... alleen soms slaat die een beeld over nu.... maar das niet zo heel erg....


nu de volgende stap...

ik heb nu 6 van die panelen naast elkaar bevestigt...

2 breed x 3 hoog...

dus
------------------------------------------------------------------------------------------------
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
-------------------------------------------------------------------------------------------------
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
-------------------------------------------------------------------------------------------------
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
|oooooooo oooooooo oooooooo oooooooo|oooooooo oooooooo oooooooo oooooooo|
-------------------------------------------------------------------------------------------------

nu zou het leuk zijn als ik die op 1 of andere manier aan kon sturen....
denk dat ik alles  het zelfde moet houden....
denk alleen dat ik een start1 en een start2 enz moet meegeven...
maar verder het zelfde?

misschien..als je ergens opgeef hoeveel pixels het display is...  Pff  tja  weet het ff ook niet....  moeilijk allemaal...  ;)

Jullie enig idee hoe ik het beste aan kan pakken?

#67 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 614 berichten
    Laatst bezocht 16 aug 2018 17:25

Geplaatst op 17 december 2010 - 00:57

Ga je de 6 displays aansturen vanuit 1 microcontroller of vanuit 6?

Indien je vanuit 6 gaat aansturen wordt het lastig, moet je waarschijnlijk ook de displays enigzins synchroniseren, anders lopen de schermen niet gelijk op (verspringt eerst display 1, dan 2, dan 3, dan 4, dan 5, dan 6)

Indien je vanuit 1 gaat aansturen is het niet zo moeilijk.

#68 Swets

Swets

    Professional Developer

  • Leden
  • PipPipPipPip
  • 367 berichten
    Laatst bezocht 22 feb 2018 16:36
  • LocatieKrimpen a/d IJssel

Geplaatst op 17 december 2010 - 09:30

elk scherm heeft zijn eigen micro controller....  

Ik vraag me af als we de data op dezelfde manier verzenden, alleen allemaal met een eigen start... dus 6 keer data versturen...  achter elkaar,,, of je dat gaat zien in het scherm....
en anders  6 x de data verzenden,  en 1 update commando, welke voor elk scherm het zelfde is....

maar ik vraag me af of je het zie als je gewoon elk scherm zijn data verstuur... of je ziet of de ene eerder opgebouwd wordt als de ander....

#69 Swets

Swets

    Professional Developer

  • Leden
  • PipPipPipPip
  • 367 berichten
    Laatst bezocht 22 feb 2018 16:36
  • LocatieKrimpen a/d IJssel

Geplaatst op 21 december 2010 - 17:26

jammer... nog nix... lol..  

want dit werkt allemaal lekker nu.... maar nu iets bruikbaars zien te maken....
Dat je ook iets van een voorstelling op kan slaan, en laden....  ofzo....

maar ik heb ff geen idee hoe ik beginnen moet...?

#70 Swets

Swets

    Professional Developer

  • Leden
  • PipPipPipPip
  • 367 berichten
    Laatst bezocht 22 feb 2018 16:36
  • LocatieKrimpen a/d IJssel

Geplaatst op 23 december 2010 - 11:56

jammer... ben zelf al aan het rommelen geweest.... maar ik kom er niet uit....

#71 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4382 berichten
    Laatst bezocht 26 nov 2018 06:49
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 23 december 2010 - 13:57

Hmm last van in jezelf spreken , lol :P
Even geduld , er zal wel iemand reageren, maar ja met die sneeuw zullen de meeste wel ingesneeuwd zijn en wat later reageren;)
Zit jij soms ook op schematheek omdat ik dat project bekend voor komt?

#72 Swets

Swets

    Professional Developer

  • Leden
  • PipPipPipPip
  • 367 berichten
    Laatst bezocht 22 feb 2018 16:36
  • LocatieKrimpen a/d IJssel

Geplaatst op 23 december 2010 - 17:06

Ik zit ook op schematheek, en circuitsonline...

maar er zijn vrij veel mensen met die displays,  BACO uit ijmuiden verkocht ze voor 5 euro per stuk..., schijnt zo'n informatie boord op een of ander station geweest...

en tja..mischien een beetje ongeduldig...   maar ja..  
in het begin ging het allemaal lekker snel.... :P

heb gisteren avond van alles geprobeerd... maar krijg het maar niet voor elkaar....
Ik weet nog gewoon te weinig van visual basic 2010...

zit er toch maar weer aan te denken visualbasic 6.0 er weer op t zetten...  maar als ik dat doe leer ik 2010 nooit...

#73 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4382 berichten
    Laatst bezocht 26 nov 2018 06:49
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 23 december 2010 - 21:31

Dan ken ik jou van schematheek, heb daar dezelfde naam.
Had ook al gekeken bij Baco of hij ze nog had , die panelen, maar helaas Nietzsche meer.

#74 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 614 berichten
    Laatst bezocht 16 aug 2018 17:25

Geplaatst op 23 december 2010 - 22:50

Swets, wat is nu precies je vraag?

#75 Swets

Swets

    Professional Developer

  • Leden
  • PipPipPipPip
  • 367 berichten
    Laatst bezocht 22 feb 2018 16:36
  • LocatieKrimpen a/d IJssel

Geplaatst op 24 december 2010 - 00:00

:P   wat is de vraag nu eigenlijk   :o
eigenlijk is de vraag.... leer mij ff visual basic 2010



ja nu iets wat meerdere strings maakt voor verschillende displays....
ik heb er nu even 2x3  displays....   dus 64x48 pixels...

dus ik heb al zitten rommelen met die klasse leddisplay 6 x te gebruiken...    maar kom er echt niet uit....

nog mooier zou zijn, dat je ergens in kan geven dat het totale display bijvoorbeeld 64x48 pixels word...  en dat de software dan gelijk weet ...ooo das 2 displays breed, en 3 displays hoog...  en dat die dan de data van links boven naar rechts onder gaat verzenden.....

display 1 | display 2
-----------------------
display 3 | display 4
-----------------------
display 5 | display 6

en dat die dan de data op de zelfde manier gaat verzenden als met 1 display (wat nu goed werkt, met de cheksum enzo).... maar dan naar alle displays
maar bij het is display een S1 (start1) en bij het 2de display een S2 ... enz..

maar als je bij voorbeeld  opgeef dat het display 128x16 pixel word...
dat dan vanzelf weet dat de data  als volgt verzonden moet worden...

display 1 | display 2 | display 3| display 4| display 5 | display 6

en misschien aan het eind, als de data naar alle displays verzonden is, een UPDATE commando, die voor alle schermen het zelfde is..., en dat ze dan pas de nieuwe data (allemaal op het zelfde moment) laten zien...

maar dit zit ik ter plekken ff te verzinnen.... ik ben bezig geweest om 64x48 aan de gang te krijgen... maar dat werd al een zooitje... en leek nergens op...

en ook nog iets om beelden te maken....
dus misschien  dat je pixels dmv de muis aan/uit kan zetten... en dan iets van save frame...
denk dat dat iets moet worden met 2 arrays ? x,y van de pixels?



en dan iets van een run die al de gemaakte frames weer laat zien....
en ja.. zou ook leuk zijn als ik zo verhaaltje met frames dan ook nog zou kunnen saven....

althans...  dit zit ik allemaal maar terplekke ff uit me duim te zuigen....  misschien zijn er betere ideeen?

#76 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 614 berichten
    Laatst bezocht 16 aug 2018 17:25

Geplaatst op 25 december 2010 - 23:26

Voorbeeldje:

Ik heb de klasse LedDisplay omgebouwd naar de klasse LedMozaiek:

Visual Basic Code:
Public Class LedMozaiek
	'Deze klasse representeert nu een mozaiek van nX bij nY leddisplays

	Public Const dispWidth As Integer = 32 'Breedte van 1 leddisplay
	Public Const dispHeight As Integer = 16 'Hoogte van 1 leddisplay

	Public Color0 As Color = Color.Black
	Public Color1 As Color = Color.Red

	Dim _bitmap As Bitmap
	Dim _graphics As Graphics

	Public ReadOnly Property Bitmap() As Bitmap
		Get
			Return _bitmap
		End Get
	End Property
	Public ReadOnly Property Graphics() As Graphics
		Get
			Return _graphics
		End Get
	End Property

	'Aantal leddisplays naast elkaar
	Dim _nX As Integer
	Public ReadOnly Property nX() As Integer
		Get
			Return _nX
		End Get
	End Property

	'Aantal leddisplays boven elkaar
	Dim _nY As Integer
	Public ReadOnly Property nY() As Integer
		Get
			Return _nY
		End Get
	End Property


	Sub New(ByVal nX As Integer, ByVal nY As Integer)
		_nX = nX
		_nY = nY
		_bitmap = New Bitmap(nX * dispWidth, nY * dispHeight)
		_graphics = Graphics.FromImage(Bitmap)
		Clear()
	End Sub

	'Pixel tekenen of lezen 
	Default Public Property Pixel(ByVal x As Integer, ByVal y As Integer) As Boolean
		Get
			'Return true als roodwaarde > 50%
			Return Bitmap.GetPixel(x, y).R > 127
		End Get
		Set(ByVal value As Boolean)
			Bitmap.SetPixel(x, y, If(value, Color1, Color0))
		End Set
	End Property

	'Maakt het plaatje leeg
	Public Sub Clear()
		Graphics.Clear(Color0)
	End Sub

	Public Function ToHexString(ByVal dispx As Integer, ByVal dispy As Integer) As String

		'Returnt de hexadecimale string die per rs232 kan worden verzonden
		ToHexString = ""
		For i = 0 To dispHeight - 1
			For j = 0 To dispWidth - 1 Step 8
				Dim byt As Integer = 0
				For k = 0 To 7
					If Pixel((dispx * dispWidth) + j + k, (dispy * dispHeight) + i) Then byt += 2 ^ (7 - k)
				Next
				ToHexString &= Conversion.Hex(byt).PadLeft(2, "0"c)
			Next
		Next
	End Function

End Class


Als je een nieuw mozaiek aanmaakt geef je aan hoeveel leddisplays er naast elkaar en boven elkaar staan, bijv:

Visual Basic Code:
	Dim lm As New LedMozaiek(2, 2)

	'Een mozaiek van 2x2 leddisplays


Ik heb de functie ToHexString aangepast zodat hij de hexstring van slechts 1 van de leddisplays retourneerd. Ik heb de start er ook uitgesloopt.

Om dan een string op te bouwen voor alle leddisplays kun je het bijvoorbeeld zo doen:

Visual Basic Code:
		Dim str As String = ""
		For jy = 0 To lm.nY - 1
			For jX = 0 To lm.nX - 1
				'Voor iedere hexstring de startcode, bijv: start00
				str &= "start" & (jX + lm.nY * jy).ToString.PadLeft(2, "0"c) & ":"
				'Vervolgens de hexstring gevolgd door <cr><lf>
				str &= lm.ToHexString(jX, jy) & vbCrLf
			Next
		Next
		txtbox.Text = str


Je kunt het testen met mijn pong voorbeeld, alleen moet je dan in de code de variabele "leddisp" vervangen door "lm".
Je kunt in ponggame de resolutie aanpassen.

#77 Swets

Swets

    Professional Developer

  • Leden
  • PipPipPipPip
  • 367 berichten
    Laatst bezocht 22 feb 2018 16:36
  • LocatieKrimpen a/d IJssel

Geplaatst op 26 december 2010 - 00:19

bedankt.... ga het gelijk bekijken.....

en ik wil het begrijpen....
maar daar kan jij verder weinig aan doen... dus ik zal wel met vragen komen...  

dus nog een keer de vraag....

Visual Basic Code:
[code=picbasic]
leddisp.Clear()
leddisp.Graphics.DrawRectangle(New Pen(leddisp.Color1), 0, 0, ctr, ctr)


die leddisp.clear() die heb je gemaakt in die klasse , maar waar komt die leddisp.Graphics vandaan?

#78 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 614 berichten
    Laatst bezocht 16 aug 2018 17:25

Geplaatst op 26 december 2010 - 00:35

System.Drawing.Graphics is onderdeel van het .Net framework. Het kan gebruikt worden om te tekenen.

Klik maar eens met de rechtermuisknop op Graphics bij:

Visual Basic Code:
dim _graphics as Graphics


en klik dan op "Go to definition". Dan zie je in de object browser alle Methods en Properties van Graphics. Zoals: DrawLine, DrawEllipse, etc...

#79 Swets

Swets

    Professional Developer

  • Leden
  • PipPipPipPip
  • 367 berichten
    Laatst bezocht 22 feb 2018 16:36
  • LocatieKrimpen a/d IJssel

Geplaatst op 27 december 2010 - 16:44

josk79 zei:

System.Drawing.Graphics is onderdeel van het .Net framework. Het kan gebruikt worden om te tekenen.

Klik maar eens met de rechtermuisknop op Graphics bij:

Visual Basic Code:
dim _graphics as Graphics


en klik dan op "Go to definition". Dan zie je in de object browser alle Methods en Properties van Graphics. Zoals: DrawLine, DrawEllipse, etc...

oke bedankt weer....
en hoe weet jij dat van die Graphics?  bestaan daar lijsten van?  ofzo... ..
anders zit ik straks iets te maken, en bestaat het al..  :P

Ik ga kijken of ik dat mozaïk aan de praat kan krijgen, en kijken of ik hem snap...

#80 Jark

Jark

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 560 berichten
    Laatst bezocht 30 jul 2012 13:56

Geplaatst op 27 december 2010 - 16:48

Hallo,

MSDN is een hele handige resource hiervoor --> http://msdn.microsof...g.graphics.aspx. Je kunt de zoekfunctie hiervan gebruiken om achter andere klasses / functionaliteiten etc. te komen.

Mvg,

Jark

#81 Swets

Swets

    Professional Developer

  • Leden
  • PipPipPipPip
  • 367 berichten
    Laatst bezocht 22 feb 2018 16:36
  • LocatieKrimpen a/d IJssel

Geplaatst op 27 december 2010 - 17:25

ga ik ook bekijken..... maar dus om die klasse/functionalteiten te leren en er achter tekomen dat ze bestaan is veel lezen?
en vragen op dit soort forums? of er iets voor bestaat?  

met dat led mozaiek bezig...   maar ik denk dat er ergens in pong nog staat dat het scherm 32x16 is... want ik heb nu op het scherm met display... (welke net zo groot gebleven is als eerst) alleen pong speelt zich nu af op een kwart van het scherm... en alles is een 4x kleiner....)

wel zie ik 4 strings, waar er nu 3 van op 0 blijven staan... maar het scherm is nog maar een kwart....

opgelost....  in de Ponggame stond widht en height nog op 32 x 26...... nu zie ik hem wel over 4 schermen....(althans op me computer...)
en ik zie ook de 4 strings gevuld worden....


ik ga weer ff verder rommelen..... wordt vervolgt...

#82 Swets

Swets

    Professional Developer

  • Leden
  • PipPipPipPip
  • 367 berichten
    Laatst bezocht 22 feb 2018 16:36
  • LocatieKrimpen a/d IJssel

Geplaatst op 06 januari 2011 - 00:27

heb de hardware nu 6x gemaakt, dus nu eens kijken of we het aan de gang krijgen....  

dus wordt vervolgt....

#83 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 614 berichten
    Laatst bezocht 16 aug 2018 17:25

Geplaatst op 06 januari 2011 - 23:05

...ik ben benieuwd!

#84 Swets

Swets

    Professional Developer

  • Leden
  • PipPipPipPip
  • 367 berichten
    Laatst bezocht 22 feb 2018 16:36
  • LocatieKrimpen a/d IJssel

Geplaatst op 12 januari 2011 - 00:31

tja... krijg het nog niet helemaal aan de gang....  en weet niet waar het aan ligt...  das altijd een hoop gedoe met die communicatie...

maar dit verhaal voor 1 scherm werkt...:
Visual Basic Code:
Public Function ToHexString() As String
		Dim MijnChecksum As Byte
		MijnChecksum = 0
		'Returnt de hexadecimale string die per rs232 kan worden verzonden
		ToHexString = Chr(2)
		For i = 0 To bitmap.Height - 1
			For j = 0 To bitmap.Width - 1 Step 8
				Dim byt As Integer = 0
				For k = 0 To 7
					If Pixel(j + k, i) Then byt += 2 ^ (7 - k)
				Next
				ToHexString &= Conversion.Hex(byt).PadLeft(2, "0"c)
				MijnCheckSum = MijnCheckSum Xor byt
			Next
		Next
		ToHexString &= Conversion.Hex(MijnCheckSum).PadLeft(2, "0"c)
	End Function

en dan heb ik dit op me formulier staan:
Visual Basic Code:
 Private Sub ShowLedDisplayOnForm()
		'Tekent het leddisplay op de picturebox in het form
		picbox.Image = New Bitmap(picbox.Width, picbox.Height)
		Dim gr As Graphics = Graphics.FromImage(picbox.Image)
		gr.InterpolationMode = Drawing2D.InterpolationMode.NearestNeighbor
		gr.DrawImage(leddisp.Bitmap, 0, 0, picbox.Image.Width, picbox.Image.Height)

		'Schrijf de hexstring in de textbox in het form
		txtbox.Text = StringChunk(Mid(leddisp.ToHexString, 1, 1), 1)
		txtbox.Text &= StringChunk(Mid(leddisp.ToHexString, 2, 128), ;)
		txtbox.Text &= StringChunk(Mid(leddisp.ToHexString, 130, 2), 2)



		Dim tel As Byte
		If CheckBox1.Checked = True Then
			For tel = 1 To 135
				SerialPort1.Write(Mid(leddisp.ToHexString, tel, 1))
			Next
		End If
	End Sub


Geplaatste afbeelding

en dit is een screenshotje van het scherm...  boven: wat is te zien op het display...  
textbox1 : de data wat naar het disply gestuurd wordt... vierkantje boven aan is de  chr(2)... dan de data per regel  de 03 is de checksum...

kleine textbox.. checksum van het visualbasic programma, en de checksum uit de electronica (terug verzonden via de compoort)

maar dit werkt dus prima...

maar nu die led mozaiek...

Visual Basic Code:
 Private Sub tmr_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmr1.Tick

		'Update het pong-spel
		Pong.Update()

		'Tekenen op leddisplay
		lm.Clear()
		lm.Bitmap.SetPixel(Pong.Ball.X, Pong.Ball.Y, lm.Color1)
		lm.Graphics.DrawLine(New Pen(lm.Color1), Pong.Player1.X, Pong.Player1.Y, Pong.Player1.X, Pong.Player1.Y + Pong.Player1.Height - 1)
		lm.Graphics.DrawLine(New Pen(lm.Color1), Pong.Player2.X, Pong.Player2.Y, Pong.Player2.X, Pong.Player2.Y + Pong.Player2.Height - 1)

		Dim str As String = ""
		For jy = 0 To lm.nY - 1
			For jX = 0 To lm.nX - 1
				'Voor iedere hexstring de startcode, bijv: start00
				str &= Chr(2) '(jX + lm.nY * jy).ToString.PadLeft(2, "0"c) & ":"
				'Vervolgens de hexstring gevolgd door <cr><lf>
				str &= lm.ToHexString(jX, jy) & vbCrLf
			Next
		Next
		TextBox1.Text = str


		'Schrijf de hexstring in de textbox in het form
		' TextBox1.Text = StringChunk(Mid(str, 1, 1), 1)
		' TextBox1.Text &= StringChunk(Mid(str, 2, 128), ;)
		' TextBox1.Text &= StringChunk(Mid(str, 130, 2), 2)


		Dim tel As Byte
		If CheckBox1.Checked = True Then
			For tel = 1 To 135
				SerialPort1.Write(Mid(str, tel, 1))
			Next
		End If

		ShowLedDisplayOnForm()

	End Sub

Geplaatste afbeelding

dus op het scherm gaat het goed...  alleen het display reageerd helemaal niet...
en dan heb ik de startcode even het zelfde gemaakt als in de enkle versie  dus chr(2)...

dus de sofware in de elekctronica is het zelfde als bij de enkele goed werkende versie, dus de mozaiek versie zend de data anders naar het scherm...   kan het alleen nog niet vinden....

misschien dat iemand anders het ziet?

#85 Swets

Swets

    Professional Developer

  • Leden
  • PipPipPipPip
  • 367 berichten
    Laatst bezocht 22 feb 2018 16:36
  • LocatieKrimpen a/d IJssel

Geplaatst op 17 januari 2011 - 00:22

morgen eerst maar eens een RS232 sniffer bouwen....

kijken wat er nu echt via de compoort naar het display gaat...   want ik wordt gek.....    

Ik snap niet waarom die het bij het ene programma het wel doet,  en bij het andere programma niet?

wordt vervolgd...

#86 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 614 berichten
    Laatst bezocht 16 aug 2018 17:25

Geplaatst op 20 januari 2011 - 23:18

kom je al wat verder?

helaas ben ik de komende week niet bereikbaar om te helpen, maar heb er alle vertrouwen in dat je het spulletje aan de praat krijgt!

#87 Swets

Swets

    Professional Developer

  • Leden
  • PipPipPipPip
  • 367 berichten
    Laatst bezocht 22 feb 2018 16:36
  • LocatieKrimpen a/d IJssel

Geplaatst op 21 januari 2011 - 00:05

edit: tuurlijk krijg ik het aan de gang....  blijf net zo lang door gaan totdat het werkt....   toch...  

maar ja... ben alleen met nog zo veel dingen tegelijk bezig...  en dan nog werken erbij...  ik wordt haast overspannen van me hobby's .   :)


Mare het wil nog niet werken,
in dit onderstaande moet al wat fout zitten....

ten eerste zie ik in de tekstbox start05 niet?

ik zie het onderstaande :
Code:
start00:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
start01:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
start03:0000000000000000000000000000000000000000000000000000000000000000200000002000000020000000200000400000000000000000000000000000000040
start04:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000040000000404
start06:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
start07:0000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004


hier onder het stukje programma :

Visual Basic Code:
Private Sub tmr_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmr1.Tick

		'Update het pong-spel
		Pong.Update()

		'Tekenen op leddisplay
		lm.Clear()
		lm.Bitmap.SetPixel(Pong.Ball.X, Pong.Ball.Y, lm.Color1)
		lm.Graphics.DrawLine(New Pen(lm.Color1), Pong.Player1.X, Pong.Player1.Y, Pong.Player1.X, Pong.Player1.Y + Pong.Player1.Height - 1)
		lm.Graphics.DrawLine(New Pen(lm.Color1), Pong.Player2.X, Pong.Player2.Y, Pong.Player2.X, Pong.Player2.Y + Pong.Player2.Height - 1)
		Dim tel As Byte
		Dim str As String = ""
		For jy = 0 To lm.nY - 1
			For jX = 0 To lm.nX - 1
				'Voor iedere hexstring de startcode, bijv: start00
				str &= "start" & (jX + lm.nY * jy).ToString.PadLeft(2, "0"c) & ":"
				'Vervolgens de hexstring gevolgd door <cr><lf>
				str &= lm.ToHexString(jX, jy) & vbCrLf


				If CheckBox1.Checked = True Then
					For tel = 1 To 135
						SerialPort1.Write(Mid(str, tel, 1))
					Next tel
				End If

				ShowLedDisplayOnForm()


			Next jX
		Next jy
		TextBox1.Text = str


		'Schrijf de hexstring in de textbox in het form
		' TextBox1.Text = StringChunk(Mid(str, 1, 1), 1)
		' TextBox1.Text &= StringChunk(Mid(str, 2, 128), :D
		' TextBox1.Text &= StringChunk(Mid(str, 130, 2), 2)


		'Dim tel As Byte
		'If CheckBox1.Checked = True Then
		'For tel = 1 To 135
		'SerialPort1.Write(Mid(str, tel, 1))
		'Next
		'End If

		' ShowLedDisplayOnForm()

	End Sub


verder moet er nog iets fout zijn, want als ik naar het gene wat naar de hardware verzonden wordt bekijkt , (met een rs 232 sniffer) zie ik het onderstaande langs komen (klik voor groter plaatje!)

Geplaatste afbeelding

Ik zie hier alleen maar start00:   dus op een of andere manier gaat dat verzenden fout....? en ook zo raar dat ik de CR & LF niet terug?

en nu vraag ik me verder ook af of het goed gaat met die checksum... bij het enkele display had ik het zo:

Visual Basic Code:
Public Function ToHexString() As String
		Dim MijnChecksum As Byte
		MijnChecksum = 0
		'Returnt de hexadecimale string die per rs232 kan worden verzonden
		ToHexString = Chr(2)
		For i = 0 To bitmap.Height - 1
			For j = 0 To bitmap.Width - 1 Step 8
				Dim byt As Integer = 0
				For k = 0 To 7
					If Pixel(j + k, i) Then byt += 2 ^ (7 - k)
				Next
				ToHexString &= Conversion.Hex(byt).PadLeft(2, "0"c)
				MijnCheckSum = MijnCheckSum Xor byt
			Next
		Next
		ToHexString &= Conversion.Hex(MijnCheckSum).PadLeft(2, "0"c)
	End Function


bij ledmozaiek heb ik het zo:

Visual Basic Code:
Public Function ToHexString(ByVal dispx As Integer, ByVal dispy As Integer) As String

		'Returnt de hexadecimale string die per rs232 kan worden verzonden
		Dim MijnChecksum As Byte
		MijnChecksum = 0
		ToHexString = ""
		For i = 0 To dispHeight - 1
			For j = 0 To dispWidth - 1 Step 8
				Dim byt As Integer = 0
				For k = 0 To 7
					If Pixel((dispx * dispWidth) + j + k, (dispy * dispHeight) + i) Then byt += 2 ^ (7 - k)
				Next
				ToHexString &= Conversion.Hex(byt).PadLeft(2, "0"c)
				MijnCheckSum = MijnCheckSum Xor byt
			Next
		Next
		ToHexString &= Conversion.Hex(MijnChecksum).PadLeft(2, "0"c)
	End Function

maar gaat het dan goed met die checksum...  want wel naar elk hardware display moet zijn eigen checksum krijgen....

#88 Swets

Swets

    Professional Developer

  • Leden
  • PipPipPipPip
  • 367 berichten
    Laatst bezocht 22 feb 2018 16:36
  • LocatieKrimpen a/d IJssel

Geplaatst op 25 januari 2011 - 08:53

maar wachten tot je weer terug ben...

#89 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3593 berichten
    Laatst bezocht gisteren, 20:06
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 25 januari 2011 - 11:15

Swets zei:

edit: tuurlijk krijg ik het aan de gang....  blijf net zo lang door gaan totdat het werkt....   toch...  

maar ja... ben alleen met nog zo veel dingen tegelijk bezig...  en dan nog werken erbij...  ik wordt haast overspannen van me hobby's .   B)




B)

#90 Swets

Swets

    Professional Developer

  • Leden
  • PipPipPipPip
  • 367 berichten
    Laatst bezocht 22 feb 2018 16:36
  • LocatieKrimpen a/d IJssel

Geplaatst op 11 februari 2011 - 23:15

week is om....    ;)     kom op met je hulp...  alleen kom ik er weer niet uit...





Ook met taq Led, VB.Net, RS232 voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


Untitled 1

Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)