اطلاعیه

Collapse
No announcement yet.

پروتکل ویگند

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پروتکل ویگند

    سلام عزیزان
    من یه ماژول کاتخوان گرفتم که خروجیش ویگند هستش ولی از این پروتکل اصلا چیزی نمیدونم :sad: تو اینترنت هم که هیچی نیست :angry: خواهش میکنم اگه کسی چیزی دربارش میدونه بزاره برام :applause:
    بچه بودم غصه وبالم نبود هيچكي حريفه شوروحالم نبود
    بچه كه بودم آسمون آبي بود حتي شباي ابري مهتابي بود

    #2
    پاسخ : پروتکل ویگند

    یعنی یکی نیست که دربارش بدونه ؟؟
    خیلی مهمه برام دریغ نکنید
    با تشکر
    بچه بودم غصه وبالم نبود هيچكي حريفه شوروحالم نبود
    بچه كه بودم آسمون آبي بود حتي شباي ابري مهتابي بود

    دیدگاه


      #3
      پاسخ : پروتکل ویگند

      مطمئنی که باید با همین پروتکل باهاش ارتباط برقرار کنی؟ چون من با وسیله ای ارتباط برقرار کردم که این یکی از پروتکل هاش بود.
      اصلا اسم وسیله ات چیه؟

      دیدگاه


        #4
        پاسخ : پروتکل ویگند

        این که گفتی خیلی معروفه - قبلا تو برند هاب معتبر دیده بودم
        چیزی فهم هم بگویدی به ما

        دیدگاه


          #5
          پاسخ : پروتکل ویگند

          نوشته اصلی توسط reza_agha
          مطمئنی که باید با همین پروتکل باهاش ارتباط برقرار کنی؟ چون من با وسیله ای ارتباط برقرار کردم که این یکی از پروتکل هاش بود.
          اصلا اسم وسیله ات چیه؟
          بله عزیزم همین پروتکله چون 2 تا پین خروجی داره که اونم ویگنده
          یه ماژول واسه خوندن کارتهای بدون تماسه
          1-buz که همون بیزره
          2-led
          wg1 - 3
          wg0 - 4
          vcc -5
          gnd - 6
          ANT 1 - 7 که به آنتنش وصل میشه
          ANT 2 - 8 اینم سیم دیگه آنتن
          دیتاشیتم بهم نداد ولی گفت سریاله ولی فکر نکنم چون یکی دیگه داشت فکر کنم اونو گفت
          حالا اگه کسی از ین پروتکل چیزی میدونه کمک کنه خیلی ازش ممنونم
          اگه عکسم خواستی میذارم
          بچه بودم غصه وبالم نبود هيچكي حريفه شوروحالم نبود
          بچه كه بودم آسمون آبي بود حتي شباي ابري مهتابي بود

          دیدگاه


            #6
            پاسخ : پروتکل ویگند

            مثلا ماجول Transit نیست؟!!!

            دیدگاه


              #7
              پاسخ : پروتکل ویگند

              نوشته اصلی توسط reza_agha
              مثلا ماجول Transit نیست؟!!!
              نمیدونم این ماجولی که میگی چیه
              گفتم که کارتخونه
              بچه بودم غصه وبالم نبود هيچكي حريفه شوروحالم نبود
              بچه كه بودم آسمون آبي بود حتي شباي ابري مهتابي بود

              دیدگاه


                #8
                پاسخ : پروتکل ویگند

                oوندن این پروتکل سخت نیست
                یه سر به ویکی پدیا بزن همه چیز رو توضیح داده
                Don't hesitate to ask any question ..

                دیدگاه


                  #9
                  پاسخ : پروتکل ویگند

                  خوب اینم یک وسیله از شرکت Nedap هست برای خوندن تگ های RFID از نوع عمومی Heavy Duty TAG.

                  دیدگاه


                    #10
                    پاسخ : پروتکل ویگند

                    سلام به همگی

                    ویگند یه پروتکل ارتباطی که معمولا برا دستگاههای کارت خوان . ماژولهای RFID و بار کد ریدر و... استفاده میشه
                    اگه یادم مونده باشه دو نوع پروتکل ویگند داریم ویگند 26 و 48
                    منظور از ویگند 26 اینه که 26 بیت رو بصورت سریال از پایه های data0 و data1 میخونیم و در مورد 48 هم که خوب مشخصه دیگه 48 بیت!
                    از اونجایی که ویکند 26 استفاده بیشتری داره (و من از 48 چیزی نمیدونم!) پس در مورد ویگند 26 صحبت میکنیم
                    از 26 بیت این پروتکل 24 بیت یعنی 3 بایت اون دیتای مورد نظر شماست که از کارت خوان دریافت میکنید
                    و اما 2 بیت دیگر هم برای تشخیص خطا استفاده میشه یکی بیت اوله که توازن زوج برا 12 بیت (از بیت 2 تا 13) بعد رو نشون میده و یکی هم بیت 26 ام که توازن فرد بیت 14 تا بیت 25 رو نشون میده


                    از لحاظ سخت افزاری در حالت نرمال data0 و data1 مقدارشون یک هستش یه پالس منفی روی data0 نشون دهنده مقدار صفر و یک پاس منفی رو data1 نشون دهنده دیتای ورودی یک هستش یعنی تو ویگند 26 مجموع پالسهای دریافتی شما از data0 و data1 حتما باید 26 بیت باشه

                    برا برنامشم بهتره از وقفه های int0 و int1 میکرو استفاده کنی

                    http://rapidshare.com/files/451364048/wigand1.jpg

                    اینم یه نمونه یا Codevision

                    کد:
                     unsigned char CARD_data[30]; 
                     unsigned char CARD_code_byte[4];
                     unsigned char CARD_data_length;
                     unsigned char New_CARD_detect;
                     unsigned char Error_in_CARD_data; 
                    
                    //---------------------------------------------------------------------
                    // DATA1 PIN CONECT TO INT0
                     interrupt [EXT_INT0] void ext_int0_isr(void)
                      {
                        if (! CARD_data_length) {New_CARD_detect=1;} 
                        if (CARD_data_length<30) CARD_data[CARD_data_length++]=1;
                      }
                    
                    //---------------------------------------------------------------------
                    // DATA1 PIN CONECT TO INT1 
                     interrupt [EXT_INT1] void ext_int1_isr(void)
                      {
                        if (!CARD_data_length) {New_CARD_detect=1;} 
                        if (CARD_data_length<30) CARD_data[CARD_data_length++]=0;
                      } 
                    
                    //---------------------------------------------------------------------
                    
                    void Process_CARD_raw_data(void)
                     {        
                      unsigned char c,x, M , Tedade_yekha, Parity_12bit;
                        
                      
                      if (CARD_data_length!=27) Error_in_CARD_data=1; else Error_in_CARD_data=0;
                      // TEST PARITY OF FIRST 12 BIT (FROM 1..12)  
                      Tedade_yekha=0;
                      for (c=1;c<=12;c++){if (CARD_data[c]) {Tedade_yekha++;}}      
                      Parity_12bit=Tedade_yekha & 0x01;
                      if (Parity_12bit != CARD_data[0]) Error_in_CARD_data=1; 
                                
                       
                      // TEST PARITY SECOND 12 BIT (FROM 13..25)  
                      Tedade_yekha=0;
                      for (c=13;c<CARD_data_length-1;c++){if (CARD_data[c]) {Tedade_yekha++;}}
                      if (Tedade_yekha & 0x01) Parity_12bit=0; else Parity_12bit=1;         
                      if (Parity_12bit != CARD_data[26]) Error_in_CARD_data=1;  
                                 
                      
                       M=1;
                      for (x=1;x<=3;x++) 
                       {
                         CARD_code_byte[x]=0;
                         for (c=0;c<=7;c++) {CARD_code_byte[x]<<=(CARD_code_byte[x] << 1) | CARD_data[M++];}
                       } 
                     }
                        
                     
                    //======================   M A I N   L O O P  ==============================
                     
                    void main(void)
                     {
                        
                    // External Interrupt(s) initialization
                    // INT0: On
                    // INT0 Mode: Falling Edge
                    // INT1: On
                    // INT1 Mode: Falling Edge
                      EICRA=0x0A;
                      EIMSK=0x03;
                      EIFR=0x03;
                      PCICR=0x00; 
                     
                    while (1)
                       {
                        
                        if (New_CARD_detect) 
                         {
                          delay_ms(100);
                          New_CARD_detect=0;
                          Process_CARD_raw_data();
                          CARD_data_length=0;
                         }
                     }
                    البته این نمونه کد کامل نیست ولی مفهوم کار رو میرسونه

                    دیدگاه


                      #11
                      پاسخ : پروتکل ویگند

                      سلام
                      آقا مجید دسته گلت درد نکنه
                      خیلی ممنون خیلی زحمت کشیدی
                      اگه میشه واسه بسکام هم یه نمونه بزارید من از این هیچی سردرنمیارم :sad:
                      بازم ممنون
                      فردا میرم سربازی :cry2:
                      بچه بودم غصه وبالم نبود هيچكي حريفه شوروحالم نبود
                      بچه كه بودم آسمون آبي بود حتي شباي ابري مهتابي بود

                      دیدگاه


                        #12
                        پاسخ : پروتکل ویگند


                        شرمنده بیسیکم خوب نیست که بتونم کد بیسیکش رو بذارم
                        البته بهت قول میدم یخورده با این آقای ویگند ور بری میفهمی چقدر ساده هستش

                        پایه data0 رو int0 و data1 رو به int1 وصل میکنیم
                        تو برنامه تو قسمت CONFIG باید وقفه خارجی INT0 و INT1 رو فعال کنیم (هر دو وقفه با لبه پایین رونده (FALL) پیکر بندی بشن)

                        لازم به توضیحه که آرایه Wegand_data_array از نوع بایت با طول حداقل 26 بایته
                        کد مربوط به وقفه int0:

                        int0_routine:
                        incr Pointer
                        Wegand_data_array(Pointer) = 0


                        اینم وقفه int1:
                        int1_routine:
                        incr Pointer
                        Wegand_data_array(Pointer) = 1

                        بعد از detect شدن کارت جدید کارت خوان شما 26 بیت رو به میکرو میفرسته که این 26 بیت رو در آرایه ذخیره کردیم و با توجه به توضیحات پست قبل براحتی میشه اونارو تفکیک کرد و 3 بایت دیتا رو ازش بیرون کشید


                        دیدگاه


                          #13
                          پاسخ : پروتکل ویگند

                          نوشته اصلی توسط majid sh

                          منظور از ویگند 26 اینه که 26 بیت رو بصورت سریال از پایه های data0 و data1 میخونیم و در مورد 48 هم که خوب مشخصه دیگه 48 بیت!

                          البته این نمونه کد کامل نیست ولی مفهوم کار رو میرسونه
                          اگر اشتباهنکنم اون مدل دیگه 40 بیت هست
                          مهندس من هم قبلا همین برنامه شما رو نوشته بودم و باهش کار میکردم اما مشکل اینجاست که اگر کارتی نصفه نیمه خونده بشه مشکل ساز میشه چون ظاهرا time out نداره و همچنین زمانبندی فاصله صفر و یک ها هم در اون در نظر گرفته نشده . شما کد کاملتری دارید؟
                          Don't hesitate to ask any question ..

                          دیدگاه


                            #14
                            پاسخ : پروتکل ویگند

                            سلام
                            دست همتون درد نکنه عزیزان
                            خیلی زحمت کشیدید
                            فهمیدم چی شد ولی باید از سربازی برگردم تستش کنم :biggrin:
                            تا من میرم سربازی اگه چیزی داشتید بزارید بازم ممنون :job:
                            سیاوش جان اگه میشه اون برنامتم بزار استفاده کنیم قربون دستت
                            بچه بودم غصه وبالم نبود هيچكي حريفه شوروحالم نبود
                            بچه كه بودم آسمون آبي بود حتي شباي ابري مهتابي بود

                            دیدگاه


                              #15
                              پاسخ : پروتکل ویگند


                              ممنون آقا سیاوش :smile:
                              پروتکل ویگند یه فرم کلی داره و اون اینه که به تعداد بایتهایی که فرستاده میشه 2 بیت توازن (بعنوان اولین بیت و آخرین بیت دریافتی) هم اضافه میشه مثل wegand26 که 3 بایت دیتا (24 بیت) و 2 بیت توازن داره
                              اگه یه ماژول بخواد 4 بایت رو بفرسته میشه 32 بیت دیتا + 2 بیت توازن = 34 بیت و الی آخر و این بستگی به سیستمی داره که از این پروتکل استفاده میکنه
                              اما در مورد Timeout تو همین کد ساده C که تو پست قبلی هست یه timeout خیلی ساده هم در نظر گرفته شده
                              به اینصورت که با اولین پالسی که روی data0 یا data1 داشته باشیم متغیر New_CARD_detect یک میشه و تو برنامه اصلی شرط 1 شدن این متغییر دائم داره تست میشه و بعد از یک شدن بلافاصله یه تاخیر 100ms تو برنامه وجود داره که به زمان کافی به 26 بیت دیتا رو میده که بطور کامل بوسیله int0 و int1 دریافت بشن
                              بعد سپری شدن این 100ms چک میکنیم که اگه 26 بیت دریافت نکرده باشیم یعنی data error
                              در مورد تایمینگ همونطور که میدونیم در پروتکل wegand بصورت استاندارد تایم low level برابر 50us و فاصله 2 پالس هم 2ms هستش و این تو سیستمهایی که از این پروتکل استفاده میکنن صدق میکنه من فکر میکنم همین کد وقفه ها به چیز بیشتری نیاز نداره از نظر پیدا کردن error هم 2 نکته رو باید چک کنیم یکی بیتهای توازن دوم تعداد بیتهای دریافتی
                              من این برنامه رو برا دو نوع ماژول مختلف نوشتم (Barcode reader و RFID) و الانم دارم ازش استفاده میکنم گوش شیطون کر چشمش کور! تو این یکی 2 ساله هنوز اذیتم نکرد


                              نوشته اصلی توسط arf2010
                              فهمیدم چی شد ولی باید از سربازی برگردم تستش کنم :biggrin:
                              تا من میرم سربازی اگه چیزی داشتید بزارید بازم ممنون :job:
                              موفق باشی arf2010 جان :biggrin:

                              دیدگاه

                              لطفا صبر کنید...
                              X