[fpc-pascal] Vehicle management
Jon Foster
jon-lists at jfpossibilities.com
Thu May 11 01:19:49 CEST 2017
On 05/08/2017 11:34 AM, Mark Morgan Lloyd wrote:
> On 08/05/17 18:30, Felipe Monteiro de Carvalho wrote:
>> On Sun, May 7, 2017 at 8:33 PM, Mark Morgan
>> Lloyd<markMLl.fpc-pascal at telemetry.co.uk> wrote:> Can anybody give me a
>> quick summary of the position of FPC on Android etc.?
>> Works fine like via JNI, you can do most stuff in Pascal using JNI
>> butpart still needs to be in Java.
>> some info here: http://wiki.lazarus.freepascal.org/Android_Programming
>
> Thanks Felipe, noted. I rather lost track when therewere (at least) two
> competing approaches.
>
Yeah. The wiki is cluttered with inaccurate and abandoned information for
Android development. It needs a serious scrubbing. And access to needed
sources is somewhat hidden. I've combed it for a few years, now, to try and
deduce what's real and what's not. I'm not even sure where I got the bits
of source I'm using now. I've just been clinging to it like a shipwreck
survivor clinging to flotsam.
So, does anyone know, is this the "official" Android dev page?
I can testify that it is possible to write Android apps with FPC 3+. So far
its been the most frustrating effort of my programming life. FPC does
amazingly well but Android is chalk full of hidden gotchas and things that
simply don't work as described.
I finally settled on the approach of using the JVM target to compile my
app. I used GNU "make" to coordinate compiling and packaging. I used a few
of the CLI tools from the Android SDK and "jarsigner" from the JDK to do
the packaging and generating the resource identifiers. I used a stupid
simple FPC program to perform a bunch of StringReplace() calls to convert
the "aapt" created "R.java" (resource ID constants) file into Pascal. I
also threw some headers and cruft-stripping in for good measure.
The biggest problem with doing it this way, besides the Google widgets
doing things that I just can't fathom, is the lack of the FPC libraries we
all love and have come to expect. You do have to bend your mind to fit the
Java paradigm and sift through the Android/Java docs to find the things you
normally use. Something as simple as converting a number to a string needed
to be found. Actually I think I finally just wrote an IntToStr() because it
was quicker than digging through docs.
I was thoroughly frustrated with the experience. Having previously tried to
go all native code, which would be my preference anyways, I decided to
revisit that idea before I do more with Android. As Graeme mentioned, I
decided to try and leverage fpGUI into the Android environment. But with
the extreme differences in execution model between Android and everything
else, its kind of like fitting a square peg into a round hole. It will be a
while. :-/
Speaking of frustrations. I don't envy you with your vehicle issue. I did
some experimenting with a USB OBD-II dongle some time back. I was looking
at building an FPC/Lazarus based diagnostic system. This was mostly spurred
by the fact that my '99 Dodge Dakota ran well... but sometimes it ran
REALLY AWESOM! I wanted it the latter way all the time.
In short I found that a huge amount of diagnostic data and interfaces are
proprietary. The auto manufacturers don't want us lowly individuals to have
it unless we're willing to shell out tons of money. One source I read said
Ford was licensing their full PID data for $100K per year! Since I
discovered the fpGUI gauges and the PocketCHIP I'm thinking I'd like to
tinker with the OBD-II stuff again. But that probably won't help you.
I've never used the serial unit. It seems odd that you would have to patch
"serial.pp" if the hardware is capable. Are there some non-OS imposed
restrictions in there? I wrote some code back in the Kylix days to
manipulate the Linux serial devices and that is my go-to lib for anything
serial. Really all it does is provide an interface to ioctl() to set line
disciplines. Other than that the serial device is just another file. My
only concern with 800 baud is if the clock divider in the serial chip can
go that low. Its also an odd step (300, 600, 1200, ... being the standards).
THX - Jon
--
Sent from my Debian Linux workstation -- http://www.debian.org/intro/about
Jon Foster
JF Possibilities, Inc.
jon at jfpossibilities.com
More information about the fpc-pascal
mailing list