Evo ovako, jucer sam napisao one chr$ za primjer, a evo i tocnih:
Code:
If led = "0" Then send$ = Chr$(3) + Chr$(0) + Chr$(0) + Chr$(3): GoTo prikaz
If led = "1" Then send$ = Chr$(3) + Chr$(1) + Chr$(1) + Chr$(3): GoTo prikaz
If led = "2" Then send$ = Chr$(3) + Chr$(1) + Chr$(2) + Chr$(0): GoTo prikaz
If led = "3" Then send$ = Chr$(3) + Chr$(1) + Chr$(4) + Chr$(6): GoTo prikaz
If led = "4" Then send$ = Chr$(3) + Chr$(1) + Chr$(8) + Chr$(10): GoTo prikaz
If led = "5" Then send$ = Chr$(3) + Chr$(1) + Chr$(16) + Chr$(18): GoTo prikaz
If led = "6" Then send$ = Chr$(3) + Chr$(1) + Chr$(32) + Chr$(34): GoTo prikaz
If led = "7" Then send$ = Chr$(3) + Chr$(1) + Chr$(64) + Chr$(66): GoTo prikaz
If led = "8" Then send$ = Chr$(3) + Chr$(1) + Chr$(128) + Chr$(130): GoTo prikaz
prikaz:
MSComm1.Output = send$
Znači, ukoliko je led = "0" onda su sve diode ugašene. Ako je 1 onda je 1. dioda upaljena i tako do 8.
Ja trebam dobit da se dvije zajedno upale (kao što sam i prije napomenuo).
U uputstvima (koje sada ne mogu naci) je ispisan ovaj program dolje i koliko znam, nista konkretno ne pise.
A ovo je program koji sam dobio sa uređajem, preko njega sam i dosao do tih chr$. Uglavnom, cini mi se da ovaj program u jednom slucaju upali nekoliko lampica zajedno (ne mogu ovo sa sigurnoscu reci jer ne mogu isprobati program - kao da je kompjuteru prebrz :) isprobao sam ga pred par godina na drugom kompjuteru):
Code:
CLS: CLEAR
DIM inbuf(800)
DIM outbuf(8)
OPEN "com2:19200,n,8,1,bin,cs,ds" FOR RANDOM AS #1
'----- INTERRUPT SERIAL INTERFACE ON -----
COM(2) ON
ON ERROR GOTO BADCOM
ON COM(2) GOSUB GETFRAME
'----- INITIALIZE RELAIS BOARD -----
PRINT "INITIALIZE BOARD"
outbuf(0) = 1: outbuf(1) = 1: outbuf(2) = 0: GOSUB sendframe
FOR delay = 1 TO 1000000: NEXT: CLS
'----- SWITCH RELAIS -----
teststart:
r = 1
rt:
outbuf(0) = 3: outbuf(1) = 1: outbuf(2) = r: GOSUB sendframe
FOR delay = 1 TO 1000000: NEXT: CLS
r = r * 2: IF r < 256 THEN GOTO rt
GOTO teststart
'||||| SERIAL COMMUNICATION |||||
'---------------------------------
'----- READ 4 BYTE DATAFRAME -----
'---------------------------------
GETFRAME:
inbuf(bz) = ASC(INPUT$(1,#1))
bz = bz + 1
IF bz = 4 THEN GOTO checkframe
RETURN
'----- CHECK VALIDITY -----
checkframe:
ERROR$ = "ERROR"
IF inbuf(0) XOR inbuf(1) XOR inbuf(2) = inbuf(3) THEN
ERROR$ = "OK"
bz = 0: PRINT "RECEIVED:"; " "; inbuf(0); " "; inbuf(1); " "; inbuf(2); " "; inbuf(3); " "; ERROR$
PRINT "-----------------------------------------------------------------": RETURN
END IF
'---------------------------------
'----- SEND 4 BYTE DATAFRAME -----
'---------------------------------
sendframe:
outbuf(3) = outbuf(0) XOR outbuf(1) XOR outbuf(2)
send$ = CHR$(outbuf(0)) + CHR$(outbuf(1)) + CHR$(outbuf(2)) + CHR$(outbuf(3))
PRINT #1, send$
PRINT "TRANSMITTED: "; " "; outbuf(0); " "; outbuf(1); " "; outbuf(2); " "; outbuf(3)
RETURN
'***** ERROR HANDLER *****
BADCOM:
PRINT "----- DATA ERROR -----"
RESUME
RETURN
ende:
END
I još nešto:
Code:
send$ = Chr$(3) + Chr$(1) + Chr$(1) + Chr$(3) -----> pali 1. diodu
send1$ = Chr$(3) + Chr$(1) + Chr$(128) + Chr$(130) -----> pali 8. diodu
MSComm1.Output = send$
MSComm1.Output = send1$
- ovaj kod bi trebao upaliti prvu diodu i osmu diodu, međutim, upali samo 1. diodu... ali pokušao sam stavit jednostavnu petlju kojom mu napravim neki delay, recimo ovako:
Code:
send$ = Chr$(3) + Chr$(1) + Chr$(1) + Chr$(3)
MSComm1.Output = send$
For i = 1 To 100000000
Next i
send1$ = Chr$(3) + Chr$(1) + Chr$(128) + Chr$(130)
MSComm1.Output = send1$
- onda pali 1. diodu, ceka cirka 2 sekunde i upali 8. diodu (ali 1. diodu ugasi)
Došao sam do zaključka da on sa jednim chr$ gasi sve ostale diode (što ste i vi pretpostavili), tj. barem se nadam da je tako, sada još treba otkriti koji je to chr$, jer sam vec sve probao izmjeniti i ne mogu to dobiti. Hvala!
Skuzio sam nest, hmm...
Code:
send$ = Chr$(3) + Chr$(1)
MSComm1.Output = send$
Kada ucitam ovu funkciju dva puta, onda pali prve dvije diode. A dalje sad ne znam :)
A mogu i zadat ovako:
Code:
send$ = Chr$(3) + Chr$(1) + Chr$(3) + Chr$(1)
---------> moze biti i send$ = Chr$(3) + Chr$(0) + Chr$(3) + Chr$(0)
Onda pali prve dvije odmah :) Trazim dalje... ako tko ima prijedlog, neka napise!
[Ovu poruku je menjao Aleksandar Ružičić dana 08.04.2008. u 16:27 GMT+1]