Velleman K8056 kod i hexa?

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
magi5
Inlägg: 320
Blev medlem: 8 augusti 2005, 12:37:44
Skype: jlivingstonesg
Ort: Sweden
Kontakt:

Velleman K8056 kod i hexa?

Inlägg av magi5 »

Hej.

Jag har en Velleman K8056 på RS232 men använder CGI och behöver sända hexa kod till systemet.

Så hur översätter man styrkod till hexa?

Låt säga att jag ska sätta relä 2 till ON.

Instruction sequence:

1. CHR$(13) = 0D
2. Card adress(1..255) = 01
3. Instuktions ('S') = 53
4. Adress (1..255) or relay#('1'..'9' ACHII) = 02
5. Checksum(2-complement of the sum of 4 previous bytes + 1)

13+01+53+02+01 = 70 and in hex 46

Så koden ska se ut så här tror jag i hexa:
0D01530246

Vad gör jag för fel?

Info:
http://www.velleman.be/downloads/0/illu ... _k8056.pdf

Detta är mitt projekt som jag nu ska utöka.
http://www.elektronikforumet.com/forum/ ... hp?p=68867

Regards Magi
Senast redigerad av magi5 12 mars 2006, 18:41:27, redigerad totalt 1 gång.
Användarvisningsbild
Jeppsson
EF Sponsor
Inlägg: 810
Blev medlem: 3 oktober 2005, 18:00:43
Ort: Karlskrona

Inlägg av Jeppsson »

Utan att ha studerat PDF rejält så tror jag inte att du kan addera ihop alla hexcod till en utan måste skicka dom en och en i följd... :?

Förstår du vad jag menar?
Användarvisningsbild
Jeppsson
EF Sponsor
Inlägg: 810
Blev medlem: 3 oktober 2005, 18:00:43
Ort: Karlskrona

Inlägg av Jeppsson »

Förtydligande, du måste skicka följande hexcode

0D,01,53,02,01 utan kommatecken för att den skall köpa koden...
Användarvisningsbild
MadModder
Co Admin
Inlägg: 30155
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

byt ut sista 01 där mot 46 ;)

Men jag förstår inte varför de blandar in 2-komplement där. Det kan ju aldrig bli ett negativt nummer, så det gör ju ingen skillnad.
Användarvisningsbild
magi5
Inlägg: 320
Blev medlem: 8 augusti 2005, 12:37:44
Skype: jlivingstonesg
Ort: Sweden
Kontakt:

Inlägg av magi5 »

Hej.

Ska det inte vara så här?

0d+01+'S'+02+01 ger i dec
13+01+83+02+01 = 100 and in hex 64

Så koden ska se ut så här tror jag i hexa:
0D01530264
Användarvisningsbild
MadModder
Co Admin
Inlägg: 30155
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

Joooo natruligtvis. S är ju 53 i hex, och 83 i dec. Kan ju inte blanda... :)
Användarvisningsbild
magi5
Inlägg: 320
Blev medlem: 8 augusti 2005, 12:37:44
Skype: jlivingstonesg
Ort: Sweden
Kontakt:

Inlägg av magi5 »

Hej.

Jag får ändå ingen reaktion från k8056.

Inte ens in signal lampan blinkar till då jag skickar data.

Någon som har en aning?

Regards Magi
Användarvisningsbild
MadModder
Co Admin
Inlägg: 30155
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

Undrar om det inte ska stå nånting annat än 2-complement där...
Låt säga att vi har adress 255 på ett kort. Då blir ju checksumman mer än 255!

Aha! enligt deras VB-exempel, räknar de ut checksumman såhär:

checksum = (255 - ((((13 + address + Asc("S") + Asc("1")) / 256) - Int((13 + address + Asc("S") + Asc("1")) / 256)) * 256)) + 1

Dvs relänumret ska inte vara 01 för 1, utan 49 för ascii "1" !

