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

📄 io_pb.c

📁 2410下面通过MOTO手台录音程序;自己用的
💻 C
字号:
#include <vxWorks.h>
#include <ioLib.h>
#include <stdio.h>
#include <string.h>
#include <sockLib.h> 
#include <socket.h>
#include <ioLib.h>
#include <time.h>

#include "fioLib.h"
#include "IO_PB.h"

#include "s3c2410.h"
#include "taskLib.h"
#include "semLib.h"
#include "sysLib.h"
#include "time.h"

#include "oled.h"

/********************io test****************************************************/
int 	tidTaskRunStatus;
int 	tidTaskRecvUart;
int 	tidTaskIoTest;
void 	RCD_RunStatus();
void 	RCD_IO_init();
void	RCD_UART();
void 	RCD_IO_test();
void 	RCD_OpenImageFile(char *str);
void    RCD_Gethanzi(char *hanzi);
void 	RCD_Display(char *str,int x_begin,int x_end,int y_begin,int y_end);
/************************************************************************/

FILE *stream;
unsigned char display_buf[32][4];
unsigned char hanzi_buff[32];

void start(void)
{ 
	printf("system start! \n");

	RCD_IO_init();
	oled_init_io();
	Initial_ssd1325();
	

   	tidTaskRunStatus = taskSpawn ("tRunStatus", 201, 0, 2000,
                              (FUNCPTR)RCD_RunStatus,0,0,0,0,0,0,0,0,0,0); 
 	printf("tRunStatus start! \n");	
/*
   	tidTaskIoTest = taskSpawn ("tRCD_IO_test", 202, 0, 2000,
                              (FUNCPTR)RCD_IO_test,0,0,0,0,0,0,0,0,0,0); 
 	printf("tRunStatus start! \n");	
	
 	tidTaskRecvUart =  taskSpawn ("tRecvUart", 200, 0, 20000,
                              (FUNCPTR)RCD_UART,0,0,0,0,0,0,0,0,0,0);
	if(tidTaskRecvUart == ERROR)
		printf("tRecvUart start err! \n");
	else
		printf("tRecvUart start! \n");
*/
	return;   
		
}

void end(void)
{ 	
	taskDelete(tidTaskRunStatus);
 	printf("tRunStatus end! \n");
/*
	taskDelete(tidTaskIoTest);
 	printf("tRCD_IO_test end! \n");
	
	taskDelete(tidTaskRecvUart);
	printf("tRecvUart end! \n");
*/
	printf("system end! \n");
	return;   			
}

void RCD_RunStatus(void)
{
	int i=0;
	int GPB_IO_NUM=11;	
	BOOL bLED_FLASH_FLAG = TRUE; 
	char *str1 = "/flash0/HZK16.bin";
	char *str2 = display_buf;

	/*usrTffsConfig(0,0,"/flash0");*/ 
	RCD_OpenImageFile(str1);
	RCD_Gethanzi("川");
	RCD_trans_degree();
    	FOREVER
    	{
        	if( !bLED_FLASH_FLAG )
        	{
           		bLED_FLASH_FLAG = TRUE;	
			for(i=8;i<GPB_IO_NUM;i++)			
			GPB_IO_OUT_ON(i);
			/*show();*/
			RCD_Display(str2,0x00,0x07,0x00,0x0f);
			/*blank();*/
			/*Fill();*/
		/*	for(i=11;i<16;i++)
			GPE_IO_OUT_ON(i);
			GPG_IO_OUT_ON(11);*/	 				
        	}

        	else
        	{
	  		bLED_FLASH_FLAG = FALSE; 
			for(i=8;i<GPB_IO_NUM;i++)			
 			GPB_IO_OUT_OFF(i);
		/*	for(i=11;i<16;i++)
			GPE_IO_OUT_OFF(i);
			GPG_IO_OUT_OFF(11);*/
			/*blank();*/
			Fill();	
        	}
    		taskDelay(sysClkRateGet());			
	}
}

/************************************************************************/
void RCD_IO_init(void)
{	
	int i=0;
	
	rGPBCON=0;
	
	GPB_IO_OUT_SET(8);
	GPB_IO_OUT_SET(9);
	GPB_IO_OUT_SET(10);
/*	for(i=0;i<8;i++)
	GPB_IO_OUT_SET(i);*/

	rGPECON=0;
	GPE_IO_IN_SET(8);
	GPE_IO_IN_SET(9);
	GPE_IO_IN_SET(10);
/*	for(i=11;i<16;i++)
	GPE_IO_OUT_SET(i);*/
	

	rGPGCON=0;
	GPG_IO_IN_SET(2);
	GPG_IO_IN_SET(5);
	GPG_IO_IN_SET(6);
	GPG_IO_IN_SET(7);
/*	GPG_IO_OUT_SET(11);	*/
}
/************************************************************************/
void RCD_IO_test(void)
{
	unsigned int temp=0;
	unsigned int i=0;
	unsigned char key[7];
	for(i=0;i<7;i++)
	key[i]=0x03;

	temp = rGPEDAT;
	temp = rGPGDAT;
	taskDelay(sysClkRateGet()/2);
	
	while(1)
	{
		temp = rGPEDAT;
		for(i=0;i<7;i++)
		{
			key[i]=key[i]<<1;
			key[i]=key[i]&0x03;
		}



		if(temp&(0x1<<8))
		{			
			key[1]=key[1]+1;				
		}
		if(key[1]==0x02)
		{
			logMsg("key2 down!\n",0,0,0,0,0,0);
		}
		else if(key[1]==0x01)
		{
			logMsg("key2 up!\n",0,0,0,0,0,0);
		}

		if(temp&(0x1<<9))
		{			
			key[2]=key[2]+1;				
		}
		if(key[2]==0x02)
		{
			logMsg("key3 down!\n",0,0,0,0,0,0);
		}
		else if(key[2]==0x01)
		{
			logMsg("key3 up!\n",0,0,0,0,0,0);
		}

		if(temp&(0x1<<10))
		{			
			key[3]=key[3]+1;				
		}
		if(key[3]==0x02)
		{
			logMsg("key4 down!\n",0,0,0,0,0,0);
		}
		else if(key[3]==0x01)
		{
			logMsg("key4 up!\n",0,0,0,0,0,0);
		}


		temp = rGPGDAT;

		if(temp&(0x1<<5))
		{			
			key[4]=key[4]+1;				
		}
		if(key[4]==0x02)
		{
			logMsg("key5 down!\n",0,0,0,0,0,0);
		}
		else if(key[4]==0x01)
		{
			logMsg("key5 up!\n",0,0,0,0,0,0);
		}

		if(temp&(0x1<<6))
		{			
			key[5]=key[5]+1;				
		}
		if(key[5]==0x02)
		{
			logMsg("key6 down!\n",0,0,0,0,0,0);
		}
		else if(key[5]==0x01)
		{
			logMsg("key6 up!\n",0,0,0,0,0,0);
		}

		if(temp&(0x1<<7))
		{			
			key[0]=key[0]+1;				
		}
		if(key[0]==0x02)
		{
			logMsg("key1 down!\n",0,0,0,0,0,0);
		}
		else if(key[0]==0x01)
		{
			logMsg("key1 up!\n",0,0,0,0,0,0);
		}

		if(temp&(0x1<<2))
		{			
			key[6]=key[6]+1;				
		}
		if(key[6]==0x02)
		{
			logMsg("ptt down!\n",0,0,0,0,0,0);
		}
		else if(key[6]==0x01)
		{
			logMsg("ptt up!\n",0,0,0,0,0,0);
		}

		taskDelay(sysClkRateGet()/50);
	}
}
/************************************************************************/
void RCD_UART(void)
{	
	char	headc,bodyc;
	int 	i;
	int 	width;	
	int	bytesRead = 0;
	int	bytesWrite = 0;
	BOOL bREAD_FLAG = FALSE; 
	struct timeval TelnetTimer;	
    	fd_set CMM_UARTS;
		
	consoleFd1 = open ("/tyCo/1", O_RDWR, 0);
	if(ERROR == consoleFd1)
	{
		printf("open /tyCo/1 error errno =%d\n",errno);
		return;
	}
	
   	(void) ioctl (consoleFd1, FIOBAUDRATE, 9600);
	
	ioctl(consoleFd1,SIO_HW_OPTS_SET,CS8/*|STOPB|PARENB|PARODD*/);
	
	(void) ioctl (consoleFd1, FIOSETOPTIONS,OPT_RAW);	
	 
	width = consoleFd1+1;
	
	FD_ZERO(&CMM_UARTS);
	FD_SET(consoleFd1, &CMM_UARTS);	
	TelnetTimer.tv_sec = 1;
	TelnetTimer.tv_usec = 0;
	
	while(1)
	{			
		if(select(width, &CMM_UARTS, 0, 0,0)==ERROR)
		{
			printf("error\n");				
		}
		else
		{			
			if(FD_ISSET(consoleFd1, &CMM_UARTS))
			{
				/*logMsg("1111\n",0,0,0,0,0,0);*/
				bytesRead = read(consoleFd1, &bodyc, 1);			
				if(bytesRead == 1)
				{						
				/*	logMsg("%02x\n",bodyc,0,0,0,0,0);
					bytesWrite=write(consoleFd1,&bodyc,1);*/
					bREAD_FLAG=TRUE;
				}								
			}					
		}
		if(select(width, 0, &CMM_UARTS, 0,0)==ERROR)
		{
			printf("error\n");				
		}
		else
		{			
			if(FD_ISSET(consoleFd1, &CMM_UARTS))
			{	
				if(bREAD_FLAG)
				{
					bytesWrite=write(consoleFd1,&bodyc,1);
					bREAD_FLAG=FALSE;
				}															
			}					
		}
	}
}


void RCD_OpenImageFile(char *str)
{

	int fileEnd,fileStart;
	int imageSize = 0;


    stream = fopen(str,"rb");
    printf("stream = %02x \n",stream);

    if(stream==NULL)
    {
		printf("\nERROR:can't open the file.\n");
    }

    fseek(stream,0L,SEEK_END);	
    fileEnd=ftell(stream);
    fseek(stream,0L,SEEK_SET); 
    fileStart=ftell(stream);
 
    imageSize=fileEnd-fileStart;
  
    printf("imageSize = %02x\n",imageSize);
}

void RCD_Gethanzi(char *hanzi)
{
	unsigned int hanzi_qu;
	unsigned int hanzi_wei;
	int hanzi_location;
	int i;

	hanzi_qu = *hanzi - 0xA0;
	hanzi++;
	hanzi_wei = *hanzi - 0xA0;
	hanzi_location = ((hanzi_qu-1)*94+(hanzi_wei-1))*32;
	printf("hanzi_location = %02x\r\n",hanzi_location);
	
	fseek(stream,hanzi_location,SEEK_SET);
	
	for(i=0; i<32; i++)
	{
		hanzi_buff[i] = fgetc(stream);
		printf("0x%02x,",hanzi_buff[i]);
	}
	printf("\r\n");
}

void RCD_trans_degree()
{
	int i = 0;
	int j = 0;
	unsigned char arr;
	
	for(i=0; i<16; i++)
	{
		for(j=0; j<8; j++)
		{
			display_buf[i][j] = 0;
		}
	}
	
	for(i=0; i<32; i++)
	{
		for(j=0;j<4;j++)
		{
			arr = (hanzi_buff[i] & (1<<7));
			if(arr)
				display_buf[i][0] |= 0xf0;
			else
				display_buf[i][0] &= 0x0f;
			
			arr = (hanzi_buff[i] & (1<<6));
			if(arr)
				display_buf[i][0] |= 0x0f;
			else
				display_buf[i][0] &= 0xf0;
			
			arr = (hanzi_buff[i] & (1<<5));
			if(arr)
				display_buf[i][1] |= 0xf0;
			else
				display_buf[i][1] &= 0x0f;
			
			arr = (hanzi_buff[i] & (1<<4));
			if(arr)
				display_buf[i][1] |= 0x0f;
			else
				display_buf[i][1] &= 0xf0;
			
			arr = (hanzi_buff[i] & (1<<3));
			if(arr)
				display_buf[i][2] |= 0xf0;
			else
				display_buf[i][2] &= 0x0f;
			
			arr = (hanzi_buff[i] & (1<<2));
			if(arr)
				display_buf[i][2] |= 0x0f;
			else
				display_buf[i][2] &= 0xf0;
			
			arr = (hanzi_buff[i] & (1<<1));
			if(arr)
				display_buf[i][3] |= 0xf0;
			else
				display_buf[i][3] &= 0x0f;
			
			arr = (hanzi_buff[i] & (1<<0));
			if(arr)
				display_buf[i][3] |= 0x0f;
			else
				display_buf[i][3] &= 0xf0;
		}
	}/*
	for(i=0; i<16; i++)
	{
		
		display_buf[2*i][0]=0xff;
		display_buf[2*i][1]=0x00;
		display_buf[2*i][2]=0xff;
		display_buf[2*i][3]=0x00;
		display_buf[2*i+1][0]=0xff;
		display_buf[2*i+1][1]=0x00;
		display_buf[2*i+1][2]=0xff;
		display_buf[2*i+1][3]=0x00;
		
	}*/
	for(i=0; i<32; i++)
	{
		for(j=0; j<4; j++)
		{
			printf("0x%02x,",display_buf[i][j]);
		}
	}
	printf("\r\n");
}
void RCD_Display(char *str,int y_begin,int y_end,int x_begin,int x_end)
{
	unsigned char x,y;
	unsigned int dat=0;
	int i,j;
	
	str = display_buf;
	logMsg("showt\n",0,0,0,0,0,0);
	Write_Register(0x15);/*set column start and end address*/      
	Write_Register(y_begin);/*start address  */   
	Write_Register(y_end);/*end address  */    
	Write_Register(0x75);/*set row address  */    
	Write_Register(x_begin);/*row start address  */ 
	Write_Register(x_end);/*row end address */

   	for(i=0;i<32;i++)
    {  
       	for(j=0;j<4;j++)
       	{
       		Write_Parameter(display_buf[i][j]);  
       	}
	}  
		
}

⌨️ 快捷键说明

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