نمایش نتایج: از 1 به 6 از 6

موضوع: Serial .print

  1. #1
    Junior Member
    تاریخ عضویت
    Jun 2016
    نوشته ها
    18

    Question Serial .print

    سلام
    من از دستور serial.print استفاده می کنم ولی وقتی میخوام محتویات یک متغییر مثل byte f=0x0f; رو با دستور serial.print(f,Hex) ارسال کنم تو پورت فقط f ظاهر می شه و صفرش حذف میشه
    کسی میتونه کمک کنه

  2. #2
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,024
    از این کد استفاده کن :
    کد:
    void setup() 
    {
           Serial.begin(9600);
           Serial.print("Setup: Examples of PrintHex usage\n\n"); 
    }
    
    
    void loop() 
    {
           uint8_t ByteData[5]={0x01, 0x0F, 0x10, 0x11, 0xFF};
           Serial.print("With uint8_t array:  "); PrintHex8(ByteData,5); Serial.print("\n"); 
    
    
           uint8_t ByteDatum=0x01;
           Serial.print("With uint8_t scalar: "); PrintHex8(&ByteDatum,1); Serial.print("\n"); 
    
    
           uint16_t Shorts[5]={0x0001, 0x00FF, 0x0100, 0xAAAA, 0xFFFF};
           Serial.print("With uint16_t array: "); PrintHex16(Shorts,5); Serial.print("\n"); 
    
    
           Serial.print("==========================================\n");
           delay(10000);
    }
    
    
    void PrintHex8(uint8_t *data, uint8_t length) // prints 8-bit data in hex with leading zeroes
    {
         char tmp[16];
           for (int i=0; i<length; i++) { 
             sprintf(tmp, "0x%.2X",data[i]); 
             Serial.print(tmp); Serial.print(" ");
           }
    }
    
    
    void PrintHex16(uint16_t *data, uint8_t length) // prints 16-bit data in hex with leading zeroes
    {
           char tmp[16];
           for (int i=0; i<length; i++)
           { 
             sprintf(tmp, "0x%.4X",data[i]); 
             Serial.print(tmp); Serial.print(" ");
           }
    }

  3. #3
    Junior Member
    تاریخ عضویت
    Jun 2016
    نوشته ها
    18
    سلام
    هنوز کدتون رو تستش نکردم ولی مشکل کد من چیه که اون قسمتش حذف میشه؟
    از جوابتون ممنونم

  4. #4
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,024
    نقل قول نوشته اصلی توسط bolton نمایش پست ها
    سلام
    هنوز کدتون رو تستش نکردم ولی مشکل کد من چیه که اون قسمتش حذف میشه؟
    از جوابتون ممنونم
    مشکلش دقیقا اینه که وقتی می نویسید هگز تو کامپایلر 0 اش رو حذف می کنه
    کد زیر عملا داره بهش کلک می زنه!

  5. #5
    Junior Member
    تاریخ عضویت
    Jun 2016
    نوشته ها
    18
    سلام
    ممنون این قسمت حل شد ولی یه مشکل دیگه پیدا شده
    بعد از اینکه دیتا به پورت سریال ارسال میشه این دیتا رو با یک سخت افزار RS232 می خونم و وقتی دیتا ارسالی توسط اردوینو به طور مثال(0Xff) تو ی کامپیوتر 46 دریافت میشه ولی توی Port monitor خود اردوینو همون 0Xff) نشون میده؟

  6. #6
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,024
    نقل قول نوشته اصلی توسط bolton نمایش پست ها
    سلام
    ممنون این قسمت حل شد ولی یه مشکل دیگه پیدا شده
    بعد از اینکه دیتا به پورت سریال ارسال میشه این دیتا رو با یک سخت افزار rs232 می خونم و وقتی دیتا ارسالی توسط اردوینو به طور مثال(0xff) تو ی کامپیوتر 46 دریافت میشه ولی توی port monitor خود اردوینو همون 0xff) نشون میده؟
    اگر سیم بندیتون رو برای انتقال درست انجام دادید و هر بار هم دقیقا همین عدد رو دریافت می کنید ممکنه عدد 46 کد اسکی باشه.
    چون رنج عددی که دارید میگید به کد اسمی میخوره ولی 46 کد اسکی 2e هست

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO