⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.c

📁 uclinux液晶RTl2232F外设的测试程序
💻 C
字号:
/***************************************************************************************************   This is a test program for Nios uClinux.   We will use LCD device to show string data    and use MTD flash to save the string.        Author: andrity zhang****************************************************************************************************/#include "lcd16207.h"#include <stdio.h>#include <string.h>
#include <stdlib.h>
#include <fcntl.h>		
#include <unistd.h>		
#include <sys/ioctl.h>		void lcd_delay(int delay)
{
  int j;  
  for (j=0;j<delay;j++)
    {
      usleep(1000);
    }
}
/***************************************************************************************************      Write string data to LCD device****************************************************************************************************/
ioctl_set_msg(int file_desc, char *message)
{
  int ret_val;
  
  ret_val = ioctl(file_desc, IOCTL_SET_MSG, message);
  
  if (ret_val < 0) {
    printf("ioctl_set_msg failed:%d\n", ret_val);
    exit(-1);
  }
}
int main(void){  int file_desc;  int user_choose=0;  FILE *lcddatafp;  char lcd_msg32[33];  char saving_data[500];  int lcddata_length,i,j;
  char lcd_msg32R[33];  char chinese[2];  file_desc = open(DEVICE_FILE_NAME, 0);              
  if (file_desc < 0)   {
    printf("Can't open device file: %s\n", DEVICE_FILE_NAME);
    exit(-1);
  }  chinese[0]=0xb1;  chinese[1]=0xbe;  ioctl_set_msg(file_desc, chinese);
  lcd_delay(20);  printf("Whether you choose reading data from LCD SAVEING file to show on LCD?\n");  printf("[1]loading data from LCD saving file\n");  printf("[2]ignore\n");  printf("please choose 1 or 2:");  scanf("%d",&user_choose);  while(!((user_choose==1)||(user_choose==2)))  {    printf("\nPlease don't joking, you should choose 1 or 2\n");    printf("Whether you choose reading data from LCD SAVEING file to show on LCD?\n");    printf("[1]loading data from LCD saving file\n");    printf("[2]ignore\n");    printf("please choose 1 or 2:");    scanf("%d",&user_choose);  }  if(user_choose==1)  {    lcddatafp=fopen("/mnt/lcdsaving","ab+");    if(lcddatafp==NULL)    {      perror("Open file error:");      exit(0);    }  lcddata_length=0;  i=0;  while((saving_data[i++]=fgetc(lcddatafp))!= EOF)    {   lcd_delay(5);     }  lcddata_length=i-1;  printf("reading %d bytes form flash\n",lcddata_length);    fclose(lcddatafp);    if(lcddata_length > 1 && lcddata_length < 33)    {
      strncpy(lcd_msg32, saving_data,lcddata_length);
      for(i=lcddata_length;i<33;i++)                        
	  {
	    lcd_msg32[i]=(char)0x20;                                       
	  }
    }else    {
      strncpy(lcd_msg32, saving_data, 32);                             
    }
    lcd_msg32[32]='\0';
    printf("The data showing on LCD:%s\n", lcd_msg32);  }  ioctl_set_msg(file_desc, lcd_msg32);
  lcd_delay(20);                printf("please input string data:\n");  scanf("%s",lcd_msg32);  ioctl_set_msg(file_desc, lcd_msg32);
  lcd_delay(20);  printf("Whether you save data to LCD SAVEING file for showing on next startup?\n");  printf("[1]save data to LCD saving file\n");  printf("[2]cancle\n");  printf("please choose 1 or 2:");  scanf("%d",&user_choose);  while(!((user_choose==1)||(user_choose==2)))  {    printf("\nPlease don't joking, you should choose 1 or 2\n");    printf("Whether you save data to LCD SAVEING file for showing on next startup?\n");    printf("[1]save data to LCD saving file\n");    printf("[2]cancle\n");    printf("please choose 1 or 2:");    scanf("%d",&user_choose);  }  if(user_choose==1)  {    lcddatafp=fopen("/mnt/lcdsaving","w+");    if(lcddatafp==NULL)    {      perror("Open file error:");      exit(0);    }   for(i=0;lcd_msg32[i]&&i<32;i++)
   {
	   fputc(lcd_msg32[i],lcddatafp);      lcd_delay(5);
   }
  printf("writing %d bytes to flash\n",i);    fclose(lcddatafp);  }
  
  
  lcd_msg32R[32]='\0';
  strncpy(lcd_msg32R,lcd_msg32,32);  
  for(i=0;i<32;i++)     {
	    //printf("line%d:",i);
	    memcpy(lcd_msg32,lcd_msg32R+1,31);    
        memcpy(lcd_msg32+31,lcd_msg32R,1);
        memcpy(lcd_msg32R,lcd_msg32,32);
  //note:使用strncpy函数则会出现拷贝不全的错误
		/*for (j=0;j<32;j++) 
		{
          printf("%c",lcd_msg32[j]);
		}
		printf("\n");*/
      ioctl_set_msg(file_desc, lcd_msg32);
      lcd_delay(20);
     } 
  close(file_desc);
  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -