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