C/C++ Question TFTv2 & SeeedTouchScreen Driver Library HELP

Gentry

Member
Licensed User
Longtime User
Trying to build the library wrappers to push a 2.8" TFT Touchscreen. I have downloaded the source libraries, put them in their own directory, and tried to generate the B4R library xml with:

Code:
java -jar B4Rh2xml.jar TFTv2.h TFTv2.xml

Skipping: inline void sendCMD(INT8U index)
Skipping: {
Error parsing: TFT_DC_LOW;
parser._parsemethod (java line: 527)
java.lang.NumberFormatException: For input string: "error"
        at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
        at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
        at java.lang.Double.parseDouble(Unknown Source)
        at b4j.example.parser._parsemethod(parser.java:527)
        at b4j.example.parser._parseline(parser.java:464)
        at b4j.example.parser._parseh(parser.java:422)
        at b4j.example.parser._parse(parser.java:267)
        at b4j.example.main._appstart(main.java:46)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at anywheresoftware.b4a.BA.raiseEvent2(BA.java:93)
        at anywheresoftware.b4a.BA.raiseEvent(BA.java:84)
        at b4j.example.main.main(main.java:29)

and

Code:
java -jar B4Rh2xml.jar SeeedTouchScreen.h SeeedTouchScreen.xml

Error parsing: Point(void);
parser._parsemethod (java line: 527)
java.lang.NumberFormatException: For input string: "error"
        at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
        at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
        at java.lang.Double.parseDouble(Unknown Source)
        at b4j.example.parser._parsemethod(parser.java:527)
        at b4j.example.parser._parseline(parser.java:464)
        at b4j.example.parser._parseh(parser.java:422)
        at b4j.example.parser._parse(parser.java:267)
        at b4j.example.main._appstart(main.java:46)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at anywheresoftware.b4a.BA.raiseEvent2(BA.java:93)
        at anywheresoftware.b4a.BA.raiseEvent(BA.java:84)
        at b4j.example.main.main(main.java:29)

I'm guessing that unknown source means that I need to acquire some dependent libraries, but I'm not sure where to go to get these. I've tried copying what I could find (like spi.h & spi.c) into the directory i'm generating from, but doesn't seem to have an effect.

Java -version reports 1.8.0_91-b14

Any pointers on where to go next is appreciated.

Attached one of the source libraries, the other one is too large.

Gentry
 

Attachments

I've created a wrapper (based on your example) and it generates the library xml file, and seems to load into B4R successfully. When I try to compile though I get

sketch\TFTv2.cpp:23:19: fatal error: TFTv2.h: No such file or directory

(the base library .h and .cpp are all in the library directory). If I remove the #include "TFTv2.h" reference from the wrapper rTFTv2.h file, this error is not raised, but I get a new batch of errors

Code:
In file included from sketch\B4RDefines.h:20:0,
                 from sketch\B4RArduino.cpp:1:
rTFTv2.h:8: error: 'TFT' was not declared in this scope
    uint8_t beTFTv2[sizeof(TFT)];
                           ^
rTFTv2.h:9: error: 'TFT' does not name a type
    TFT* driver;
    ^
exit status 1
'TFT' was not declared in this scope

Which sort of makes sense if the include is missing. I am using the reference to TFT because this is the classname in the original driver files I am attempting to wrap.

Attached find the B4R library attempt, and a simple B4R script that calls the library.

Thanks for looking!
Gentry
 

Attachments

It is "TFTv2.h" in the file. The B4R reports it as <TFTv2.h> even though it is not.
 
See the error message:
SS-2016-05-22_08.11.38.png


Line 23 in TFTv2.cpp
 
Opps, thanks. I think i'm pretty close, having a difficult time figuring out how to define the Initialize function. Here's my current error msg:

Code:
rTFTv2.cpp:3: error: prototype for 'void B4R::B4RTFTv2::Initialize()' does not match any in class 'B4R::B4RTFTv2'
  void B4RTFTv2::Initialize(void) {
       ^
In file included from sketch\B4RDefines.h:20:0,
                 from sketch\rTFTv2.cpp:1:
rTFTv2.h:12: error: candidate is: void B4R::B4RTFTv2::Initialize(Byte)
    void Initialize(Byte Address);
         ^
exit status 1
prototype for 'void B4R::B4RTFTv2::Initialize()' does not match any in class 'B4R::B4RTFTv2'

and in the rTFTv2.cpp wrapper I'm defining it like:

Code:
#include "B4RDefines.h"
namespace B4R {
    void B4RTFTv2::Initialize(void) {
        driver = new (TFT) TFT(void);
        driver->TFTInit(void);
    }

In the TFTv2.cpp has this defined as:

Code:
void TFT::TFTinit (void)

soooo close. only had to comment out the drawString function (which was overloaded and also has a *string parameter, so need to figure out how to cope with those.

Current (flawed) library attempt attached.

Thanks,
Gentry
 

Attachments

Hello,
what are supported TFTs for example? is attached lib final release?

Thanks
 
Sorry, I gave up on the TFT library, couldn't figure out how to model the backend variable Erel suggested. I was targeting the library for this 2.8 TFT touch screen, but i'm stalled unless someone can assist bringing this down under my head.
 
sorry to hear that, i hope someday you bring it to life, i always get many problems with library wrapper too.
 
Back
Top