Programming CAN -based Fieldbus Systems using...

50
Fachbereich Informatik und Elektrotechnik Embedded Internet, © Prof. Dr. Helmut Dispert Title Programming CAN-based Fieldbus Systems using Java Manuel Joaquim Pereira dos Santos, Ricardo José Caetano Loureiro Universidade de Aveiro, Aveiro, Portugal, Helmut Dispert Department of Computer Science and Electrical Engineering, Kiel University of Applied Sciences, Kiel, Germany

Transcript of Programming CAN -based Fieldbus Systems using...

Page 1: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Title

ProgrammingCAN-based Fieldbus Systems using Java

Manuel Joaquim Pereira dos Santos,Ricardo José Caetano LoureiroUniversidade de Aveiro, Aveiro, Portugal,

Helmut DispertDepartment of Computer Science and Electrical Engineering,Kiel University of Applied Sciences, Kiel, Germany

Page 2: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Contents

1. Introduction:Embedded Intelligent Devices

2. Java in Embedded Control:e.g.: Java Servlet Technology (the Embedded Java Controller - EJC)

3. Java and Native Code

Page 3: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Evolution

The evolution of embedded intelligent devices is driven by technological advancements:Ø low cost microprocessors and peripheral

devicesØ InternetØ Java programming language

Examples:Ønew hardware platforms (e.g. Strong ARM

architecture)Ø Internet and the HTTP to access devicesØDevelopment of robust and reliable software

using Java.

Page 4: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Opportunities

Sun Microsystems, Inc.:

"Combining the strengths of these (new) technologies, there is a huge market opportunity for companies that discover how to leverage the benefits of Java technology on embedded devices."

Page 5: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Java

Solution:

A New Paradigm:Write once, run anywhere

Java

Page 6: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Java

History of Java (true story)Ø 1990:

A small group is formed at Sun Microsystems with the task to think about the future of multimedia in private households.Group Member: James Gosling

Ø Idea:develop a generic and simple programming language to implement intelligent electronic devices (household).

⇒⇒ Embedded Programming

Page 7: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Java

Why Java?

Ø Object-oriented(encapsulation, polymorphism, inheritance),

Ø No multiple inheritance,Ø Platform independent bytecode,Ø Java primitive data types have fixed sizes,Ø Automatic run-time bounds-checking,Ø True Boolean type,Ø No pointer programming,Ø Automatic garbage collection,Ø Language support for multithreaded applications.

Page 8: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Java in Embedded Systems

Java Usage Models:

The proposed Java usage models fall into one of four categories:

Ø No Java

Ø Embedded Web Server Java

Ø Embedded Applet Java

Ø Application Java

Page 9: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Java in Embedded Systems

These models are distinguished by two binary variables:Ø location of the stored Java bytecodesØ the processor on which the bytecodes are

executed

These variables can take one of two values:Ø target (the embedded system)Ø host (a general-purpose computer attached to

the embedded system)

Ref.: Michael Barr

Page 10: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Java in Embedded Systems

Ref.: Michael Barr

Target

Host

Java

No Java

Target

Host

Java

Application

Target

Host

Java

EmbeddedWeb Server

Target

Host

Java

EmbeddedApplet

Page 11: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Java 2 Platform

Java 2Enterprise

Edition(J2EE)

Core APIs

Java 2Enterprise

Edition(J2EE)

Core APIs

Java 2StandardEdition(J2SE)

Core APIs

Java 2StandardEdition(J2SE)

Core APIs

Java Programming LanguageJava Programming Language

Java HotSpotJava HotSpot Java Virtual Maschine (JVM)Java Virtual Maschine (JVM) KVMKVM Card VMCard VM

Java 2 Micro Edition Core APIsJava 2 Micro Edition Core APIs

TVProfileTV

Profile ScreenPhoneProfile

ScreenPhoneProfile

CarProfileCar

Profile

PersonalProfile