Och om det blir ett negativt tal, ska man invertera alla bitar binärt, och lägga till 1 binärt. Det är det som är 2-komplement.
Användarvisningsbild
magi5
Inlägg: 320
Blev medlem: 8 augusti 2005, 12:37:44
Skype: jlivingstonesg
Ort: Sweden
Kontakt:

Inlägg av magi5 »

MadModder skrev:Undrar om det inte ska stå nånting annat än 2-complement där...
Låt säga att vi har adress 255 på ett kort. Då blir ju checksumman mer än 255!

Aha! enligt deras VB-exempel, räknar de ut checksumman såhär:

checksum = (255 - ((((13 + address + Asc("S") + Asc("1")) / 256) - Int((13 + address + Asc("S") + Asc("1")) / 256)) * 256)) + 1

Dvs relänumret ska inte vara 01 för 1, utan 49 för ascii "1" !

Och om det blir ett negativt tal, ska man invertera alla bitar binärt, och lägga till 1 binärt. Det är det som är 2-komplement.
Tack.

Ska prova med en gång.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

MadModder skrev:om det blir ett negativt tal, ska man invertera alla bitar binärt, och lägga till 1 binärt. Det är det som är 2-komplement.
Nej. Inte om det blir negativt, utan alltid!
Användarvisningsbild
MadModder
Co Admin
Inlägg: 30155
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

din checksumma för relä 2 borde då bli 109, dvs 6D i hex.

sålänge du håller dig med en kortadress under 100, så blir det lite enklare att räkna ut checksumman:

255-(13+adress+83+49+relä)+1

där relä är 1-8.
49 för att det ska bli ascii-värdet av reläet.
Användarvisningsbild
MadModder
Co Admin
Inlägg: 30155
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

vfr skrev:
MadModder skrev:om det blir ett negativt tal, ska man invertera alla bitar binärt, och lägga till 1 binärt. Det är det som är 2-komplement.
Nej. Inte om det blir negativt, utan alltid!
Förklara då hur ett binärt tal som motsvarar 7 även är 0111 binärt efter att man "2-komplementat" det? Binära tal som inte har MSB satt är nämligen direkt översättbart till decimalt utan att "2-komplementa" tillbaks det.
http://www.cs.ualberta.ca/~casey/c101/1 ... 2comp.html

Men i det här fallet så ska man tydligen 2-komplementa det oavsett. Skum formel... den klipper helt enkelt bort alla bitar över 8...
Senast redigerad av MadModder 12 mars 2006, 21:19:40, redigerad totalt 1 gång.
Användarvisningsbild
magi5
Inlägg: 320
Blev medlem: 8 augusti 2005, 12:37:44
Skype: jlivingstonesg
Ort: Sweden
Kontakt:

Inlägg av magi5 »

Hej.

Ska det inte vara så här?

0d+01+'S'+'2'+01 ger i dec
13+01+83+50+01 = 148 and in hex 94

Så koden ska se ut så här tror jag i hexa:
0D01533294

Får ändå ingen reaktion. :(

Ska prova med kortnr som ascii oxo

0d315332c4 funkade inte heller :(
Senast redigerad av magi5 12 mars 2006, 21:21:47, redigerad totalt 2 gånger.
Användarvisningsbild
MadModder
Co Admin
Inlägg: 30155
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

nej du ska ta 255-(13+1+83+50)+1
vilket ger 109

0D0153326D

Har du förresten laddat hem vellemans testprogram och fått reläerna att funka över huvud taget?
Användarvisningsbild
magi5
Inlägg: 320
Blev medlem: 8 augusti 2005, 12:37:44
Skype: jlivingstonesg
Ort: Sweden
Kontakt:

Inlägg av magi5 »

MadModder skrev:nej du ska ta 255-(13+1+83+50)+1
vilket ger 109

0D0153326D

Har du förresten laddat hem vellemans testprogram och fått reläerna att funka över huvud taget?
Jag har testat med program o allt funkade med det och testknapp.

Men nu funkar det. :)


Jag älskar er allihopa universellt mycket :)

Vill ni prova min tanks så hör bara av er.

MSN / spidg@hotmail.com


Regards Magi
Skriv svar