[GTER] Display ServerU

Rodrigo Meireles mikrotikfull at gmail.com
Mon Feb 1 20:06:05 -02 2016


Patrick obrigado pela aula!!!
TOP

2016-02-01 18:49 GMT-03:00 Patrick Tracanelli <eksffa at freebsdbrasil.com.br>:

> Exatamente, o primeiro passo é como o Alexandre mencionou, ter o device.
> Tanto LCM, keypad quanto controle programável de bypass vão precisar de
> modulos complementares.
>
> Ja passou dessa fase? Os downloads dos módulos de kernel tanto pro display
> quanto do keypad em:
>
> http://main.mia.serveru.us/pub/l/ServerU/plcm/
>
> Voce precisa compilar para a mesma versão de kernel do VyOS, uma vez
> passando essa fase basta scriptar ou programar.
>
> O pacote tem 2 demos escritos em C que permitem manipular, e o próprio
> utility que voce pode usar via shell script mesmo.
>
> Prepare o ambiente com mesma glibc e kernel e envie o modulo pra la. O
> pacote ja vem com modulo compilado mas sabe como é, o ideal é vc sempre
> compilar vc mesmo. Se tiver problemas abra um ticket conosco :-)
>
>
> http://support.serveru.us/index.php?/ServerU/Knowledgebase/Article/View/62/0/how-to-control-serveru-plcm-device-your-self
>
> http://support.serveru.us/index.php?/ServerU/Knowledgebase/Article/View/74/0/controle-das-interfaces-bypass-no-serveru
>
> Temos alguns usuarios de Linux que reportaram sucesso ao usar também o
> lcdproc quanto utility quanto daemon, ja que ele suporta uma gama de LCDs
> de 2 linhas em porta paralela, serial e UART. Mas o que recomendamos é o
> driver acima e fazer acesso direto pela utility adequada.
>
> Seguem samples.
>
>
> /*
>  * ServerU PLCM Utility
>  *
>  * ServerU - http://www.ServerU.com.br http://www.ServerU.us
>  * PLCM with 2 lines with 4 keys pad model Netmap L100 & Netmap L800
>  *
>  * Developed and teste for/on FreeBSD RELENG_8, RELENG_9, RELENG_10
>  * Ported and tested on Linux 2.4, Linux 2.6, Linux 3.0, 3.1 and 3.2
>  *
>  * Porting Notes: parei de usar a &plcm e passei a mandar o (int) direto;
>  * os valores dos botoes do keypad sao diferentes tambem o retorno do
>  * hardware;
>  *
>  *
>  */
>
> #include <sys/file.h>
> #include <stdio.h>
> #include <string.h>
> //#include "serveru-plcm-util.h"
> #include "../serveru-plcm-util.h"
>
> int main(int argc,char *argv[])
> {
>         int devfd;
>         unsigned char tmp_str[20];
>
>         if (argc < 2) {
>          printf("Erro! Exemplo de uso:\n %s \"Valor na PLCM1...\" \"Valor
> na PLCM2...\"\n",argv[0]);
>          return(1);
>         }
>
>
>         iopl(3);
>         printf("ServerU PCL Test Sample - Write @LCM1 and @LCM2\n");
>         devfd = open("/dev/plcm_drv",O_RDWR);
>         if( devfd == -1 )
>         {
>                 printf("Can not open /dev/plcm_drv\n");
>                 return -1;
>         }
>         ioctl(devfd,PLCM_IOCTL_CLEARDISPLAY,0);
>         //show input string
>         printf("Input1: %s\n",argv[1]);
>         printf("Input2: %s\n",argv[2]);
>         memset(tmp_str,0,20);
>         strcpy(tmp_str,argv[1]);
>         ioctl(devfd,PLCM_IOCTL_SET_LINE,1);
>         write(devfd,tmp_str,20);
>         memset(tmp_str,0,20);
>         strcpy(tmp_str,argv[2]);
>         ioctl(devfd,PLCM_IOCTL_SET_LINE,2);
>         write(devfd,tmp_str,20);
>
>         close(devfd);
>         return 0;
> }
>
>
> #!/bin/sh
> #
> # ServerU PLCM Utility
> #
> # ServerU - http://www.ServerU.com.br http://www.ServerU.us
> # PLCM with 2 lines with 4 keys pad model Netmap L100 & Netmap L800
> #
> # Example useless shell script
> #
> # Remember LCM display 1 and 2 has 21 chars limit.
> #
>  ./serveru-plcm-util -LCM1
>  /bin/echo -n "Attention! Important!" > /dev/plcm_drv
>  ./serveru-plcm-util -LCM2
>  /bin/echo -n "This is just a test. " > /dev/plcm_drv
>
> count=20
>
> while [ $count -gt 0 ] ; do
>  ./serveru-plcm-util -Off
>  sleep 0.3
>  ./serveru-plcm-util -On
>  sleep 0.3
>  count=$(( $count -1 ))
> done
>
>  ./serveru-plcm-util -On
>
> /*
>  * ServerU PLCM Utility
>  *
>  * ServerU - http://www.ServerU.com.br http://www.ServerU.us
>  * PLCM with 2 lines with 4 keys pad model Netmap L100 & Netmap L800
>  *
>  * Developed and teste for/on FreeBSD RELENG_8, RELENG_9, RELENG_10
>  * Ported and tested on Linux 2.4, Linux 2.6, Linux 3.0, 3.1 and 3.2
>  *
>  * Porting Notes: parei de usar a &plcm e passei a mandar o (int) direto;
>  * os valores dos botoes do keypad sao diferentes tambem o retorno do
>  * hardware;
>  *
>  *
>  */
> #include <sys/types.h>
> #include <sys/ioctl.h>
> #include <sys/file.h>
> #include <stdio.h>
> #include <stdlib.h>
> #include <string.h>
> #include <fcntl.h>
> #include <unistd.h>
> #include <err.h>
> #include "serveru-plcm-util.h"
>
> int usage(int devfd) {
>   printf("Comando Invalido\n");
>   printf("Uso: serveru-plcm-util
> [-stop|-On|-Off|-DispOff|-DispOn|-LCM1|-LCM2|-Keypad|-Read1|-Read2|-Clear]\n");
>   printf("ServerU LCM Utility by ServerU Inc\n");
>   close(devfd);
>   return 0;
> }
>
> int main(int argc, char *argv[])
> {
>         struct _plcm plcm;
>         int devfd;
>         unsigned char Ret_Message1[40] = "";
>         unsigned char Ret_Message2[40] = "";
>         int i = 0;
>         unsigned char Keypad_Value = 0, Pre_Value = 0, Counter = 0;
>         unsigned char Keypad_Message[40] = "";
>         unsigned char Up[]    = "Up   ";
>         unsigned char Down[]  = "Down ";
>         unsigned char Left[]  = "Left ";
>         unsigned char Right[] = "Right";
>         unsigned char detect_press;
>         unsigned char detect_dir;
>         int MaxTestTime = 1 ; // 15 Sec
>
>         devfd = open("/dev/plcm_drv", O_RDWR);
>         if(devfd == -1)
>         {
>                 printf("Cant open: /dev/plcm_drv\n");
>                 return -1;
>         }
>         if(argc == 2)
>         {
>                 // Inicializa Defaults ServerU
>                 Keypad_Message[40] = "";
>                 plcm.amg=0;
>                 ioctl(devfd, PLCM_IOCTL_DISPLAY_B, 0); // desliga blink
>                 ioctl(devfd, PLCM_IOCTL_DISPLAY_C, 0);
>
>                 if(strcmp("-stop", argv[1]) == 0)
>                 {
>                     plcm.amg=0;
>                         ioctl(devfd, PLCM_IOCTL_STOP_THREAD, 0);
>                         printf("plcm_drv stopped.\n");
>                         close(devfd);
>                         return 0;
>                 }
>                 if(strcmp("-On", argv[1]) == 0)
>                 {
>                         plcm.amg=1;
>                         ioctl(devfd, PLCM_IOCTL_BACKLIGHT, 1);
>                         close(devfd);
>                         return 0;
>                 }
>                 if(strcmp("-Off", argv[1]) == 0)
>                 {
>                         plcm.amg=0;
>                         ioctl(devfd, PLCM_IOCTL_BACKLIGHT, 0);
>                         close(devfd);
>                         return 0;
>                 }
>                 if(strcmp("-LCM1", argv[1]) == 0)
>                 {
>                         plcm.amg=1;
>                         ioctl(devfd, PLCM_IOCTL_SET_LINE, 1);
>                         close(devfd);
>                         return 0;
>                 }
>                 if(strcmp("-LCM2", argv[1]) == 0)
>                 {
>
>                         plcm.amg=2;
>                         ioctl(devfd, PLCM_IOCTL_SET_LINE, 2);
>                         close(devfd);
>                         return 0;
>                 }
>                 if(strcmp("-Keypad", argv[1]) == 0)
>                 {
>                         Keypad_Message[40] = "";
>                         plcm.amg=1;
>                         ioctl(devfd, PLCM_IOCTL_SET_LINE, 1);
>                         do{
>                                 plcm.amg=0;
>                                 //ioctl(devfd, PLCM_IOCTL_GET_KEYPAD,
> &plcm);
>                                 ioctl(devfd, PLCM_IOCTL_GET_KEYPAD, 0); //
> Linux
>                                 //Keypad_Value=plcm.key_value;
>                                 Keypad_Value=ioctl(devfd,
> PLCM_IOCTL_GET_KEYPAD, 0); // Linux
>                                 detect_press=(Keypad_Value & 0x40);
>                                 detect_dir=(Keypad_Value & 0x28);
>                                 switch(detect_dir)
>                                 {
>                                         case 0x00:
>
> strcpy(Keypad_Message,"2-");
>                                                 break;
>                                         case 0x20:
>
> strcpy(Keypad_Message,"1-");
>                                                 break;
>                                         case 0x08:
>
> strcpy(Keypad_Message,"3-");
>                                                 break;
>                                         case 0x28:
>
> strcpy(Keypad_Message,"4-");
>                                                 break;
>
>                                 // Mas no Linux os valores podem ser outros
>                                 /*
>                                         case 0xC7:
>                                                 strcpy(Keypad_Message,
> "1-");
>                                                 break;
>                                         case 0xE7:
>                                                 strcpy(Keypad_Message,
> "2-");
>                                                 break;
>                                         case 0xEF:
>                                                 strcpy(Keypad_Message,
> "3-");
>                                                 break;
>                                         case 0xCF:
>                                                 strcpy(Keypad_Message,
> "4-");
>                                                 break;
>                                  */
>                                 }
>                                 switch(detect_press)
>                                 {
>                                         // Press e Release funcional igual
> no FreeBSD e Linux
>                                         case 0x40:
>
> strcat(Keypad_Message,"Press  ");
>                                         case 0x00:
>
> strcat(Keypad_Message,"Release");
>                                 }
>
> //printf("Value:%x:%s\n",plcm.key_value,Keypad_Message);
>
> printf("Value:%x:%s\n",Keypad_Value,Keypad_Message);
>
>                                 plcm.amg=0;
>                                 //write(devfd, Keypad_Message, 40);
>                                 Pre_Value = Keypad_Value;
>                                 MaxTestTime--;
>                                 if(MaxTestTime == 0)
>                                 {
>                                         break;
>                                 }
>                         }while(1);
>                         close(devfd);
>                         return 0;
>                 }
>                 if(strcmp("-DispOff", argv[1]) == 0)
>                 {
>                         plcm.amg=0;
>                         ioctl(devfd, PLCM_IOCTL_DISPLAY_D, 0);
>                         close(devfd);
>                         return 0;
>
>                 }
>                 if(strcmp("-DispOn", argv[1]) == 0)
>                 {
>                         plcm.amg=1;
>                         ioctl(devfd, PLCM_IOCTL_DISPLAY_D, 1);
>                         close(devfd);
>                         return 0;
>
>                 }
>                 if(strcmp("-Read1", argv[1]) == 0)
>                 {
>                         plcm.amg=2;
>                         ioctl(devfd, PLCM_IOCTL_SET_LINE, 2);
>                         read(devfd, Ret_Message1, sizeof(Ret_Message1));
>                         printf("Read LCM1: %s\n", Ret_Message1);
>                         close(devfd);
>                         return 0;
>                 }
>                 if(strcmp("-Read2", argv[1]) == 0)
>                 {
>                         plcm.amg=2;
>                         ioctl(devfd, PLCM_IOCTL_SET_LINE, 2);
>                         read(devfd, Ret_Message2, sizeof(Ret_Message2));
>                         printf("Read LCM2: %s\n", Ret_Message2);
>                         close(devfd);
>                         return 0;
>                 }
>                 if(strcmp("-Clear", argv[1]) == 0)
>                 {
>                         plcm.amg=0;
>                         ioctl(devfd, PLCM_IOCTL_CLEARDISPLAY, 0);
>                         plcm.amg=0;
>                         ioctl(devfd, PLCM_IOCTL_RETURNHOME, 0);
>                         close(devfd); return 0;
>                 }
>
>                 usage(devfd); return 0;
>         }
>         usage(devfd);
> }
>
>
>
>
>
>
> > On 01/02/2016, at 15:47, Alexandre J. Correa (Onda) <
> alexandre at onda.net.br> wrote:
> >
> > http://www.serveru.us/pt/doc/lcm-util
> >
> > ele tem um device no /dev para gerenciar isto, no site acima fala mais
> sobre...
> >
> > se o kernel não estiver com o driver, precisa carregar/instalar para ter
> acesso.
> >
> >
> > Em 01/02/2016 13:31, Rafael Galdino escreveu:
> >> Boa tarde srs.
> >>
> >> alguém já colocou o serverU para mostrar CPU, Banda etc... no display
> >> utilizando o Vyos?
> >> --
> >> gter list    https://eng.registro.br/mailman/listinfo/gter
> >
> >
> > --
> > Sds.
> >
> > Alexandre Jeronimo Correa
> > Sócio-Administrador
> >
> > Office: +55 34 3351 3077
> >
> > Onda Internet
> > www.onda.net.br
> >
> > --
> > gter list    https://eng.registro.br/mailman/listinfo/gter
>
> --
> Patrick Tracanelli
>
> FreeBSD Brasil LTDA.
> Tel.: (31) 3516-0800
> 316601 at sip.freebsdbrasil.com.br
> http://www.freebsdbrasil.com.br
> "Long live Hanin Elias, Kim Deal!"
>
> --
> gter list    https://eng.registro.br/mailman/listinfo/gter
>



-- 
*Rodrigo Melo Meireles*

*CTO - Solustic Solucoes em Tecnologia-TI*
Analista/Consultor de Redes
Analista de Segurança
Mikrotik Certified
URBSS Certified
85.40629515 85.996459346



More information about the gter mailing list