PersonalProfile Mobile Information

Device Profile

Mobile InformationDevice Profile

SmartCard

Profile

SmartCard

Profile

ProfileProfileProfileProfile

ProfileProfileProfileProfile Java 2 Platform, Micro Edition(J2ME) encompasses VMs and coreAPIs specified via Configurations aswell as vertical – or market-specificAPIs specified in Profiles.

Page 12: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Java Application Environments

JavaAE

Desktop OSEnterprise ServersMainframes

PersonalJavaAE

RTOS VendorsSet-top boxesPDAsScreenPhonesHi-end mobile phonesInternet TVCar navigation

EmbeddedJavaAE

Industrial ControllersIntrumentationAutomotivePrintersHi-end PagersMid-range Phones

JavaCard

SmartCardsJava Ring

Page 13: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Java 2 Platform Editions

WorkgroupServer

Java TechnologyEnabled Desktop

MicroEdition

StandardEdition

EnterpriseEdition

High-EndServer

Java TechnologyEnabled Devices

JavaCard

Page 14: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Java

Application Portability:1. mechanism for executing Java bytecodes on

any processor

2. common set of class libraries

Page 15: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Java Development Cycle

JavaSource(.java)

JavaBytecode(.class)

JavaCompiler

Compile-timeEnvironment

Class LoaderBytecode Verifier

Run-Time Environment(Java Platform)Environment

JavaInterpreter

Just-in-TimeCompiler

Run-Time System

Operating System

Hardware

VirtualJava Machine

VM

Java ClassesLibraries

Page 16: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Java Architecture

Java Runtime System

Compiled Byte Code

VirtualMachine

JavaAPI

Operating System

Computer Hardware

Java ProgrammingLanguage

The Java Architecture

1. Programming Language2. Virtual Machine (VM)3. API

Page 17: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Access Hardware using Java

Problem àà Basic Properties of Java:ØPlatform independent bytecode,ØNo pointer programming,ØAutomatic garbage collection,

The basic idea of embedded control is to directly access hardware level properties:

ØRegisters, I/O-interfaces, sensors, actuators, etc.

Page 18: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Access Hardware using Java

Solutions:ØUse dedicated hardware platform, dedicated

OS and dedicated Java VM.Example:

Snijder Embedded Java Controller (EJC).

see: 1st Int. Workshop, Vaasa, 2002

ØUse native languages that allow access to

hardware level functions.

Page 19: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Java - Jbed

Hardware

OS

Browser

Glue Code

VM

Java in aWWW

browser

Hardware

OS

Glue Code

VM

Java on adesktop

OS

Hardware

RTOS

Glue Code

VM

Java on aRTOS

Hardware

OSandVM

Java on thebaremetal

Page 20: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

EJC - Embedded Java Controller

I2C

RS485

COM 1

COM 0

ETH.Digital

I/OLCD 1-Wire

Sys

tem

Bu

s

EJC

I2C

RS485

COM 1 (RS232)

COM 0 (TTL)

Ethernet

LCD 1-WireDigital I/O

Switch Input LED Output Boot Flash

Bo

ot

Fla

sh

PWR

EJC-SK1 carrier board block diagram

Page 21: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

EJC - EW1A block diagram

CPUARM7TDMI

E2PROM

Temp.Sensor

DRAM

Flash

ISA-like +memory

bus

DIMM connector

COM 2RS232

RS485I2C

masterDigital

I/OLCD Ethern.

COM 1TTL

Embedded Java Controller block diagram

Page 22: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

User applicationsand servlets

EJC

Overview of the EJC software architecture.

Serial Ethernet I2C Dig I/O Flash NV RAM • • • LCD

Elate RTOS kernel + low-level libraries(TCP/IP, file system architecture, graphic subsystem, etc.)

Intent JVM + PJAE + javax.comm EJC middleware andsystem software

EJC class library + servlet framework

• • •HTTP server

