اطلاعیه

Collapse
No announcement yet.

درخواست برنامه uart دریافت از پورت سریال و نمایش روی lcd

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

    درخواست برنامه uart دریافت از پورت سریال و نمایش روی lcd

    1768 دارم
    برنامه uart رو ریختم درست کار میکنه
    برنامه السیدی کاراکتری هم همینطور
    حالا میخوام با استفاده از دستورات cmsis یه رشته رو از پورت سریال دریافت و سپس روی السیدی نمایش بدم
    از چه دستوری باید استفاده کنم ؟
    این برنامه uart:
    کد:
    int main(void)
    {
     int i=0 ;
    	unsigned char lcd_buf[8];
    	
    	SystemInit();
    	UART0_Init();
    	UART2_Init();
    
      while (1) 
    	 {
    		UART0_SendString("-LPC1768 Dev Board-\r\n");
    		UART0_SendString("http://www.ECA.ir\r\n");
    		UART0_SendString((unsigned char *)lcd_buf);
    			
    		UART2_SendString("-LPC1768 Dev Board-\r\n");
    		UART2_SendString("http://www.ECA.ir\r\n");
    		UART2_SendString((unsigned char *)lcd_buf);
    			
    		i++;
    		sprintf(lcd_buf,"counter: %d\r\n\n",i);
      Delay(4000);
    اینم برنامه lcd کاراکتری:
    کد:
    main(){
    	int j;
    	lcd_init();
    	lcd_clear();
    	
    	while (1) {
    		lcd_gotoxy(1,3);
    		lcd_putsf("-www.ECA.ir-");
    		lcd_gotoxy(2,2);
    		
    		for(j=0;j<14;j++){
    			lcd_putchar(ch[j]);
    			delay(35);
    		}
    		delay(200);
    		
    		for(j=0;j<16;j++){
    		lcd_gotoxy(1,j+1);
    		lcd_putchar(' ');	
    		lcd_gotoxy(2,j+1);	
    		lcd_putchar(' ');
    		delay(25);	
    		}
    	}
    }
    مدت زمانی که صرف ایجاد تاپیک و منتظر پاسخ هستید را صرف سرچ کنید...

    #2
    پاسخ : درخواست برنامه uart دریافت از پورت سریال و نمایش روی lcd

    خب بعد راه اندازی uart و تنظیم باودریت باید تابع دریافت رشته رو اجرا کنی . فرمت تابع این شکلیه :
    [code=c]uint32_t UART_Receive(LPC_UART_Type,uint8_t *rxBuffer,uint32_t buffLen,TRANSFER_BLOCK);[/code]

    LPC_UART_Type : یو ارت مورد نظر مثلا LPC_UART0
    rxBuffer : اشاره گری که داده دریافتی رو می گیره
    buffLen : طول رشته ی دریافتی
    حالت آخر هم یا BLOCKING یا NONE_BLOCKING هست ( برای نوع انتقال )

    بعد هی تونی رشته رو روی lcd نشون بدی :rolleyes:
    چه زشت است کوچکي به هنگام نياز و سرکشي به هنگام بي نيازي ...

    دیدگاه


      #3
      پاسخ : درخواست برنامه uart دریافت از پورت سریال و نمایش روی lcd

      آقای من چیزی دریافت میکنم اما به صورت کد های اسکی هستن چه طوری تبدیلشون کنم به حروف واقعی ؟
      مدت زمانی که صرف ایجاد تاپیک و منتظر پاسخ هستید را صرف سرچ کنید...

      دیدگاه


        #4
        پاسخ : درخواست برنامه uart دریافت از پورت سریال و نمایش روی lcd

        نوشته اصلی توسط NimaAryamehr
        آقای من چیزی دریافت میکنم اما به صورت کد های اسکی هستن چه طوری تبدیلشون کنم به حروف واقعی ؟
        معمولا ترمینال خودش به حرف تبدیل می کنه . در ضمن کد های اسکی یه بازه اش حروف هستند .
        جدول زیر کمکت می کنه :
        http://www.ascii-code.com
        اگه منظورتون تبدیل بایت دریافت شده است ، توی keil از کتابخونه ی stdio می تونی استفاده کنی با تابع زیر:
        [code=c]sprintf(*char s,"%d",rec_byte)[/code]
        چه زشت است کوچکي به هنگام نياز و سرکشي به هنگام بي نيازي ...

        دیدگاه


          #5
          پاسخ : درخواست برنامه uart دریافت از پورت سریال و نمایش روی lcd

          ممنون داداش :wow:
          حالا من میخوام یه رشته از uart بگیرم و مثلا اگه ok داخلش بود یه کاری انجام بشه از تابع زیر استفاده کردم
          کد:
           if(strlen(strstr(data,"123456"))>6 )  {	GPIO_SetValue(01,(1<<19));}
          توی اینجا مثلا تعریف کردم که اگه مقدار 123456 داخل رشته data بود یه led روشن بشه
          اما فقط واسه یه حروف عمل میکنه
          ینی مثلا عدد6 بزارم بعد 6 بزنم روشن میشه
          حالا چیکار کنم واسه یه رشته اینطوری عمل کنه؟؟؟؟؟؟؟ :read: :read: :read: :read:
          در ضمن من مقدار دریافتی از uart که از هایپر ترمینال میگیرم رو اینطوری دریافت کردم
          کد:
          		b=UART0_GetChar ();
            sprintf(data,"%c",b);
          مدت زمانی که صرف ایجاد تاپیک و منتظر پاسخ هستید را صرف سرچ کنید...

          دیدگاه


            #6
            پاسخ : درخواست برنامه uart دریافت از پورت سریال و نمایش روی lcd

            این تابع strstr فک کنم اینجوریه :

            تابع ()strstr تابع ()strstr برای جستجو زیر رشته ای در یک رشته مورد استفاده قرار گرفته و بصورت زیر بکار می رود :
            1
            strstr(s1,s2)
            s2 رشته ای است که باید در رشته s1 جستجو شود . اگر s2 در s1 پیدا شود محل اولین وقوع آن توسط تابع برگردانده می شود ولی اگر s2 در s1 وجود نداشته باشد مقدار صفر برگردانده خواهد شد . بعنوان مثال ، با اجرای دستور :
            1
            if(strstr("this is","hi&quot)printf("hi found"
            بعلت وجود رشته hi در رشته this is ، پیام مناسبی صادر می شود .
            ببخشید اگه این جلسه کمی طولانی شد ! با مــا همـراه باشید .
            چه زشت است کوچکي به هنگام نياز و سرکشي به هنگام بي نيازي ...

            دیدگاه


              #7
              پاسخ : درخواست برنامه uart دریافت از پورت سریال و نمایش روی lcd

              ببخشید میپرم وسط بحث.
              اگه بخام یه رشته مشخص رو توآرایه ای از کاراکترها بگردم آیا تابع خاصی هست یا باید به روش معمولی همه عناصر آرایه رو چک کنم و.... ؟؟
              مثلا یه رشته NMEA از GPS میخام دریافت و در آرایه ذخیره کنم بعد یه قسمت هاییش رو برای نمایش بردارم.ممنون میشم اگه کمکم کنید. :nerd: :read:
              ضمنا از وقفه دریافت میخام استفاده کنم. :sad:

              دیدگاه


                #8
                پاسخ : درخواست برنامه uart دریافت از پورت سریال و نمایش روی lcd

                نوشته اصلی توسط mehdia1968
                ببخشید میپرم وسط بحث.
                اگه بخام یه رشته مشخص رو توآرایه ای از کاراکترها بگردم آیا تابع خاصی هست یا باید به روش معمولی همه عناصر آرایه رو چک کنم و.... ؟؟
                مثلا یه رشته NMEA از GPS میخام دریافت و در آرایه ذخیره کنم بعد یه قسمت هاییش رو برای نمایش بردارم.ممنون میشم اگه کمکم کنید. :nerd: :read:
                ضمنا از وقفه دریافت میخام استفاده کنم. :sad:
                خب همون تابع بالا دیگه زیر رشته رو سرچ می کنه . محل پیدا کردن رو بر می گردونه . توی تایع وقفه می تونی این کار رو انجام بدی .
                چه زشت است کوچکي به هنگام نياز و سرکشي به هنگام بي نيازي ...

                دیدگاه

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