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

#31 Swets

Swets

    Professional Developer

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

Geplaatst op 13 november 2010 - 23:36

oja pong doet het ook:

Geplaatste afbeelding Geplaatste afbeelding
Geplaatste afbeelding Geplaatste afbeelding

ben ook met dat gif verhaal bezig, maar dat wil nog niet erg lukken...

#32 Swets

Swets

    Professional Developer

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

Geplaatst op 25 november 2010 - 18:22

hmmm...  hardeschijf gewist....  alles weg.... gelukkig kan ik hier nog het één en ander terug vinden....  pff...

#33 Vozzie

Vozzie

    Moderator

  • Leden
  • PipPipPipPipPipPipPip
  • 1855 berichten
    Laatst bezocht 12 jul 2017 13:15
Inzender

Geplaatst op 25 november 2010 - 18:23

auch

#34 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3596 berichten
    Laatst bezocht gisteren, 20:03
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 26 november 2010 - 08:58

Swets zei:

hmmm...  hardeschijf gewist....  alles weg....


Handig zo'n backup hé  B)

Nee da's balen... hopelijk ben je niet al te veel gegevens kwijt  http://www.vbib.be/p...tyle_emoticons/default/icon_exclaim.gif

#35 Swets

Swets

    Professional Developer

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

Geplaatst op 26 november 2010 - 12:16

RedThread zei:

Swets zei:

hmmm...  hardeschijf gewist....  alles weg....


Handig zo'n backup hé  B)

Nee da's balen... hopelijk ben je niet al te veel gegevens kwijt  http://www.vbib.be/p...tyle_emoticons/default/icon_exclaim.gif

nou  tis eigenlijk nog dommer....  ik had  problemen met die computer... dus ik dacht zal hem eens een keer formateren, en xp er opnieuw opzetten....   en ik heb zo losse USB harddisk....  dus alles wat ik bewaren wilde erop ge kopieert... (ook een paar dagen mee bezig geweest.... wilde zeker weten dat ik achteraf niet iets kwijt was)

ga ik windows er opnieuw opzetten....  dus wil me harde schijf formateren....
maar ik had die USB schijf er niet uit gehaald.....   formateer ik die ook per ongeluk... B)  slim he....  nog alles kwijt...   slim...

#36 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3596 berichten
    Laatst bezocht gisteren, 20:03
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 26 november 2010 - 12:43

Al geprobeerd met tools zoals recuva of andere om je data terug te halen van je usb schijf ?

#37 Swets

Swets

    Professional Developer

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

Geplaatst op 06 december 2010 - 00:27

Erg is dat zeg....  

Het visual basic programma heb ik weer, kon ik zo weer knippen/plakken vanuit het forum....

Alleen krijg ik nu het programma in de Electronica (in de PIC microcontroller) niet meer goed....

:)

erg he... geen back up  en alles weg....    ik ga denk ik maar een andere hobby zoeken....   ;)

#38 Swets

Swets

    Professional Developer

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

Geplaatst op 06 december 2010 - 00:31

oja   nog een vraag....

nu verschijnt in die txtbox die hele string die naar de  seriele port wordt gestuurd achter elkaar....

maar is het moeilijk om die om de 8 karakters (1 regel op display)....  dan kan ik misschien makelijker zien waar het fout gaat...

#39 Robbert

Robbert

    Senior Developer

  • Leden
  • PipPipPip
  • 100 berichten
    Laatst bezocht 05 mei 2013 10:03

Geplaatst op 06 december 2010 - 09:27

Als je na die format niks meer met die schijf heb uitgevreten is de kans aanwezig dat de partities te herstellen zijn

#40 Swets

Swets

    Professional Developer

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

Geplaatst op 06 december 2010 - 11:27

ook bij een "lange"format?   dus ik heb niet ff snel gedaan....

maar tis nu toch al te laat, want ik heb daarna nog dingen gedaan....

#41 Swets

Swets

    Professional Developer

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

Geplaatst op 06 december 2010 - 13:11

Toch nog ff een vraag...  kan je zo klasse ook opslaan, en dan ook in een ander project gebruiken....  zoals die leddisplay aanstuur klasse...

#42 Robbert

Robbert

    Senior Developer

  • Leden
  • PipPipPip
  • 100 berichten
    Laatst bezocht 05 mei 2013 10:03

Geplaatst op 06 december 2010 - 13:38

Een klasse kan je prima hergebruiken
Je zou er ook een dll van kunnen maken en die bijvoorbeeld beschikbaar stellen aan andere ontwikkelaars
Die kunnen dan wel gebruik maken van je klasse maar de originele broncode niet veranderen