FTP server

Telnet server

Drivers

Kernel

JVM

JavaLevel

Page 23: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

EJC - Native Code

Access to hardware or peripherals throughnative code:

Special feature of the EJC (the intent JVM):

Java classes can be directly written in VP assembler. VP assembler is a high-level assembler language which is targeted at a special Virtual Processor, and that is translated to native code either statically, at sysgen-time, or dynamically, when a class is loaded by the device (happens automatically).

⇒⇒ Access to hardware is possible without the runtime overhead of JNI or other similar mechanisms.

Page 24: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

JNI

JNI - The Java Native Interface

Advantages:ØSupport platform-dependent features.

Ø Integration: Make existing libraries or

applications written in another programming

language available to Java.

ØSpeed: Implement time-critical code.

Page 25: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Java SideC Side

JNI

JNI

Exceptions

Classes

VM

Functions

Libraries

Application

Page 26: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

JNI

JNI allows interaction in two directions:

ØJava programs can use native methods written in other languages

ØNative methods can use Java objects and methods out of Java applications

Page 27: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

JNI

Java Libraries

Java Classes

Java VM

Java MethodsC Program

Page 28: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

JNI

C Routines

C++ Classes

C Debugger

Assembly Rout.

Java Program

Exception Handler

C RuntimeTypeChecker

Page 29: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

JNI-Example

class HelloWorld

{

public native void displayHelloWorld();

static

{

System.loadLibrary("hello");

}

public static void main(String[] args)

{

new HelloWorld().displayHelloWorld();

}

}

Java-File: HelloWorld.java

Page 30: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

JNI-Example

Java Code Compilation:

javac HelloWorld.java

Creating the C header file:

javah –jni HelloWorld

Page 31: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

JNI-Example

Name of native language function that implements the native methods:

ââ ââ ââ

prefix class name method name+ + +_

ââ

java_ HelloWorld displayHelloWorld+ + +_

JNIEXPORT void JNICALLJava_HelloWorld_displayHelloWorld(JNIEnv *, jobject);

Page 32: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

JNI-Example

Native Methods (C code):

#include <jni.h>

#include "HelloWorld.h“#include <stdio.h>

JNIEXPORT void JNICALL

Java_HelloWorld_displayHelloWorld

(JNIEnv *env, jobject obj){

printf("Hello World!\n");

return;

}

Page 33: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

JNI-Example

HelloWorldImp.c contains three header files:

1.jni.hThis file contains information needed by the native language to exchange data with the Java runtime system.

2.HelloWorld.hThe generated header file.

3.stdio.hContains the printf function.

Page 34: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

JNI-Example

1.Write Java Code

HelloWorld.java

2.Compile with javac

HelloWorld.class

3.Generate header file

with javah

HelloWorld.h

jni.h4.Write implementation

of native method

HelloWorldImp.c

5.Compile native code,load shared library

hello.dll

stdio.h

6.Run program using

java interpreter "Hello World"

Page 35: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Java in Embedded Systems

Why Embedded Java?

Ø Hardware Independence (greater than with C/C++)

Ø Downloading capabilities:Software downloaded into device

Ø Internet Connectivity

Ø Security

Ø Better Productivity

Page 36: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Application: CAN-Bus

CAN-Bus⇒⇒ Controller Area Network

Serial 2-wire bus systemaimed at autombile applications,developed by Bosch.International Standard (ISO 11898)

Page 37: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Field Bus Systems

Field Bus Systems

Sensor/Actuator Bus Process Bus

ASIINTERBUS-S

PROFIBUS DPCAN

DIN-BusBITBUS

PROFIBUS FMSP-NET

Field Bus Organizations

Page 38: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Field Bus Systems

ControlFunctions

Virtual CAN Interface

Virtual CAN Interface

MonitorFunctions

CANAnalyzer

UserApplication

CAN

PCI-card PortAdapter USB-CAN

