RFreader reads the input fron the ID-card and sends it to microcontroller. mcu compares the same no with the available no's. If no. is matched then generates output pin high. Plz help in me in implementing the code in c.Total there are 250 different IDs available.
If you are doing the project, how far have you got?
Where, exactly, are you stuck?
I am able to read the no. through serial port, don't know how to compare that no with the other no which are saved. the no is of 10 digit for example 9481300500. I thought of using switch in the program but its not working giving some error. do I need to generate a look up table?, how to generate?
the numbers are not in series or sorted, they are random numbers.
So get out your 'C' textbook, and look at what facilities the language provides for doing such things.
Hint: don't (just) think of it as a "number"; try thinking of it as a just a sequence of bytes in memory...
"giving some error"
What error, exactly, does "it" give?
What effort did you put into fixing the error?
Nobody can help you to fix the error when you don't say what the error is!
Debugging is an essential part of any development project - you're not going to get far if you just give up as soon as you get "some error"!
It's your project, so the "numbers" can be stored in whatever order you choose - surely?
ya I am sure, there is no order or series. please give me some clue.. there are a total of 200 no... rfreader reads the no and sends it yo mcu through rs232. how to compare the received no with other 200 nos?
main() { unsigned char a[10]; a[10]=serial_receive(); switch(a) { case 9481300500: open_door(); break; case 9980428098: open_door(); break; . . . . . default:don't_open(); }
I have already given you a clue (aka "hint")
unsigned char a[10];
So 'a' is an array
switch(a)
Do you think that the 'C' switch statement work that way with arrays?
What does your 'C' Textbook say...?
do you want me to take a as a string i.e a="9481300500" and compare this with the other string of nos?
I want you to think!
You should know what the definition of a "string" is in the 'C' programming language; if not, get back to that textbook...
Is the "number" that you receive actually suitable for use as a 'C' string?
I don't know. I think the output of rs232 is group of characters not exactly string... give me some topics that I need to study related to this project...
That is just so rediculous.
=> give me some topics that I need to study related to this project...
www.exforsys.com/.../c-arrays.html www.exforsys.com/.../handling-of-character-strings-in-c.html
and
'1' is not equal to 1
"1" is not equal to '1'
11 is not equal to 0x11
case 9481300500: open_door(); break; case 9980428098: open_door(); break;
and you also need to well define the data type of 9481300500, 9980428098.
www.exforsys.com/.../c-programming-language-data-types.html www.exforsys.com/.../c-programming-data-types-part-2.html
unsigned char a[10]; a[10]=serial_receive();
The above is incorrect either.
Maybe start from:
void main(void) { unsigned char rx_data; for(;;) { rx_data = serial_receive(); switch(rx_data) { case '1': open_door(); // case 1 : open_door(); break; case '9': open_door(); // case 9 : open_door(); break; . . . . . default: dont_open(); } proper_delay(); } }
will you plz tell me how rfreader reads? whether it reads the no as string, as constant or, as char... when tested I am getting $9481300500 as output on the hyperterminal.
#include<reg51.h> void boud_rate() { SCON = 0x50; TMOD = 0x20; /* timer 1, mode 2, 8-bit reload */ TH1 = 0xFD; /* reload value for 2400 baud */ TR1 = 1; TI = 1; } char serial_receive() { char chr; /* variable to hold the new character */ while (RI != 1) {;} chr = SBUF; RI = 0; return(chr); } void main(void) { boud_rate(); unsigned char rx_data; for(;;) { rx_data = serial_receive(); switch(rx_data) { // case '1': open_door(); case 0067892341 : open_door(); break; // case '9': open_door(); case 0045780034 : open_door(); break; default: dont_open(); } proper_delay(); } }
errors
'rx_data':undefined identifier illigal octal digit
please tell me how to overcum these errors