Exemple #1
0
void Glcd::Sendbytes(char cmd,char *data,unsigned int len)
{
  if(!Can_use_lcd)//LCDセマフォロックしてない時
    {
      MySemop(LOCK);
      Base::Sendbytes(cmd,data,len);
      MySemop(UNLOCK);
    }
  else //すでにロックしてる時
    Base::Sendbytes(cmd,data,len);
}
Exemple #2
0
void Glcd::Sendbyte(char cmd,uchar data)
{
  if(!Can_use_lcd)//LCDセマフォロックしてない時
    {
      MySemop(LOCK);
      Base::Sendbyte(cmd,data);
      MySemop(UNLOCK);
    }
  else //すでにロックしてる時
    Base::Sendbyte(cmd,data);
}
Exemple #3
0
void Glcd::SendData_RGB565(char *data,int num)
{
  if(!Can_use_lcd)//LCDセマフォロックしてない時
    {
      MySemop(LOCK);
      Base::SendData_RGB565(data,num);
      MySemop(UNLOCK);
    }
  else //すでにロックしてる時
      Base::SendData_RGB565(data,num);
}
Exemple #4
0
void Glcd::Draw_rectangle(uchar x,uchar y,uchar w,uchar h, uchar *rgb)
{
  if(!Can_use_lcd)//LCDセマフォロックしてない時
    {
      MySemop(LOCK);
      Base::Draw_rectangle(x,y,w,h,rgb);
      MySemop(UNLOCK);
    }
  else //すでにロックしてる時
    Base::Draw_rectangle(x,y,w,h,rgb);
  
}
Exemple #5
0
Glcd::~Glcd()
{
  unsigned char rgb[3]={200,200,200};
  if(!Can_use_lcd)//LCDセマフォロックしてない時
    {
      MySemop(LOCK);
      Base::Draw_rectangle(0,0,get_lcd_H(),get_lcd_W(),rgb);
      MySemop(UNLOCK);
    }
  else //すでにロックしてる時
    Base::Draw_rectangle(0,0,get_lcd_H(),get_lcd_W(),rgb);
  
  //このインスタンスがセマフォ集合を作ったのなら解放する
  if(Is_Created_sem)
    {
      if(semctl(semid,0,IPC_RMID,ctl_arg)==-1)
	{
	  perror("In Glcd class : semctl rm error");
	  exit(1);
	}
    }
}
Exemple #6
0
void child2(int semid)
{
  char buff[1024];
  printf("子プロセス2開始\n");
  
  MySemop(semid, CHILD2, LOCK);
  MySemop(semid, CHILD1, UNLOCK);
  
  if((fp = fopen(file, "r")) == NULL)
    {
      perror("子プロセス2 ");
      exit(EXIT_FAILURE);
    }
  printf("子プロセス2:ファイルの内容を表示します\n");
  while(fgets(buff, 1024, fp) != NULL)
    {
      printf("%s", buff);
    }
  fclose(fp);
  
  printf("子プロセス2終了\n");
  exit(EXIT_SUCCESS);
}
Exemple #7
0
void child1(int semid)
{
  int line_cnt;
  printf("子プロセス1開始\n");

  if((fp = fopen(file, "w")) == NULL)
    {
      perror("子プロセス1 ");
      exit(EXIT_FAILURE);
    }
  for(line_cnt = 1; line_cnt <= 5; ++line_cnt) 
    {
      fprintf(fp, "子プロセス1のメッセージ%d\n", line_cnt);
      sleep(1);
    }
  fclose(fp);
  
  MySemop(semid, CHILD2, UNLOCK);
  MySemop(semid, CHILD1, LOCK);
  
  printf("子プロセス1終了\n");
  exit(EXIT_SUCCESS);
}