Page 39: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Java based CAN Program

class: VCIJNI.java** Function: VCI2_PrepareBoard

** Native method declaration

public native int VCI2_PrepareBoard(CAN_Analyser myApp,

int board_type,

short board_no,

String AddInfo,

byte AddInfoLength,

JCallback receive,

byte [] m_callback_databytes);

Page 40: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Dynamic Link Libraries

.dylibMac OS X

.soUnix

.dllWindows

ExtensionOperating System

** JNI-function** for loading of the VCIJNI.DLL

static {System.loadLibrary("VCIJNI");

}public VCIJNI() {}

Code in class VCIJNI.javato load DLL (VCIJNI.dll)into memory

Page 41: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Dynamic Link Libraries

Java Code Compilation:

javac VCIJNI.java

Creating the C header file:

javah –jni VCIJNI

Page 42: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Dynamic Link Libraries

/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class IXXAT_VCIJNI */

#ifndef _Included_IXXAT_VCIJNI#define _Included_IXXAT_VCIJNI#ifdef __cplusplusextern "C" {#endif/** Class: IXXAT_VCIJNI* Method: VCI2_PrepareBoard* Signature: (LIXXAT/CAN_Analyser;ISLjava/lang/String;BLIXXAT/JCallback;[B)I*/JNIEXPORT jint JNICALL Java_IXXAT_VCIJNI_VCI2_1PrepareBoardJNIEnv *, jobject, jobject, jint, jshort, jstring, jbyte,

jobject, jbyteArray);

Generated Header File IXXAT_VCIJNI.h

Page 43: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Dynamic Link Libraries

File VCIJNI.cpp implementeing the native code for function Java_IXXAT_VCIJNI_VCI2_1PrepareBoard

JNIEXPORT jint JNICALL Java_IXXAT_VCIJNI_VCI2_1PrepareBoard( JNIEnv * env,

jobject jObj,jobject myApp,jint board_type,jshort board_no,jstring AddInfo,jbyte AddInfoLength,jobject JReceiveCallback,jbyteArray callback_databytes)

{int i_test;jboolean *isCopy = NULL;

//Produce a new global reference to Object " JReceiveCallback " g_JObj_JCallback = env->NewGlobalRef(JReceiveCallback);

Page 44: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Dynamic Link Libraries

Create Object:

// Object with the Java Native Interfacestatic VCIJNI vci = new VCIJNI();

// prepare board for further configurationi_test = vci.VCI2_PrepareBoard(

myApp,BoardConfStruct.board_type,BoardConfStruct.board_no, AddInfo,AddInfoLength,JReceiveCallback, JReceiveCallback.m_a_data);

Page 45: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Java/CAN - demo

a) CAN Interface:

USB-to-CAN Module

Intelligent CAN modulefor the USB-Port

Page 46: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Java/CAN - demo

b) Connected Device:

Absolute Rotary Encoders

Allows a direct read-outof the angular position

Page 47: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Java/CAN - demo

Program Code: JavaCAN Code: C++GUI: Java Swing

Future Expansion:Internet Connectivity: Java

Page 48: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

Using Java to Control CAN

Some more important applications

OFFONCANDevice

CAN Bus

CANDevice

Summer Cottagein Vaasa

Page 49: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

The end

Thank you!

Page 50: Programming CAN -based Fieldbus Systems using Javaworkshop-2003.international-symposium.org/papers/dispert.pdfProgramming CAN -based Fieldbus Systems using Java Manuel Joaquim Pereira

Fachbereich Informatik und Elektrotechnik

Embedded Internet, © Prof. Dr. Helmut Dispert

The End

Contact:Prof. Dr. Helmut DispertUniversity of Applied Sciences KielFaculty ofComputer Science and Electrical EngineeringGrenzstr. 324149 Kiel, GermanyTel.: +49-431-210-4114/4123Fax.: +49-431-210-64114E-Mail: [email protected]