Trenutno trebam da spojim C# i PIC preko serijskog porta. Uspio sam komunicirati, medjutim, ja kada postavim zadanu vrijednost npr 5, i onda provjeravam da li mi poslije unesena vrijednost veca od zadane (jasnije mozete viditi u koodu) nekad mi prodje na 4, na 3(a ne bi smjelo nikako), kao da ne poredi brojeve kako treba, odnosno kao da ih ne gleda brojeve. Probao sam u C# na razne nacine konvertovat pa slati, ali nema efekta. Sada me intersuje da li je neko imao slicne probleme i za li rijesenje?
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 20h
DEFINE HSER_BAUD 9600
DEFINE HSER_SPBRG 25
symbol led=portb.0
symbol led1=portb.4
symbol pr=portb.3
input pr
output led1
output led
brzina var byte
zadana var byte
START:
'POSTAVLJANJE ZADANE VRIJEDNOSTI KADA JE PREKIDAC AKTIVAN
if pr==1 then
high led
hserin [zadana]
low led
endif
'PROVJERA DA JE POSLANA VIJEDNOST VECA OD ZADANE, AKO JESTE UPALITI LED 1 SEC
HSERIN 500, START,[BRZINA]
IF BRZINA>ZADANA THEN
high led1
pause 1000
low led1
ENDIF
goto start
end
if (!port.IsOpen)
port.Open();
port.DataReceived += new SerialDataReceivedEventHandler(OnReceived);
//byte[] data = BitConverter.GetBytes(int.Parse(brzina.Text));
//port.Write(data, 0, 4);
port.Write(Convert.ToString(brzina.Text));
Problem je vjerovatno zato sto iz C# aplikacije saljes broj kao ASCII vrijednost, a u PIC-u je citas kao binarnu odnosno bajt kakav je i dosao. Znaci kada iz C# posaljes broj '5' u ASCII formatu, njega PIC primi kao broj 53.
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 20h
DEFINE HSER_BAUD 9600
DEFINE HSER_SPBRG 25
symbol led=portb.0
symbol led1=portb.4
symbol pr=portb.3
input pr
output led1
output led
brzina var byte
zadana var byte
START:
'POSTAVLJANJE ZADANE VRIJEDNOSTI KADA JE PREKIDAC AKTIVAN
if pr==1 then
high led
hserin [zadana]
zadana = zadana - 48 ' <---- OVO TI JE FALILO. OVO CE DA PRETVORI ASCII BROJ U FAKAT BROJ :-)
low led
endif
'PROVJERA DA JE POSLANA VIJEDNOST VECA OD ZADANE, AKO JESTE UPALITI LED 1 SEC
HSERIN 500, START,[BRZINA]
IF BRZINA>ZADANA THEN
high led1
pause 1000
low led1
ENDIF
goto start
end