📄 caijiji.c
字号:
//unsigned char val = data; if(seg == LEFT) ioctl(fd, LEFT_DATA, (unsigned long)&data); //outportb(0x305, data); else ioctl(fd, RIGHT_DATA, (unsigned long)&data); //outportb(0x307, data);}void SetPage(uchar lpage, uchar rpage, int fd){ WriteLcdCmd(LEFT, 0xB8|lpage, fd); WriteLcdCmd(RIGHT, 0xB8|rpage, fd); }void SetColumn(uchar lcol, uchar rcol, int fd){ WriteLcdCmd(LEFT, lcol, fd); WriteLcdCmd(RIGHT, rcol, fd);}void DispWord(uchar row, uchar col, uchar word[], int fd){ uchar i, page; for(page=0; page<2; page++) { if(row == 2) SetPage(page+1, page+1, fd); else SetPage(page+(row<<1), page+(row<<1), fd); if(col<8) { SetColumn(col<<3, 0, fd); for(i=0; i<8; i++) { WriteLcdData(LEFT, word[(page<<3)+i], fd); } } else { SetColumn(0, (col-8)<<3, fd); for(i=0; i<8; i++) { WriteLcdData(RIGHT, word[(page<<3)+i], fd); } } }}void ClrScr(int fd){ uchar i, page; for(page=0; page<4; page++) { SetPage(page, page, fd); SetColumn(0, 0, fd); for(i=0; i<61; i++) { WriteLcdData(LEFT, 0x00, fd); WriteLcdData(RIGHT, 0x00, fd); } }}static struct termios initial_settings, new_settings;static int peek_character = -1;int kbhit(){ char ch; int nread; if(peek_character != -1) return 1; new_settings.c_cc[VMIN]=0; tcsetattr(0, TCSANOW, &new_settings); nread = read(0,&ch,1); new_settings.c_cc[VMIN]=1; tcsetattr(0, TCSANOW, &new_settings); if(nread == 1) { peek_character = ch; //peek_character = -1; return 1; } return 0;}void *display_stat(void){ uchar space[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*" ",0*/ uchar num0[] ={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,};/*"0",0*/uchar num1[]={0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,};/*"1",0*/uchar num2[]={0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,};/*"2",0*/uchar num3[]={0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,};/*"3",0*/ uchar num4[]={0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,};/*"4",0*/ uchar num5[]={0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,};/*"5",0*/ uchar num6[]={0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,};/*"6",0*/ uchar num7[]={0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,};/*"7",0*/ uchar num8[]={0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,};/*"8",0*/ uchar num9[]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,};/*"9",0*/ uchar k[]={0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,};/*"k",0*/uchar o[]={0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,};/*"o",0*/ uchar zs[]={0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,};//"S",0*/uchar zn[]={0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,};//"N",0*/uchar zt[]={0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,};/*"T",0*/uchar zd[]={0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,};//"D",0*/ uchar ze[]= {0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,};//"E",0*/uchar zc[]={0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,};/*"C",0*/uchar za[]={0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,};/*"A",0*/uchar zr[]={0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,};/*"R",0*/ uchar *word[] = {zs,ze,space,zn,zd,space,zs,zt,space,zc,za,zn,space,zn,ze,zt}; uchar *word1[]={num0,num1,num2,num3,num4,num5,num6,num7,num8,num9}; uchar *word2[] = {o,k}; uchar *word3[]={ze,zr}; uchar i; int fd; tcgetattr(0,&initial_settings); new_settings = initial_settings; new_settings.c_lflag &= ~ICANON; new_settings.c_lflag &= ~ECHO; new_settings.c_lflag &= ~ISIG; new_settings.c_cc[VMIN] = 1; new_settings.c_cc[VTIME] = 0; tcsetattr(0, TCSANOW, &new_settings); fd = open("/dev/sbslcd", O_WRONLY); printf("lcd fd = %d\n", fd); ClrScr(fd);// erro_put[0]=6;// erro_put[1]=24; while(!kbhit()) { ClrScr(fd); for(i=0; i<16; i++) DispWord(0, i, word[i], fd); if(erro_flag==1) { switch(erro_put[0]) { case 0: { DispWord(1, 0, word1[0], fd); DispWord(1, 1, word1[1], fd); break; } case 1: { DispWord(1, 0, word1[0], fd); DispWord(1, 1, word1[2], fd); break; } case 2: { DispWord(1, 0, word1[0], fd); DispWord(1, 1, word1[3], fd); break; } case 3: { DispWord(1, 0, word1[0], fd); DispWord(1, 1, word1[4], fd); break; } case 4: { DispWord(1, 0, word1[0], fd); DispWord(1, 1, word1[6], fd); break; } case 5: { DispWord(1, 0, word1[0], fd); DispWord(1, 1, word1[5], fd); break; } case 6: { DispWord(1, 0, word1[0], fd); DispWord(1, 1, word1[7], fd); break; } case 7: { DispWord(1, 0, word1[0], fd); DispWord(1, 1, word1[8], fd); } } switch(erro_put[1]) { case 0: { DispWord(1, 3, word1[0], fd); DispWord(1, 4, word1[1], fd); break; } case 1: { DispWord(1, 3, word1[0], fd); DispWord(1, 4, word1[2], fd); break; } case 2: { DispWord(1, 3, word1[0], fd); DispWord(1, 4, word1[3], fd); break; } case 3: { DispWord(1, 3, word1[0], fd); DispWord(1, 4, word1[4], fd); break; } case 4: { DispWord(1, 3, word1[0], fd); DispWord(1, 4, word1[5], fd); break; } case 5: { DispWord(1, 3, word1[0], fd); DispWord(1, 4, word1[6], fd); break; } case 6: { DispWord(1, 3, word1[0], fd); DispWord(1, 4, word1[7], fd); break; } case 7: { DispWord(1, 3, word1[0], fd); DispWord(1, 4, word1[8], fd); break; } case 8: { DispWord(1, 3, word1[0], fd); DispWord(1, 4, word1[9], fd); break; } case 9: { DispWord(1, 3, word1[1], fd); DispWord(1, 4, word1[0], fd); break; } case 10: { DispWord(1, 3, word1[1], fd); DispWord(1, 4, word1[1], fd); break; } case 11: { DispWord(1, 3, word1[1], fd); DispWord(1, 4, word1[2], fd); break; } case 12: { DispWord(1, 3, word1[1], fd); DispWord(1, 4, word1[3], fd); break; } case 13: { DispWord(1, 3, word1[1], fd); DispWord(1, 4, word1[4], fd); break; } case 14: { DispWord(1, 3, word1[1], fd); DispWord(1, 4, word1[5], fd); break; } case 15: { DispWord(1, 3, word1[1], fd); DispWord(1, 4, word1[6], fd); break; } case 16: { DispWord(1, 3, word1[1], fd); DispWord(1, 4, word1[7], fd); break; } case 17: { DispWord(1, 3, word1[1], fd); DispWord(1, 4, word1[8], fd); break; } case 18: { DispWord(1, 3, word1[1], fd); DispWord(1, 4, word1[9], fd); break; } case 19: { DispWord(1, 3, word1[2], fd); DispWord(1, 4, word1[0], fd); break; } case 20: { DispWord(1, 3, word1[2], fd); DispWord(1, 4, word1[1], fd); break; } case 21: { DispWord(1, 3, word1[2], fd); DispWord(1, 4, word1[2], fd); break; } case 22: { DispWord(1, 3, word1[2], fd); DispWord(1, 4, word1[3], fd); break; } case 23: { DispWord(1, 3, word1[2], fd); DispWord(1, 4, word1[4], fd); break; } case 24: { DispWord(1, 3, word1[2], fd); DispWord(1, 4, word1[5], fd); break; } case 25: { DispWord(1, 3, word1[2], fd); DispWord(1, 4, word1[6], fd); break; } case 26: { DispWord(1, 3, word1[2], fd); DispWord(1, 4, word1[7], fd); break; } case 27: { DispWord(1, 3, word1[2], fd); DispWord(1, 4, word1[8], fd); break; } case 28: { DispWord(1, 3, word1[2], fd); DispWord(1, 4, word1[9], fd); break; } case 29: { DispWord(1, 3, word1[3], fd); DispWord(1, 4, word1[0], fd); break; } case 30: { DispWord(1, 3, word1[3], fd); DispWord(1, 4, word1[1], fd); break; } case 31: { DispWord(1, 3, word1[3], fd); DispWord(1, 4, word1[2], fd); } } DispWord(1, 6, word3[0], fd); DispWord(1, 7, word3[1], fd); }// if(erro_flag==0) if((back==1)&&(erro_flag==0)) { DispWord(1, 6, word2[0], fd); DispWord(1, 7, word2[1], fd); } if(swit==1) { if(can_erroflag==0) { DispWord(1, 9, word2[0], fd); DispWord(1, 10, word2[1], fd); } else { DispWord(1, 9, word3[0], fd); DispWord(1, 10, word3[1], fd); } } else { if(net_erroflag==0) { DispWord(1, 13, word2[0], fd); DispWord(1, 14, word2[1], fd); } else { DispWord(1, 13, word3[0], fd); DispWord(1, 14, word3[1], fd); } } sleep(1); } tcsetattr(0, TCSANOW, &initial_settings); close(fd); return 0; }int main(int argc,char *argv[]){ int n,socklen,ret; pthread_t san485_pthread,dis_pthread; pthread_mutex_init(&net_lock,NULL); pthread_mutex_init(&can_lock,NULL); if(argc!=3) { printf("usage:fun opra arg\n"); printf("fun--function's name ;opra--1or2,1--can,2--net;arg--server can or net args\n"); exit(-1); } swit=atoi(argv[1]); if(swit==1) sercan_id=atoi(argv[2]); else strcpy(servip0,argv[2]); memset(com485,0,8*sizeof(struct config_com)); ret=serial232(com485,&can_conf,&net_conf);//接受主机配置信息 if(ret!=0) { if(load_conf()==0) { printf("232 configure failed!!\n "); printf("load default config!\n"); } else my_erro("config erro"); } // printf("com485[0].config_duce[1].ad_len=%d\n",com485[0].conduce[1].ad_len);// printf("com485[1].config_duce[1].code=%d\n",com485[1].conduce[1].code); ret=serial485_init(com485);//配485 if(ret<0) my_erro("485 erro"); if(pthread_create(&san485_pthread,NULL,(void *)scan_485,NULL)!=0) { printf("create scan485 fail\n"); pthread_join(san485_pthread, NULL); my_erro("scan erro"); } if(pthread_create(&dis_pthread,NULL,(void *)display_stat,NULL)!=0) { printf("create display fail\n"); pthread_join(dis_pthread, NULL); my_erro("display erro"); } if(swit==1) can_operation(); else net_oper(); for(n=0;n<8;n++) close(fd_485[n]); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -