Your SlideShare is downloading. ×
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Fr os con2010_bmatrainer
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Fr os con2010_bmatrainer

1,221

Published on

BMATrainer ist ein kleines Tool zur Simulation von Brandmeldeanlagen. Geschrieben in Perl.

BMATrainer ist ein kleines Tool zur Simulation von Brandmeldeanlagen. Geschrieben in Perl.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,221
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1.  
  • 2.  
  • 3.  
  • 4.  
  • 5. BMATrainer
      Simulationsprogramm für Brandmeldeanlagen
  • 6. Die GUI
  • 7. Die GUI
  • 8. Die GUI
  • 9. Die GUI
    • wxFormBuilder im Einsatz...
  • 10.  
  • 11. GUI
  • 12. Plugins
  • 13. Plugins I
    • Löst den “Alarm” aus
    • 14. Einfache Arduino-Anwendung
    • 15. Anschluss an USB-Port
    • 16. Device::SerialPort zum Auslesen der Arduino-Daten
    • 17. Einfacher Sketch für Arduino
  • 18. Plugins I
  • 19. Plugins I use Win32::SerialPort; my $port = 'COM3'; my $baud = 9600; my $parity = 'none'; my $data = 2; my $stop = 1; my $handshake = 'none'; sub new { bless {}, shift; }
  • 20. Plugins I my $conn = Win32::SerialPort->new( $port ) or die $^E; $conn->databits( $data ); $conn->baudrate( $baud ); $conn->parity( $parity ); $conn->stopbits( $stop ); while ( 1 ) { my $char = $conn->lookfor; no warnings 'numeric'; # read input from usb port # if “1” is returned, start alarm $conn->lookclear; }
  • 21. Plugins II
    • Soll “Hausalarm” simulieren
    • 22. Steuerung mit Win32::Sound
    • 23. Win32-only im Moment
  • 24. Plugins II sub start_sound { my ($self) = @_; Win32::Sound::Volume( '100%' ); Win32::Sound::Play( $self->sound_file, SND_ASYNC ); } sub stop_sound { Win32::Sound::Stop(); }
  • 25. Plugins
    • threads + wxPerl -> “use threads” vor “use Wx”
    • 26. Kommunikation zwischen den Plugins und der Anwendung muss möglich sein
      • Ein “Eventsystem” musste her
    • Einbinden muss einfach sein
  • 27. Plugins einbinden my $config_file = Path::Class::File->new( $args{directory}, 'plugins.yml', ); my $config = BMA::Config->new( $config_file->absolute.'' ); my $plugins = $config->get( 'plugins' ); for my $plugin ( @{$plugins} ) { $plugin->{package} = 'BMA::Plugins::'.$plugin->{module}; my $file = $plugin->{package} . '.pm'; $file =~ s{ :: }{/}gxms; $plugin->{file} = $file; push @{ $self->{ $plugin->{type} } }, $plugin; }
  • 28. Plugins einbinden --- plugins: - type: input module: Feuermelder active: 0 label: Feuermelder - type: output module: Sirene event: AlarmStart active: 0 label: Sirene
  • 29. Kommunikation
  • 30. Kommunikation
    • GUI muss von Plugins Befehle empfangen können
      • Einfach Methodenaufrufe des GUI-Objekts
    • GUI muss Befehle an Plugins senden können
      • Nicht so einfach, da GUI die Methoden der Plugins nicht kennt
    • Plugin ↔ Plugin müssen über GUI-Methoden kommunizieren, da diese voneinander nichts wissen
    • 31. => Ein Eventsystem muss her
  • 32. Kommunikation
    • Alle Output-Plugins können auf Events hören, alle Events können Events auslösen
    • 33. GUI stellt an Hand der Konfig fest, welche Plugins aufgerufen werden müssen
  • 34. Kommunikation for my $plugin ( $self->plugins( $event ) ) { my $file = $plugin->{file}; eval { $logger->debug( "require $file" ); require $file; my $object = $plugin->{package}->new( %{$plugin}, logger => $logger, BMA => $args{BMA}, ); $object->run( %args ); 1; } or $logger->debug( "Could not load $file: $@" ); }
  • 35. Kommunikation $self->event( event => 'StartAlarm', );
  • 36. Zukunft von BMATrainer
    • Es ist noch einiges zu tun
    • 37. Mehr Plugins
    • 38. Plugins auch unter Linux verfügbar machen
    • 39. .exe für Windows-Nutzer erstellen
    • 40. Restliche Funktionalität programmieren
    • 41. Dokumentieren
  • 42. Lesestoff
    • $foo – Perl-Magazin
      • BMATrainer: Ausgaben 13 und 14
      • 43. WxPerl-Tutorial: ab Ausgabe 12
    • http://github.com/reneeb/BMATrainer
    • 44. http://renee-baecker.de/vortraege.html
  • 45. Fragen?
    • Hier auf der FrOSCon oder unter
    • 46. [email_address]
  • 47. Vielen Dank für Ihre Aufmerksamkeit

×