lCD unter C++ und IO Warior 40
Moderator: Guido Körber
lCD unter C++ und IO Warior 40
Hallo.
Nach dem ich endlich die direckten Ein- und Ausgaben über den IO Wariior zum Laufenbekommen habe, möchte ich nun ein LCD - Display ansteuern. Ich habe eine erweiterte Klasse iowclass.h bekommen, in der die LCD funtkionen integiret sind. Doch leider stürtzt das Programm bei einigen Funkitonen ab. Meißtens bei LCD_Int. Ist irgenwo ein Fehler in der Klasse?
ULONG LCD_Enable()
{
ULONG bytes;
char data[7];
data[0] = 0x04;
data[1] = 0x01;
bytes = IowKitWrite(m_devHandle, 1, data, ;
return bytes;
}
ULONG LCD_Disable()
{
ULONG bytes;
char data[7];
data[0] = 0x04;
data[1] = 0x00;
bytes = IowKitWrite(m_devHandle, 1, data, ;
return bytes;
}
ULONG LCD_Init()
{
ULONG bytes;
char data[7];
data[0] = 0x05;
data[1] = 0x03;
data[2] = 0x28 | 0x10;
data[3] = 0x01;
data[4] = 0x0F;
bytes = IowKitWrite(m_devHandle, 1, data, ;
return bytes;
}
ULONG LCD_Cmd(int cmd)
{
ULONG bytes;
char data[7];
data[0] = 0x05;
data[1] = 0x01;
data[2] = cmd;
bytes = IowKitWrite(m_devHandle, 1, data, ;
return bytes;
}
ULONG LCD_Set_Addr(int addr)
{
ULONG bytes;
char data[7];
data[0] = 0x05;
data[1] = 0x01;
data[2] = (0x80 | addr);
bytes = IowKitWrite(m_devHandle, 1, data, ;
return bytes;
}
ULONG LCD_String(char *string)
{
ULONG bytes;
char data[7];
int nchars=0;
int nnow=0;
int ncurr=0;
data[0]=0x05;
nchars = strlen(string);
while (ncurr < nchars)
{
if ((ncurr+6)>nchars)
{
nnow = nchars - ncurr;
}
else
{
nnow = 6;
}
data[1] = (0x80 | nnow);
for (int x=0; x<nnow; x++)
{
data[x+2] = string[x+ncurr];
}
bytes = IowKitWrite(m_devHandle, 1, data, ;
ncurr = ncurr +6;
}
return bytes;
}
Schöne Grüße
Frank S.
Nach dem ich endlich die direckten Ein- und Ausgaben über den IO Wariior zum Laufenbekommen habe, möchte ich nun ein LCD - Display ansteuern. Ich habe eine erweiterte Klasse iowclass.h bekommen, in der die LCD funtkionen integiret sind. Doch leider stürtzt das Programm bei einigen Funkitonen ab. Meißtens bei LCD_Int. Ist irgenwo ein Fehler in der Klasse?
ULONG LCD_Enable()
{
ULONG bytes;
char data[7];
data[0] = 0x04;
data[1] = 0x01;
bytes = IowKitWrite(m_devHandle, 1, data, ;
return bytes;
}
ULONG LCD_Disable()
{
ULONG bytes;
char data[7];
data[0] = 0x04;
data[1] = 0x00;
bytes = IowKitWrite(m_devHandle, 1, data, ;
return bytes;
}
ULONG LCD_Init()
{
ULONG bytes;
char data[7];
data[0] = 0x05;
data[1] = 0x03;
data[2] = 0x28 | 0x10;
data[3] = 0x01;
data[4] = 0x0F;
bytes = IowKitWrite(m_devHandle, 1, data, ;
return bytes;
}
ULONG LCD_Cmd(int cmd)
{
ULONG bytes;
char data[7];
data[0] = 0x05;
data[1] = 0x01;
data[2] = cmd;
bytes = IowKitWrite(m_devHandle, 1, data, ;
return bytes;
}
ULONG LCD_Set_Addr(int addr)
{
ULONG bytes;
char data[7];
data[0] = 0x05;
data[1] = 0x01;
data[2] = (0x80 | addr);
bytes = IowKitWrite(m_devHandle, 1, data, ;
return bytes;
}
ULONG LCD_String(char *string)
{
ULONG bytes;
char data[7];
int nchars=0;
int nnow=0;
int ncurr=0;
data[0]=0x05;
nchars = strlen(string);
while (ncurr < nchars)
{
if ((ncurr+6)>nchars)
{
nnow = nchars - ncurr;
}
else
{
nnow = 6;
}
data[1] = (0x80 | nnow);
for (int x=0; x<nnow; x++)
{
data[x+2] = string[x+ncurr];
}
bytes = IowKitWrite(m_devHandle, 1, data, ;
ncurr = ncurr +6;
}
return bytes;
}
Schöne Grüße
Frank S.
LCD unter C++
Hallo.
Es handelt sich dabei um Deine Klasse. Danke für den Tip. Ich werde es mal ausprobieren. Ich benutze allerdings ein LCD 1 x 8.
Kann es vielleicht auch ein Feheler am LCD selbst sein?
Schöne Ostern
Frank S.
Es handelt sich dabei um Deine Klasse. Danke für den Tip. Ich werde es mal ausprobieren. Ich benutze allerdings ein LCD 1 x 8.
Kann es vielleicht auch ein Feheler am LCD selbst sein?
Schöne Ostern
Frank S.
LCD und C++
Hallo.
Ich habe noch einmal etwas ausprobiert.
1. Ich habe den IO Warior gestartet.
2. Ich habe die Funktion LCD_Enable aufgerufen. Pin 0.5 und 0.3 gingen auf Low Potential.
3. Ich habe die Funktion LCD_Init aufgerufen. Pin 0.4 ging auf Low Potential. Nun reagiert das Programm nicht mehr.
4. Ich habe das Programm neu gestartet, konnte aber auf den IOW nicht zugreifen.
5. Erstals den IO Warior neu eingesteckt habe, konnte ich wieder auf Ihn zugreifen.
Kann es vielleicht daran liegen, dass ich anstatt eine 6 Mhz Resonators einen 6 MHz Quarz benutze und deshalb nicht richtig anspricht?
Schöne Ostern
Frank S.
Ich habe noch einmal etwas ausprobiert.
1. Ich habe den IO Warior gestartet.
2. Ich habe die Funktion LCD_Enable aufgerufen. Pin 0.5 und 0.3 gingen auf Low Potential.
3. Ich habe die Funktion LCD_Init aufgerufen. Pin 0.4 ging auf Low Potential. Nun reagiert das Programm nicht mehr.
4. Ich habe das Programm neu gestartet, konnte aber auf den IOW nicht zugreifen.
5. Erstals den IO Warior neu eingesteckt habe, konnte ich wieder auf Ihn zugreifen.
Kann es vielleicht daran liegen, dass ich anstatt eine 6 Mhz Resonators einen 6 MHz Quarz benutze und deshalb nicht richtig anspricht?
Schöne Ostern
Frank S.
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm
Resonatoren
Hallo.
Ich habe mal bei den Versandhäusern nachgeschaut. Reichelt hatte SMD Keramik Resonatoren CSTCC 6 MHz im Angebot. Kann ich diese auch verwenden?
Oder gibt es auch eine andere Quelle, wo man solche Einelteile als Privatmann bekommen kann?
Schöne Ostern
Frank S.
Ich habe mal bei den Versandhäusern nachgeschaut. Reichelt hatte SMD Keramik Resonatoren CSTCC 6 MHz im Angebot. Kann ich diese auch verwenden?
Oder gibt es auch eine andere Quelle, wo man solche Einelteile als Privatmann bekommen kann?
Schöne Ostern
Frank S.
-
- Site Admin
- Posts: 2857
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Re: Resonatoren
Ich kenne die Murata Typen nicht alle auswendig, wichtig ist auf jeden Fall einen zweibeinigen Resonator zu nehmen, die dreibeinigen funktionieren noch schlechter als die Quartze.
Segor hat die richtigen Teile im Programm.
Segor hat die richtigen Teile im Programm.
Problem besteht weiterhin
Hallo.
Ich habe mir über Segor den passenden Resonator besorgt. Ich habe bei der Bestellung extra den Berwendungszweck angeben. Heute habe ich den Resonator bekommen und gleich eingebaut. Der Fehler besteht aber weiterhin. Es funktioieren nur die Funktionen LCD Ein und LCD Aus. Wenn ich weitere Funktionen ansprechen, stürzt das Programm und der Baustein weiter hin ab. Gibt es noch eine Möglichkeit, woran es liegen könnte?
Schöne Grüße
Frank Steenblock
Ich habe mir über Segor den passenden Resonator besorgt. Ich habe bei der Bestellung extra den Berwendungszweck angeben. Heute habe ich den Resonator bekommen und gleich eingebaut. Der Fehler besteht aber weiterhin. Es funktioieren nur die Funktionen LCD Ein und LCD Aus. Wenn ich weitere Funktionen ansprechen, stürzt das Programm und der Baustein weiter hin ab. Gibt es noch eine Möglichkeit, woran es liegen könnte?
Schöne Grüße
Frank Steenblock
-
- Site Admin
- Posts: 2857
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
-
- Site Admin
- Posts: 2857
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Versionen
Hallo.
Ich habe im Moment auch keine Erklärung. Vielleicht helfen aber die einzelnen Versionen weiter. ICh habe einen IO Waario 40 der Version V1.0.2.1 und vernwende die dll iowkit.dll mit der Version 1.2.4.0. Kann es dort vielleicht zu Problemen kommen.
Schöne Grüße
Frank S.
Ich habe im Moment auch keine Erklärung. Vielleicht helfen aber die einzelnen Versionen weiter. ICh habe einen IO Waario 40 der Version V1.0.2.1 und vernwende die dll iowkit.dll mit der Version 1.2.4.0. Kann es dort vielleicht zu Problemen kommen.
Schöne Grüße
Frank S.