Velleman K8056 kod i hexa?
Velleman K8056 kod i hexa?
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
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.
- MadModder
- Co Admin
- Inlägg: 30155
- Blev medlem: 6 september 2003, 13:32:07
- Ort: MadLand (Enköping)
- Kontakt:
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.
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.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.
Ska prova med en gång.
- MadModder
- Co Admin
- Inlägg: 30155
- Blev medlem: 6 september 2003, 13:32:07
- Ort: MadLand (Enköping)
- Kontakt:
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.vfr skrev:Nej. Inte om det blir negativt, utan alltid!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.
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.
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
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.
Jag har testat med program o allt funkade med det och testknapp.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?
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