Addin für BascomAVR

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Addin für BascomAVR

      Hallo an alle.

      Hat hier schon mal jemand versucht mit vb.net eine Addin für Bascom zu schreiben?

      Die Bascom-IDE ist ja in Delphi 5 geschrieben worden. Das hab ich nicht und auch Pascal ist mir nicht geläufig.
      Daher dachte ich, es muss doch eigentlich möglich sein mit z.B. Visual-Basic Net ein Addin zu schreiben.

      Dabei treten 2 Probleme auf.

      - Das Plugin muss eine DLL sein, die Funktionen exportiert wie eine WinAPI.
      - Delphi verwendet Aus Aufrufkonvention "Register" und vb.net vermutlich "cdecl"

      Gibt es da einen Warpper, um die Aufrufe zu konvertieren und entsprechende VB-Routinen aufruft?
      Oder wie kann ich eine Sub oder Funktion in vb.net 2008 als Einsprungpunkt expertieren?

      Übrigens: Ich hatte von MCSElectronic mal ein Code-Beispiel für ein Adobe-Plugin erhalten.
      Der Source ist aber in Delpgi 5 und nicht kompatibel zu Lazarus (Pascal).
      Auch die Convertierfunktion schlug fehl.



      Danke schon mal für eure Infos.

      Gruß Micha
      Kaum macht man es richtig - und schon geht's!
    • Hi StefanHamburg

      So spontan fällt mir grade das ein:

      Schon so manches mal wollte ich gerne auf den Code zugreifen. Ihn auslesen und ändern oder Formatieren.
      Denn so manches mal Spuckt Bascom Fehler aus, die einen auf eine falsche Fährte bringen.

      Kennste Visual-Basic? Den Codeeditor?
      Da werden einem beim Tippen Befehle usw vorgeschlagen.
      Das nennt sich Intelliisense (code completion). Sowas wäre dann auch machbar.

      Da fallen einem bestimmt noch mehr Dinge ein, wenn man erst mal die Möglichkeit geschaffen hat,
      Plugins zu schreiben.

      Man könnte durch ein Plugin auch das Syntax Highlightning verbessern.

      Was ich auch vermisse ist ein Grafik-Editor, mit dem man Logos erstellen kann.

      In was programmierst du?

      Ich bin recht fit in Bascom und Visual Basic .NET.

      Micha
      Kaum macht man es richtig - und schon geht's!
    • Ja, die BASCOM-Philosophie ist da etwas anders, als es bei anderen heutigen Umgebungen/Projekten der Fall ist.
      Marc Alberts hat BASCOM entwickelt, damit man auf einfache Weise mit einer Basic-artigen Hochsprache Programme für bestimmte Mikrocontrollerfamilien erstellen kann.
      Die Entwicklung von BASCOM lag und liegt komplett bei Marc. Nix Opensource oder so.
      Jeder, der hier im Forum ist, kann bestätigen, dass Marc das Ziel erreicht hat. Ich bin nach wie vor immer wieder sehr beeindruckt, was man mit relativ wenig Einarbeitungszeit alles mit BASCOM erreichen kann. LED blinken, Ampelschaltung, Uhr, Thermometer, GPS-Empfänger, Funkuhr usw. usw. sind verblüffend einfach zu bauen. Nebenbei - und das finde ich toll - lernt man am Rande, wie Servos, das DCF77-Signal, NMEA, I2C, UART usw. usw. funktionieren. Da BASCOM recht einfach zu erlernen ist und man einerseits auf Register und Pins direkt zugreifen kann, es andrererseits aber für vieles auch schon Unterstützung gibt (I2C, SPI, UART, Timer usw.) kann man nach eigenen Fähigkeiten und je nach Projekt in „die Werkzeugkiste“ greifen“. Ich finde klasse, dass man mit einem programmierten Mikrocontroller und ein wenig Elektronik Geräte bauen kann, die autark arbeiten und in Geocaches eingebaut oder als Uhr oder als Thermometer usw. usw. irgendwo verbaut und/oder verschenkt werden können. Ein PC ist zu groß und zu teuer, um ihn in einem Projekt zu verbauen oder zu verschenken. Auch ein Raspberry ist noch recht groß und kostspielig im Verleich zu einem Mikrocontroller für ein paar Cent. Ich habe mir selbst einmal am Sonntagnachmittag schnell einen Maulwurfschreck mit einem vorhandenen Attiny13 zusammengebaut und im Marmeladenglas im Garten vergraben. Ich habe mir auch schon eine Astroschaltuhr für die Beleuchtung draußen in der dunkleren Winterzeit gebaut oder einen elektronischen Adventscountdown inklusive Temperaturanzeige mit WSxx-LEdstreifen für das Küchenfenster und und und. Für meinen Fitnessverein habe ich einmal eine DMX512-Steuerung für die Zirkeltrainingecke gebaut. Tschoeatsch hat schon ca. 297 tolle Uhren und andere Dinge verschieder Art gebaut und an Familie und Freunde verschenkt. In all diesen und weiteren Beispielen wäre es umpassend gewesen, einen PC zu verbauen. Viele Worte ... Was ich sagen möchte: Mit BASCOM kann man praktisch alles umsetzen.
      Ja - wenn die Anzeige auf einem 16x2-LC-Display oder einem Grafikdisplay nicht reicht, dann baut man sich etwas drumherum. Ich habe auch schon mit Visualbasic oder mit Python/Tkinter etwas für den PC oder einen Raspberry programmiert, um zum Beispiel eine schöne Riesenanzeige von Messwerten oder Temperaturen (vom Mikrocontroller) zu haben.
      Ergänzend kann man natürlich zusätzliche Tools zum Beispiel zur Timerberechnung benutzen. Zitronenfalter hat ja ein paar schöne Tools erstellt gameroom-austria.info/cms/index.php/menu-hobby/menu-avrtools
      Man kann auch einen anderen Editor wie zum Beispiel Notepad++ benutzen. Ich persönlich finde die Möglichkeiten des BASCOM-Editors und der BASCOM-IDE schon sehr gut und - wie durch viele Projekte vieler User bestätigt wird - ausreichend. Farbige Syntaxdarstellung, Codeexplorer, Einrückungen, Subs, Vorschläge, Includes usw. bieten viele Möglichkeiten. Klar kann es sein, dass dem einen oder anderen noch Dinge fehlen oder er gute Ideen hat. Für gute Ideen ist Marc auch recht offen und hat BASCOM und die IDE im Laufe der Jahre immer weiter entwickelt. Für Mitentwickler ist Marc nicht so offen - BASCOM ist wie geschrieben kein Opensource Projekt oder ähnliches. Ich ziehe ganz gerne Vergleiche zur Autoindustrie: Man sucht sich ein Auto aus, das einem Gefällt oder das zum Einsatzzweck passt. Anpassungen sind nur sehr begrenzt möglich.
      Ich finde, man sollte sich mit der IDE anfreunden und nutzen, was sie bietet. Letzteres tun wahrscheinlich schon die wenigsten. Verbesserungsideen hier oder bei mcselec.com einbringen. Wenn es sinnvoll und machbar ist, wird Marc das evtl. einbauen. JEDER user bekommt dann wie bisher immer KOSTENLOS die neue BASCOM-Version! Wo gibt es so etwas sonst? Libs oder externe Tools kann natürlich jeder gerne schreiben und allen zur Verfügung stellen. Die WSxxx-Library ist durch Diskussionen hier im Forum entstanden und inzwischen Bestandteil von BASCOM geworden.
      Ich persönlich finde wie erläutert, dass BASCOM enorm viel bietet, aber dabei dennoch einen leichten Einstieg für blinkende LEDs usw. bietet.
      Mein Vorschlag: Für jede gute Idee einen Thread eröffnen. Dann kann konkret diskutiert werden, ob etwas schon geht, wie andere das machen, wie man etwas verbessern und evtl. in BASCOM einbringen kann.
    • Wir sprechen hier von dem Sahnehäubchen auf dem I Tüpfelchen. Sollte ein Fehler auftreten oder etwas was für alle eine sinnvolle Ergänzung wäre wäre das was für Mark . Aber Jede Erweiterung bläht das Programm auf und vieles was ich wünschenswert finde finden andere überflüssig. Und sicher will keiner das mit bascom dasselbe passiert wie mit Z.B. Exel oder Open Office oder Firefox. Vom Sportwagen zu krichenden Wohnwagen mit Anhänger. Da würde eine Schnittstelle der jetzigen Philosophie nicht widersprechen: Das Programm bleibt schlank und nur was gebraucht wird wird hinzugeholt (dat/lib)
    • Ich selbst benutze Bascom schon seit 2006 und bin ein treuer User.
      Ich finde Baskom auch Klasse, allerdings mit so manchen Mucken.
      Trotzdem will ich Bascom nicht missen.

      Nichts desto trotz würde ich gerne die Möglichkeit haben wollen, Bascom zu erweitern.
      Also mit AddIns. Die Schnittstelle ist ja da.
      Leider ist die IDE mit einer alten Version von Delphi geschrieben (Version 5), die heute nicht mehr Zeitgemäß ist.
      Es geht also nicht, z.B. mit Lazarus (Delphi-kompatible Pascal IDE) das Plugin zu schreiben.
      Lazarus ist modern, Delphi 5 veraltet. Zu viel Zeit dazwischen.

      Wäre die Schnittstelle in NET gehalten, könnte man Zeitgemäß in C#, VB.Net oder in C++ Addins dafür schreiben. Das würde die Popularität von Bascom steigern und eine größere Community entstehen.

      Ich denke der Marc hätte dann auch was davon.

      Seit 2006 kenne ich eigentlich nur das Plugin
      - Font-Editor
      für Bascom. Oder kennt sonst noch jemand welche?

      Wie diese Diskussion zeigt, sind durchaus Ideen und Wünsche da, eigene Plugins zu schreiben.

      Vielleicht sollte man Marc einfach mal fragen, was er von der Idee hält, die Schnittstelle auf NET zu Ändern, oder eine zusätzliche für NET zu generieren.

      Das wäre denke ich das einfachste.

      Wenn Marc kein Interesse zeigt, wird es vermutlich auch in Zukunft so gut wie keine Plugins für Bascom geben. Der Grund ist einfach. Wer besitzt und programmiert die Delphi 5 IDE?

      Sonst bleibt nur ein aufwendiger Weg, die Aufrufe an ein Plugin über eine pseudo-DLL an NET weiter zu leiten (zu wrappen). Hinzu kommt, dass der Wrapper die Aufrufe noch umsetzen muss, vermutlich von Aufrufkonvention "Register" in Aufrufkonvention "cdecl" und zurück.

      So ein Wrapper kann man in NET nicht schreiben. Das gänge aber perfekt mit Pascal oder Delphi. Auch C bzw. C++.

      Traut sich jemand zu so einen Wrapper zu schreiben?

      Es wären nur 2-3 Routinen in einer Pseudo.Dll zu schreiben (2 Functionen).

      Ich habe von Marc vor Jahren mal ein Sourcecode bekommen (Delphi 5). Ich weis also,
      wie die Schnittstelle aussieht.

      Vorschläge?
      Ideen?
      Kaum macht man es richtig - und schon geht's!
    • Mitch64 wrote:

      Was ich auch vermisse ist ein Grafik-Editor, mit dem man Logos erstellen kann.
      Also ich mach das mit der Grafik einfach über Paint, dieses einfache Zeichenprogramm von Windows. Verwendet habe ich das unter Win7. Als Auflösung gebe ich die Auflösung des Grafikdisplays ein. Dort kann ich dann Daten importieren und auch pixelweise bearbeiten. Anschließend exportieren und konvertieren in eine für BASCOM lesbare Datei (hat Stefan in seinem Buch beschrieben, hab ich grad nicht zur Hand, aber das geht sehr gut, zumindest bei monochromen Grafiken)
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Mitch64,du weist, wie die Schnittstelle aussieht?
      Kannst Du die mal öffnen?

      Ich finde, ein paar kleine Hilfstool, wie Timerberechnung könnten man auch sehr gut in Bascom haben, ist ja nur ein paar Zeilen Code!
      Ich muss dazu z.B. immer diesen "Raketenrechner" im Internet öffnen, das ist etwas knöchern...
      Auch Pulslängen für PWM mit den Teilern usw....das könnte man schön auf einer Seite in Bascom einbauen und "kostet" nur ein paar Stunden Arbeit, erleichtert einem aber die Arbeit ungemein.
      Eine ganz einfache Codesnipetverwaltung könnte man auch einbauen, dann würde man Codehülsen, die man mal erstellt hat und ständig benötigt, einfach zusammenklicken und eine Menge Zeit sparen.

      Übrigens pixel ist auch mit Paint. soweit ich gehört habe, ist das aber von MS abgekündigt...

      Gruss

      The post was edited 1 time, last by Peer Gehrmann ().

    • So

      @ceperiga
      @Peer Gehrmann

      ich hab mal bei Mark angefragt, ob ich den Source hier offen legen darf. Die Antwort bleibt abzuwarten.

      Aber ich denke soviel darf ich verraten:

      Die Schnittstelle besteht auch 2 Funktionen.

      Der ersten Funktion wird nur einen einen Parameter übergeben und liefert einen Pointer auf eine Struktur zurück.
      Die zweite Funktion übergibt 3 Parameter und liefert einen Stringpointer zurück.

      In VB.Net würde das etwa so aussehen.

      Funktion Name1(parameter as integer) as pluginStruktur
      Function Name2(param1 as integer, param2 as integer, param3 as integer) as string

      Mehr möchte ich erst mal nicht öffentlich machen und die Antwort von Mark abwarten.

      Soll erst mal nur so als Anhaltspunt dienen.

      @Peer Gehrmann

      kannst du in Pascal programmieren? Ich hab mir mal Lazarus installiert, aber der Syntax wäre für mich eine komplette Umstellung.
      Ich bin fit in VB.Net, C++ geht auch halbwegs für Arduino. Bascom natürlich und auch Atmega-Assembler (Inliseassembler).
      Pascal ist was völlig anderes. Das ist in kurzer Zeit für mich nicht machbar.
      Daher wäre ein Wrapper für NET (X86) cool. Diverse Infos hab ich bezüglich Registercall.
      Kaum macht man es richtig - und schon geht's!
    • Hi Mitch64,

      ich wollte eigentlich noch nicht mal Daten übergeben, sondern eher aus Bascom aufrufbare Tools coden.
      Wenn man dann auch noch Strings oder so übergeben kann, umso besser.
      Dann könnte ich z.B. Code snipets erzeugen lassen (z.B. für Timer oder Grafikroutinen oder oder...)
      Das spart ordentlich Tipperei und man muss nicht ständig in die Bücher schauen für den üblichen Kleinkram.
      Ich bin da etwas faul...

      Pascal:
      Leider bin ich auch "nur" VB.Net (VB6) Freak...Pascal musste ich mal im Studium lernen, das ist aber nun 25 Jahre her...keinen Schimmer mehr.
    • So ich hab mal neue Infos von Mark.

      Zum einen macht es vermutlich keinen Sinn mehr weiter über einen Wrapper nachzudenken. Mark meint, dass es ein schwierigen Unterfangen wäre, wobei ich ihm zustimmen muss. Er meint außerdem, dass er auch langsam von dieser Plugin-Schnittstelle abkommt, weil es zu wenig genutzt wird.

      Er meinte es sei einfacher, in der Bascom-IDE eine Unterstützung einzurichten (Aufruf per Menü? Ich weis es nicht!), mit der externe Applikationen aufgerufen werden können.
      Wie er sich das genau vorstellt ist unklar. Mir ist bislang auch unklar, ob er mit Applikation NET.Exe oder NET.DLL meint.
      Ich habe da nochmal nachgehakt. Mal sehen was dabei raus kommt.

      Vielleicht können wir bald alle, recht einfach auf Bascom-Source zugreifen und unsere Tools in NET oder was anderem schreiben.

      Er hat übrigens nicht erwähnt, dass ich die bisherige Plugin-Schnittstelle nicht veröffentlichen darf. Er meinte es sei dazu gedacht, dass User Plugins erstellen können.

      Möchte noch jemand die Funktionsdefinitionen sehen?

      Gruß Micha.
      Kaum macht man es richtig - und schon geht's!