Trouwens wel een cool project ;)
Ben zelf ook ooit eens wezen prutsen met Pic's

#43 Swets

Swets

    Professional Developer

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

Geplaatst op 06 december 2010 - 14:51

hoe zou ik het beste een checksum kunnen maken?     iets van elk byte  bij elkaar optellen ofzo,   en die waarde dan meezenden?

zodat ik zeker weet dat ik geen data mis na het overzenden?

#44 josk79

josk79

    Master Developer

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

Geplaatst op 06 december 2010 - 19:29

Als checksum zie je vaak alle bytes bij elkaar ge-xor-ed. Dan kun je de checksum als hex (bijv. 5F) toevoegen aan de string.

Bijv. in de Function ToHexString(): Kun je een integer bijhouden waar je iederekeer
Visual Basic Code:
MijnCheckSum=MijnCheckSum XOR byt
doet.

En dan aan het eind:

Visual Basic Code:
ToHexString &= Conversion.Hex(MijnCheckSum).PadLeft(2, "0"c)



Een string in groepen van 8 knippen kan met:

Visual Basic Code:
	Function StringChunk(ByVal str As String, Optional ByVal ChunkLength As Integer = 8, Optional ByVal separateby As String = vbCrLf) As String
		Dim sb As New System.Text.StringBuilder
		For i = 0 To str.Length Step ChunkLength
			sb.Append(str.Substring(i, Math.Min(str.Length - i, ChunkLength)) & separateby)
		Next
		Return sb.ToString
	End Function



#45 Swets

Swets

    Professional Developer

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

Geplaatst op 06 december 2010 - 21:36

Dan word de function ToHexString zo:?
toch...

en dan verzend hij de cheksum ook als 2 nibbles?
ja..   ff denken hoor....
en start zit ook niet in de cheksum.....

Ik zit nu  even voor de electronica kant....
moet ik nu pfff  hoe zeg ik dat....
tja ik verzend nibbles in een byte..  dus bijvoorbeeld FF 3A  voor 1 byte..

moet ik nu F apart nemen... of FF
Hoop dat ik me probleem duidelijk maak zo...  ;)  volgens mij maak ik het alleen maar vager...

Visual Basic Code:
[code]
Public Function ToHexString() As String
		Dim MijnChecksum As Byte
		MijnChecksum = 0
		'Returnt de hexadecimale string die per rs232 kan worden verzonden
		ToHexString = "start"
		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

End Class



en hoe sla ik zo klasse dan op zodat ik hem in een ander programma weer gebruiken kan?

heb al zitten zoeken?

#46 josk79

josk79

    Master Developer

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

Geplaatst op 06 december 2010 - 23:12

Ten eerste: FF 3A zijn 4 nibbles en dus 2 bytes.

Ten tweede: Je maakt het inderdaad alleen maar vager want ik snap je verhaaltje niet. Even een toelichting op de code:

Visual Basic Code:
Public Function ToHexString() As String
		Dim MijnChecksum As Byte
		MijnChecksum = 0
		ToHexString = "start"
		For i = 0 To bitmap.Height - 1
			For j = 0 To bitmap.Width - 1 Step 8
				Dim byt As Integer = 0
' In onderstaande FOR-loop worden 8 pixels opgevraagd.
' Dit zijn 8 bits, oftewel 2 nibbles, oftewel 1 byte. 
				For k = 0 To 7
					If Pixel(j + k, i) Then byt += 2 ^ (7 - k)
				Next

' De byte (dus tussen 0 en 255) wordt nu naar hexidecimaal omgezet (0-FF).
' PadLeft zorgt ervoor dat de string wordt gevuld met 0-en als de string kleiner is dan 2 karakters.
' Resultaat dus tussen 00-FF

				ToHexString &= Conversion.Hex(byt).PadLeft(2, "0"c)

' We betrekken de byte bij de checksum.

				MijnCheckSum = MijnCheckSum Xor byt
			Next
		Next

' De checksum wordt ook naar hex van 2 karakters omgezet (00-FF).

		ToHexString &= Conversion.Hex(MijnCheckSum).PadLeft(2, "0"c)
	End Function



#47 Swets

Swets

    Professional Developer

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

Geplaatst op 06 december 2010 - 23:52

pff   ja dat dacht ik al.....

Nou  even denken....   In de electronica  komen 2 bytes binnen....   eentje  voor de hoge nibble, en eentje voor de lage nibble...

dus nadat ik start gezien heb,  dan de eerst volgende byte die binnen komt  

