📄 test.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 + -