LCD compatible HD44780 port série

Forum traitant de la distribution sécurisée montante nommée IP cop et basée sur la distribution Smoothwall. C'est à l'heure actuelle le forum le plus actif du site.

Modérateur: modos Ixus

LCD compatible HD44780 port série

Messagepar fleib » 09 Juin 2010 17:15

Bonjour,

Cela fait qq jours que je me bat avec un LCD récalcitrant, mais n'arrive pas à lui faire cracher le moindre caractère.

J'ai une install d'IPCop 1.4.21 toute fraiche et je tente de faire fonctionner lcdproc trouvé ici.

Quelqu'un aurait il déjà fait fonctionné le même engin?

Je pense que mon soucis vient de la déclaration du port série et du type de connexion...

Voici mon fichier LCDd.conf:

Code: Tout sélectionner
## Server section with all kinds of settings for the LCDd server ##
[server]
Driver=hd44780

# Tells the driver to bind to the given interface
Bind=127.0.0.1

# Listen on this specified port; defaults to 13666.
Port=13666

# Sets the reporting level; defaults to 2 (warnings and errors only).
ReportLevel=2

# Should we report to syslog instead of stderr ? Default: no
ReportToSyslog=yes

# Sets the default time in seconds to displays a screen.
WaitTime=10

# User to run as.  LCDd will drop its root priviledges,
# if any, and run as this user instead.
User=nobody

# If yes, the the serverscreen will be rotated as a usual info screen. If no,
# it will be a background screen, only visible when no other screens are
# active.
ServerScreen=no

# The server will stay in the foreground if set to true.
Foreground=no

# Where can we find the driver modules ?
# IMPORTANT: Make sure to change this setting to reflect your
#            specific setup! Otherwise LCDd won't be able to find
#            the driver modules and will thus not be able to
#            function properly.
# NOTE: Always place a slash as last character !
DriverPath=/usr/lib/lcd/

# GoodBye message: each entry represents a display line; default: builtin
GoodBye="Thanks for using    "
GoodBye="LCDproc for IPCop "
GoodBye="The bad packets and "
GoodBye="LCDd stop now! ;-)  "

# The "...Key=" lines define what the server does with keypresses that
# don't go to any client.
# These are the defaults:
#ToggleRotateKey=Enter
#PrevScreenKey=Left
#NextScreenKey=Right
#ScrollUpKey=Up
#ScrollDownKey=Down

# If you have only 4 keys, you can choose to use this:
ToggleRotateKey=Enter
PrevScreenKey=Up
NextScreenKey=Down

# If you have only 3 keys, you can choose to use this:
#ToggleRotateKey=Enter
#PrevScreenKey=Up

## The menu section. The menu is an internal LCDproc client. ##
[menu]
# You can configure what keys the menu should use. Note that the MenuKey
# will be reserved exclusively, the others work in shared mode.

# The following works excellent with 4 keys or more.
MenuKey=Escape
EnterKey=Enter
UpKey=Up
DownKey=Down
# If you have 6 keys you may define these as well
#LeftKey=Left
#RightKey=Right

# If you have only 3 keys, you could use something like this:
#MenuKey=Escape
#EnterKey=Enter
#DownKey=Down

## Hitachi HD44780 driver ##
[hd44780]

# Select what type of connection. See documentation for types.
# Possible connection Types are:
# 4bit, 8bit, winamp, serialLpt, picanlcd, lcdserializer, los-panel, vdr-lcd, vdr-wakeup, pertelian, bwctusb, lcd2usb, lis2, i2c

ConnectionType= picanlcd

# Specify the address of the parallel port the LCD is connected to.
# Common values for PORT are 0x278, 0x378 and 0x3BC. If not given, the default is 0x378.

#Port= 0x378

# If you are using a serial connection, you must set this parameter to the device your LCD is connected to.
# For example, if the display is connected to the first serial port, you have to set it to /dev/ttyS0. The default value is /dev/lcd.

