سلام.
من یه رشته دیتا دارم که باید بصورت پاکت ارسال بشه و تو هر پاکت دو بایت استارت وجود داره و یه بایت CRC check برای خطایابی. به خاطر همین هم برای ارسال اونها از وقفه ارسال استفاده کردم. کدی که نوشتم به این صورت هست:
اون 0xAA و 0x55 فلگ های ارسال هستن، و ID و par (و ایضاً para) هم پارامترهای دیگه این پاکت هستند. خودم فکر می کنم که این تابع برای ارسال اشکال داشته باشه، و البته از اونجائیکه دستگاه گیرنده dumb هست و هیچ گونه علائمی رو اصولاً از خودش بروز نمیده نمی تونم بفهمم درسته یا نه.
این هم تابع برای دریافت اطلاعات:
البته این تابع فقط برای امتحان هست که می خوام ببینم آیا دستگاه اصلاً چیزی می فرسته به من یا نه. که البته جوابی ازش نمیاد.
اگر هر کدوم از این تابع ها اشکال داره خوشحال میشم کمک کنید.
من یه رشته دیتا دارم که باید بصورت پاکت ارسال بشه و تو هر پاکت دو بایت استارت وجود داره و یه بایت CRC check برای خطایابی. به خاطر همین هم برای ارسال اونها از وقفه ارسال استفاده کردم. کدی که نوشتم به این صورت هست:
کد:
void comm_send(unsigned char ID,unsigned int par){ char sum = 0; int i; #define COMM_SIZE 5 char tx_buff[COMM_SIZE]; unsigned char chksum; unsigned char *para = 0x00; tx_buff[0] = 0xAA; tx_buff[1] = 0x55; tx_buff[2] = ID; itoa(par,para); tx_buff[3] = *para; for (i=2;i<=3;i++){ sum += tx_buff[i]; chksum = -(sum+1); } tx_buff[4] = chksum; for (i=0;i<COMM_SIZE;i++){ putchar(tx_buff[i]); } }
اون 0xAA و 0x55 فلگ های ارسال هستن، و ID و par (و ایضاً para) هم پارامترهای دیگه این پاکت هستند. خودم فکر می کنم که این تابع برای ارسال اشکال داشته باشه، و البته از اونجائیکه دستگاه گیرنده dumb هست و هیچ گونه علائمی رو اصولاً از خودش بروز نمیده نمی تونم بفهمم درسته یا نه.
این هم تابع برای دریافت اطلاعات:
کد:
void data_recv(void){ getchar(); if(rx_buffer[0] != 0xAA){ lcd_gotoxy (0,1); lcd_putsf("step1"); if(rx_buffer[1] == 0x55){ lcd_gotoxy (7,1); lcd_putsf("step2"); } } }
البته این تابع فقط برای امتحان هست که می خوام ببینم آیا دستگاه اصلاً چیزی می فرسته به من یا نه. که البته جوابی ازش نمیاد.
اگر هر کدوم از این تابع ها اشکال داره خوشحال میشم کمک کنید.
دیدگاه