سلام دوستان .
چطوری میشه چند کاراکتر از پورت سریال (با وقفه) دریافت کرد ؟ و با یک کد ثابت مثلا "123456" مقایسه اش کرد ؟
این کد رو خودم نوشتم :
ولی مشکل اساسی داره :
اولا مثلا اگه قرار باشه در صورتی که رشته ارسالی عدد 1234 باشد یک پین میکرو یک شود و رشته ارسالی به هر دلیل عدد 123 شود عدد 123 در متغییر k ذخیره میشود و اگر مجددا رشته 1234 ارسال شود متغییر k ابتدا مقدار 1231 و سپس مقدار 234 را میگیرد . و این روند همچنان ادامه پیدا میکند و در صورتی که کد 1234 ارسال شود قادر به تشخیص نخواهد بود . (در ضمن رشته های ارسالی با فواصل کوتاه ارسال میشوند)
لطفا کمک کنید .
خلاصه:
به کدی نیاز دارم که در صورت دریافت کد 1234 یک پین 1 و در صورت دریافت کد 123456 همان پین 0 شود .
ممنون.
چطوری میشه چند کاراکتر از پورت سریال (با وقفه) دریافت کرد ؟ و با یک کد ثابت مثلا "123456" مقایسه اش کرد ؟
این کد رو خودم نوشتم :
کد:
interrupt [USART_RXC] void usart_rx_isr(void) { s=UDR; UDR=s; k[m]=s; m++; if(m==4){ v=atoi(k); for(m=0;m<4;m++){ time_out=0; } for(m=0;m<5;m++){ k[m]=NULL; } m=0; } }
ولی مشکل اساسی داره :
اولا مثلا اگه قرار باشه در صورتی که رشته ارسالی عدد 1234 باشد یک پین میکرو یک شود و رشته ارسالی به هر دلیل عدد 123 شود عدد 123 در متغییر k ذخیره میشود و اگر مجددا رشته 1234 ارسال شود متغییر k ابتدا مقدار 1231 و سپس مقدار 234 را میگیرد . و این روند همچنان ادامه پیدا میکند و در صورتی که کد 1234 ارسال شود قادر به تشخیص نخواهد بود . (در ضمن رشته های ارسالی با فواصل کوتاه ارسال میشوند)
لطفا کمک کنید .
خلاصه:
به کدی نیاز دارم که در صورت دریافت کد 1234 یک پین 1 و در صورت دریافت کد 123456 همان پین 0 شود .
ممنون.
دیدگاه