daar trek ik 48 van af als de ascii waarde kleiner is als 58 (9 =ascii 57...)  dus als het kleiner is als 58, dan moet het een getal zijn....
en door er 48 van af te trekken, maar ik van de ascii waarden en echt getal....

als hij groter is als 58, is het dus A t/m F, dan trek ik er 55 af....

F=ascii 70.... dus - 55 = 15...


verder als de eerste byte binnen komt, doe ik dus eerst die bovenstaande... om er een echt getal van te maken......
en daarna  als het de eerste is  schuif ik de waarde 4 plaatsen naar links....
(maak ik er de hoge nibble van)

als het de 2de waarde is... OR ik dat met de eerste waarde....  pffff
(doe ik de lage nibble erbij)

zo heb ik dan de 2 ascii waarde (wat dus 2 bytes waren) omgezet naar 1 byte!

oke....

en nu zit ik dus een klein beetje met....   die checksum uit de visualbasic   is dat nu van de byte voor 8 ledjes,  of voor 4 ledjes....
is het zo duidelijker?

volgens mijn moet ik eerst van die 2 bytes (ascii waardens ) weer 1 byte maken....   en die byte is me checksum....

#48 josk79

josk79

    Master Developer

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

Geplaatst op 07 december 2010 - 01:02

Je verhaal om van 2 hex karakters een byte te maken klopt.

Je moet even berekenen hoeveel bytes je binnenkrijgen moet na iedere "start". Bijv. 4x16+1 bytes (ik ben je resolutie even vergeten). 4x16 is dan de data voor je ledjes en die 1 is voor de checksum. dus: 65 bytes.

Om nou de checksum te controleren moet je alle bytes (die je bereken volgens jouw omschrijving) die je na een start ontvangt XORen. Als het resultaat 0 is, is het goed. Anders is er een error!

====
Als alternatief kun je gewoon 4x16 bytes uitlezen en XOR-en en vervolgens controleren of de volgende byte die binnenkomt (de checksum) gelijk is aan de checksum die je zojuist hebt berekend.

#49 josk79

josk79

    Master Developer

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

Geplaatst op 07 december 2010 - 01:11

PS: in plaats van de string 'start' is het meer gangbaar om stx (ascii 2) en etx (ascii 3) karakters te gebruiken. Dus zoiets:

Code:
<stx>FF010203DDCCBB .... AABB<etx>


die <stx> en <etx> staan dus resp. voor ascii 2 en ascii 3.

Het is veel gemakkelijker te triggeren op zulke karakters dan op het woord 'start'.

#50 Swets

Swets

    Professional Developer

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

Geplaatst op 07 december 2010 - 09:18

Hoi, ja...
Het beeld was 32 pixels breed,  dus 8 bytes per regel krijg ik binnen via de rs232...   en dus totaal krijg ik 128 bytes binnen,  en er blijven 64 echte bytes over.....

Maar nu snap ik je verhaal over resultaat 0, anders error niet... komt er altijd 0 uit dan?

Ik dacht eigenlijk zo als het laatste wat je beschrijf....   ook alle bytes Xor-en, en vergelijk met de meegezonde checsum?

Wist helemaal niet dat ascii2 en ascii 3 daar voor waren....
maar ik heb dan genoeg aan alleen de STX   of horen ze bij elkaar?

want dan moet ik dus weer aan het einde de  ETX zenden?

#51 josk79

josk79

    Master Developer

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

Geplaatst op 07 december 2010 - 12:35

Citeren

Maar nu snap ik je verhaal over resultaat 0, anders error niet... komt er altijd 0 uit dan?

Dat komt doordat a XOR a altijd 0 is:

123 XOR 123 = 0
66 XOR 66 = 0

alle bytes XOR checksum = 0, omdat de checksum in de vb functie werd berekend als een XOR van alle bytes.

Ik weet niet of je weet wat XOR doet? XOR doet Exclusive-OR van alle bits. Oftewel als exact één van de bits 1 is is het resultaat 1 anders 0:

10010110
00110011
-------------- XOR
10100101

10010110
10010110
-------------- XOR
00000000


Citeren

maar ik heb dan genoeg aan alleen de STX of horen ze bij elkaar?

want dan moet ik dus weer aan het einde de ETX zenden?

In principe heb je genoeg aan alleen stx als start-trigger. etx heb je niet nodig als je weet hoelang je boodschap is. Maar het kan nooit kwaad om hem te gebruiken.

#52 Swets

Swets

    Professional Developer

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

Geplaatst op 07 december 2010 - 13:09

