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

📄 caijiji.c

📁 linux modbus程序
💻 C
📖 第 1 页 / 共 3 页
字号:
	//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 + -