Device= /dev/ttyS1

# Bitrate of the serial port (0 for interface default)
Speed=0

# If you have a keypad connected.
# You may also need to configure the keypad layout further on in this file.
Keypad=no

# set the initial contrast (for bwctusb only) [default: 0; legal: 0 - 1000]
Contrast=0

# If you have a switchable backlight.
Backlight=no

# If you have the additional output port ("bargraph") and you want to
# be able to control it with the lcdproc OUTPUT command
OutputPort=no

# Specifies if the last line is pixel addressable or it controls an
# underline effect. [default: true (= pixel addressable); legal: yes, no]
#Lastline=true

# Specifies the size of the LCD.
# In case of multiple combined displays, this should be the total size.
Size=16x2

# For multiple combined displays: how many lines does each display have.
# Vspan=2,2 means both displays have 2 lines.
#vspan=2,2

# If you have an HD66712, a KS0073 or an other 'almost HD44780-compatible',
# set this flag to get into extended mode (4-line linear).
# This flag is NOT the old obsolete Extended option.
#ExtendedMode=yes

# Character map to to map ISO-8859-1 to the LCD's character set
# [default: hd44780_default; legal: hd44780_default, ea_ks0073, sed1278f_0b ]
Charmap=hd44780_default

# If your display is slow and cannot keep up with the flow of data from
# LCDd, garbage can appear on the LCDd. Set this delay factor to 2 or 4
# to increase the delays. Default: 1.
#DelayMult=2

# Some displays (e.g. vdr-wakeup) need a message from the driver to that it
# is still alive. When set to a value bigger then null the character in the
# upper left corner is updated every <KeepAliveDisplay> seconds. Default: 0.
#KeepAliveDisplay=0

# If you experience occasional garbage on your display you can use this
# option as workaround. If set to a value bigger than null it forces a
# full screen refresh <RefreshDiplay> seconds. Default: 0.
#RefreshDisplay=5

# You can reduce the inserted delays by setting this to false.
# On fast PCs it is possible your LCD does not respond correctly.
# Default: true.
DelayBus=true

# If you have a keypad you can assign keystrings to the keys.
# See documentation for used terms and how to wire it.
# For example to give directly connected key 4 the string "Enter", use:
#   KeyDirect_4=Enter
# For matrix keys use the X and Y coordinates of the key:
#   KeyMatrix_1_3=Enter
#KeyMatrix_4_1=Enter
#KeyMatrix_4_2=Up
#KeyMatrix_4_3=Down
#KeyMatrix_4_4=Escape

# EOF


Au lancement de lcdstart, pas de message d'erreur, le serveur se lance bien.

Pareil pour lcdproc qui démarre sans broncher, mais rien sur l'afficheur qui ne bouge... Mystère... :(

Toute information serait la bienvenue.

Merci d'avance
Avatar de l’utilisateur
fleib
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 205
Inscrit le: 28 Mai 2009 14:50
Localisation: St Paul / La Réunion

Messagepar Lalsacien » 17 Juin 2010 07:32

Hello,

Il me semble que les LCD HD44780 fonctionnent sur un port parallèle et non sur un port série.

Slts
Lal
Lalsacien
Matelot
Matelot
 
Messages: 7
Inscrit le: 18 Sep 2008 12:35
Localisation: Strasbourg

Messagepar fleib » 23 Juin 2010 15:12

Tout juste, le HD44780 est un LCD sur port parallele, c'est pour cela que j'ai mentionné "compatible", car le circuit de controle est un MTC-S16205GMNHSGW (Microtips Technology) à base de KS0066, donc compatible HD44780, enfin d'après les infos que j'ai pu glaner à droite, à gauche...

Il est sur le port série COM2 (soit /dev/ttyS1 dans mon fichier de config).

Aurais tu déja fait fonctionner ce type de matériel?