Nee dan begrijpen we elkaar wel.....  Ik zend de cheksum mee aan het einde ....

in de electronca Xor ik ook steeds de byte's die ik binnen krijg....

en die waarde die ik daaruit krijg, moet het zelfde zijn als de checksum welke ik aan het einde zend.... (zodat als ik die met elkaar xor doet er 0 uit moet komen , zo bedoel je...)

#53 Swets

Swets

    Professional Developer

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

Geplaatst op 07 december 2010 - 23:07

hoe krijg ik die ascii 2 in mijn string?

chr(2) ?

#54 josk79

josk79

    Master Developer

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

Geplaatst op 07 december 2010 - 23:52

ja

#55 Swets

Swets

    Professional Developer

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

Geplaatst op 08 december 2010 - 00:17

Heb het er een eind in zitten....

Ik heb nu dat de data gelezen wordt vanuit de PC (visual basic programma)  , deze zend the checksum als laatste mee....

In de Micro controller reken ik de checksum ook uit,  en als beide gelijk aan elkaar zijn , wordt de data naar de schermuitvoer gekopieert, anders niet....

alleen het gekke is nu   bij dat rondje vierkantje verhaal (hier in die topic een paar blz terug) krijg ik sommige beelden niet meer te zien...(voor de checksum wel)  en ook steeds dezelfde beelden... (bijvoorbeeld de laatste 4 veranderingen)

dus er zal wel ergens iets fout gaan met de checksum verhaal...

De checksum die de visualbasic maakt weet ik, want die zie ik onderaan in met txtbox....

Nu heb ik in de electronica iets gemaakt dat hij zijn checksum (die in de electronica uitgerekend is) terug zend naar de PC...

en ben nu aan het kijken hoe ik hem dan in visualbasic weer op het beeld kan krijgen...

zal wel iets van serialport1.read zijn...  ....

#56 Swets

Swets

    Professional Developer

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

Geplaatst op 08 december 2010 - 17:04

jammer....
nou ja  vannavond kijken of ik dat serial lezen aan de gang kan krijgen....

hoopte eigenlijk dat iemand ff hier neer gezet had hoe dat moet... ;)

Nou ik heb net met een rekenmachine de checksum controleren die die visualbasic maakt.... en die klopt...  :)

nou ja.. ik bedoel die werkt zoals ik verwacht en bedoeld had...
maar toch gaat er ergens niet goed in de elctronica....

die laat ik nu de checksum terug zenden...   en dat doe ik met
TextBox1.Text = SerialPort1.ReadChar

maar lees dit maar 1 karakter?
hoe kan je lezen totdat er bijvoorbeeld een CHR(13) ofzo komt?


moet ik dat zelf afvangen?   een lus maken tot chr(13) komt?

#57 Swets

Swets

    Professional Developer

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

Geplaatst op 08 december 2010 - 23:53

en nog een nieuwe vraag....

Waarom plaats je alles op het formulier van uit de code?  is dat beter?  waarom de form editor niet gebruiken?
kan je ook de editor gebruiken, en dan overzetten naar code?

#58 josk79

josk79

    Master Developer

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

Geplaatst op 09 december 2010 - 11:02

Ik plaatste de code op het formulier omdat het dan gemakkelijker is om op dit forum te plaatsen (hoef ik niet uit te leggen dat je handmatig nog wat controls moet tekenen). Het is niet beter ofzo.

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

#59 Swets

Swets

    Professional Developer

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

Geplaatst op 11 december 2010 - 15:14

josk79 zei:

Ik plaatste de code op het formulier omdat het dan gemakkelijker is om op dit forum te plaatsen (hoef ik niet uit te leggen dat je handmatig nog wat controls moet tekenen). Het is niet beter ofzo.

Oke  dat snap ik.... dus normaal als het meer voor jezelf is gebruik je eerder de editor, zodat je kan zien wat je maakt?, of gebruik je die altijd, en dan schrijf je de coordinaten op en zet het om in kode?

nog een vraag , bijvoorbeeld bij pong....

waarom stop je sommige dingen in klasse?  ik kan bijvoorbeeld het aan sturen van de spelers begrijpen.... want die kan je dan 2 keer aan roepen... ...

of is het gewoon tegenwoordig bij 2010, dat je voor alles een klasse schrijf...

dus speler...  en dan bewegen van de bal... enz enz enz....

ik bedoel hoe zet je iets op....

#60 Swets

Swets

    Professional Developer

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

Geplaatst op 13 december 2010 - 21:58

hmm... oke...  nix...jammer...





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)