Merci d'avance
Avatar de l’utilisateur
fleib
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 205
Inscrit le: 28 Mai 2009 14:50
Localisation: St Paul / La Réunion

Messagepar Franck78 » 23 Juin 2010 20:24

il y a quelquechose d'illogique dasn cette histoire. Soit c'est un composant // et il faut un prog adapté au dialogue sur un port // soit c'est un composant série et le prog diffère dans sa facon de dialoguer.
En aucun cas un constructeur d'écran LCD ne va produire un hybride // avec convertisseur série.

Alors décrit simplement comment tu as branché ton truc sur le port série.
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar Lalsacien » 25 Juin 2010 11:54

Je plussois la réponse de Franck78.
Lalsacien
Matelot
Matelot
 
Messages: 7
Inscrit le: 18 Sep 2008 12:35
Localisation: Strasbourg

Messagepar fleib » 29 Juin 2010 08:37

Tout d'abbord, merci de vous interresser à mon soucis.

Il est vrai que je n'ai vraiment décrit le contexte dans lequel je me trouve, voici donc une description.

J'ai acheté un boitier rackable avec 6 cartes ethernet (qui fonctionne très bien pour les fonctions liées au parefeu), mais le seul élément avec lequel je ne suis pas à l'aise est un écran 16*2 en facade.
Ce dernier n'a pas été monté par mes soins mais est livré intégré avec le boitier, il est connecté sur le COM2 directement sur les broches de la carte mère, c'est pour cette raison que j'ai parlé de port série. D'après mon revendeur, il s'agit d'un circuit de type MTC-S16205GMNHSGW (plus de détail sur cet afficheur, ici). Ce circuit est un dérivé du KS0066 (détails ici).

Ai je répondu à ta question, Franck?

Merci d'avance
Avatar de l’utilisateur
fleib
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 205
Inscrit le: 28 Mai 2009 14:50
Localisation: St Paul / La Réunion

Messagepar Franck78 » 29 Juin 2010 17:32

ton LCD MTC-S16205GMNHSGW est clairement de type paralèlle. Pour un exemple d'utilisation sur IPCop, il y a un topic dédié. Absolument aucune chance de brancher ça sur COMx.
Comment as-tu pu brancher ça sur un port série? Il y a encore un intermédiare (qui en 2010 serait plutôt un controleur USB:! )?
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar fleib » 02 Juil 2010 11:09

Franck,

Désolé de te tenir tête, j'espere que je ne vais pas provoquer ton courroux, mais il s'agit bien d'un branchement sur port série.

En effet, d'après mes recherches, le MTC-S16205GMNHSGW est de type perallele. Mais n'est il pas possible qu'il y ait un adaptateur serie/parallele en amont du MTC-S16205GMNHSGW?

De plus, la boite qui m'a vendu le boitier vient de me faire parvenir le code C d'un programme de test qui fait clairement apparaitre COM2...

Voici le code en question:

Code: Tout sélectionner
LCD test program source code:
/* AR-M9936 LCD display test program */
#include <stdio.h>
#include <dos.h>
#include <string.h>
#include <conio.h>
typedef unsigned char byte;
const int com2_ioport=0x2F8;
const int com2_intnum=0x0B;
char nul[40];
void out_com2(byte cmd);
void init();
while(1) {
if(kbhit())
c=getch();
if(c==27)
break;
key=read_key();
switch(key) {
case 0x4D:
//printf("Up button\n");
show_message(msg_up);
break;
case 0x4B:
//printf("Down button\n");
show_message(msg_down);
break;
case 0x47:
//printf("Enter button\n");
show_message(msg_enter);
break;
case 0x4E:
//printf("ESC button\n");
show_message(msg_esc);
break;
default:
break; }
}
show_message(msg_bye2);
printf("Test finished\n");
}
void out_com2(byte cmd)
{ delay(10);
outportb(com2_ioport,cmd); }
byte read_key()
{ byte key;
out_com2(0xfe); //request
out_com2(0x06);
delay(10);
key=inportb(com2_ioport);
return key; }
void init()
{ char start[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
0xfe,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
int i;
printf("Initializing LCD com port....");
//set com2
outportb(com2_ioport+3,0x80); // set DLAB on
outportb(com2_ioport+0,0x0C); // 9600bps
outportb(com2_ioport+1,0x00);
outportb(com2_ioport+3,0x03); // set DLAB off. set line: 8 bits, 1 stop
// bit, no parity
for(i=0;i<16;i++) //init magic words
out_com2(start[i]);
out_com2(0xfe); //clear screen
out_com2(0x01);
strset(nul,' '); //prepare nul[]
printf(" LCD com port initialized!\n");
}
void show_message(char *str)
{ char msg_title[]="
Advanced-X ";
int title_len = strlen(msg_title); // supposed to be 16
int i;
out_com2(0xfe); //clear screen
out_com2(0x01);
out_com2(0xfe); //cursor home
out_com2(0x02);
for(i=0;i<title_len;i++) //display title
out_com2(msg_title[i]);
for(i=0;i<(40-title_len);i++) //put the space
out_com2(nul[i]);
for(i=0;i<=strlen(str);i++) //display the string
out_com2(str[i]);
}



Cela te convaint il?

D'apres ce code C, pourrais tu me dire les parametres a utiliser pour lcdproc ou lcd4linux?

Description de mon materiel: ici

Merci d'avance, j'avoue etre carrement perdu...
Avatar de l’utilisateur
fleib
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 205
Inscrit le: 28 Mai 2009 14:50
Localisation: St Paul / La Réunion

Messagepar Franck78 » 02 Juil 2010 19:17

si les fils vont directement sur le PCB du LCD, il n'y a pas de convertisseur.
si il y une carte intermédiare, elle peut tout faire.

Ton prog utilise bien le port série (COM2 inscrit en dur 0x2F8).
-test avec /dev/ttyS0 aussi
pourquoi picanlcd comme type?

Ca à l'air bien comme petit appliance. Ou achètes-tu ça?
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar fleib » 05 Juil 2010 09:30

Salut,

Je te confirme que les fils ne vont pas directement sur l'afficheur mais passent par une petite carte additionnelle, qui doit etre un convertisseur...

Pourquoi picanlcd? Parce que h'ai fait plein de tests en esperant que ca fonctionnerait et que j'ai fait la capture de mon fichier de config au moment de ce test la...

Où j'achete ça, ici: http://www.anteor.com/catalog2/catalog/acrosser_rack-5500l6.html
Avatar de l’utilisateur
fleib
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 205
Inscrit le: 28 Mai 2009 14:50
Localisation: St Paul / La Réunion

Messagepar Franck78 » 05 Juil 2010 22:46

D'apres ce code C, pourrais tu me dire les parametres a utiliser pour lcdproc ou lcd4linux?

port série COM2 (/dev/ttyS1) 9600,8N1 = 9600baud, ParityNone,8bits,1stop
Faut absolument régler le port série avant tout.....
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar fleib » 06 Juil 2010 13:08

Franck,

Qu'entends tu par "régler le port série avant tout"?
Avatar de l’utilisateur
fleib
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 205
Inscrit le: 28 Mai 2009 14:50
Localisation: St Paul / La Réunion

Messagepar Fesch » 20 Juil 2010 20:20

Un LCD pour connecter à un port série m'intéressait aussi.

Je viens de m'achter en effet un WRT54GL qui ne possède pas de port // mais sur la platine il y a deux ports de série prévu :P Ce serait cool ça ...
Pourquoi lis-tu ceci???
Avatar de l’utilisateur
Fesch
Amiral
Amiral
 
Messages: 2505
Inscrit le: 11 Sep 2003 00:00
Localisation: Luxembourg


Retour vers IPCop

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité