Veröffentlichung "PC und µC-Programmieren in VB und Assembler" (Lehrbuch)

oldmax

Mitglied
Premium Benutzer
03. Nov. 2008
595
15
18
Landkreis Göttingen
Sprachen
  1. Assembler
Hi
Nun ja, es ist schon ein paar Jahre her, da habe ich eine Software auf einem PC haben wollen, die mir für eine Slotcarbahn die Runden zählt. Gemeinerweise konnte ich die Schnittstellen nur bis Windows 98 direkt im Interrupt nutzen und auch die Zeitnahme war auf 0.1 Sek. eingeschränkt. Zu dieser Zeit entschloß ich mich, mit einem Controller die Daten zu erfassen und an den PC per RS2232 zu senden. Auflösung auf 0.001 Sek. war kein Thema mehr. Nun mußte eine Software her, die mir die Daten auswertete und visualisierte. Meine Entscheidung fiel auf VB (Visual Basic) von Mikrosoft, weil es diese Software im kostenlosen Download im Netz gab. Allerdings kam ich eher von Delphi (Pascal) und so mußte ich mich erstmal auf VB einrichten. Dabei erkannte ich, das es sicherlich für viele interessant wäre, eine Basis auf dem PC zu haben, um Controllerdaten auszuwerten oder vielleicht sogar Steuerungen mit PC und Controller zu realisieren. Ich hab also mal ein Buch geschrieben, welches genau auf solche Ziele ausgerichtet ist. Das Thema habe ich bereits vor Jahren schon einmal mit dem Programm "OpenEye" angegangen. Es ist eine Anwendung, die es möglich macht, daten zur Laufzeit aus einem Controller abzufragen,, in dem speziellen Falll die Inhalte der Variablen. Dieses Thema habe ich noch einmal aufgegriffen und die Programmierung Schritt für Schritt in VB erklärt, so das am Ende ein neues "OpenEye" mit ein paar zusätzlichen Rafinessen entsteht. Wer sich dazu entschließt, dieses Programm nachzuarbeiten, hat überhaupt keine Kosten, wenn er einen kostenlosen Download für ein VB findet. (Suche im Netz : Visual Basic) Ziel ist nicht, VB zu vermitteln, sondern Programmiertechniken aufzuzeigen, die auch in anderen Sprachen anwendbar sind. So ist denn auch der zweite Teil mit der Programmierung eines Controllers in Assembler vielfach ein Spiegel auf diese Programmiertechnik und mit ein paar Experimenten wird auf eine Anwendung zielgerecht hingeführt. Und nun kommt sicherlich eure frage, was kostet dieses Buch? Nichts! Ich habe mich entschlossen und mit dem Forenbetreiber abgesprochen, es hier zu veröffentlichen und solange es nicht kommerziel genutzt wird, habt ihr freien Zugriff. Ich wünsch euch viel Spaß damit und vielleicht gebt ihr mir mal ein feedback, damit ich weiß, ob ich mein Ziel, Wissen weiterzugeben, erfüllt habe. Der folgende Link sollte euch zum Buch bringen:
https://www.makerconnect.de/media/u...ocontroller Teil 1 und 2 Stand 26.07.2019.pdf

Wenn ich alles richtig gemacht habe, habt ihr eine Anleitung für alle möglichen Anwendungen, wo ihr Controller mit PC verbinden und die Daten verarbeiten wollt.
Gruß oldmax
 
Hi
Nun, es freut mich natürlich, wenn mein kleiner Beitrag ankommt und für die Likes von ThommyB und Pirx bedanke ich mich. Ich weiß, das ist viel Stoff, der nicht mal eben so durchgelesen ist und ich hoffe, ich hab die richtigen Themen ausreichend beschrieben. Auch hoffe ich, ihr findet kostenlose Downloads von VB, um damit zu arbeiten und euch auch selbst Anwendungen zu schreiben. VB 2008 ist ja bereits nicht mehr erhältlich und zur Zeit, glaub ich, ist es VB 2016. Falls mal was nicht ganz klar sein sollte, fragt mich. Ich werde dann die Klarheit endgültig beseitigen...
Gruß oldmax
 
Hallo,

Ich wünsch euch viel Spaß damit und vielleicht gebt ihr mir mal ein feedback, damit ich weiß, ob ich mein Ziel, Wissen weiterzugeben, erfüllt habe
Na klar. Ist sehr umfangreich und leicht verständlich geschrieben.
Verstehe aber dieses Buch als Beschreibung wie man mit VB ein Werkzeug als Programmierhilfe für µC bauen kann und als Beispiel wird Assembler genutzt.
Ich habe in jungen Jahren viele Programme in Assembler für System 86800 geschrieben und in meinen letzten Berufsjahren sehr viele MSOffice Anwendungen mit VB automatisiert. Die ersten AVR- Controller habe ich auch noch mit ASM programmiert waren meist MSR Projekte und mit PC seriell für Datenübermittlung zum Speichern und Visualisierung verbunden Die PC- Anwendungen meist in MS- Excel oder MS- Acccess mit VB bedienerfreundlich gestaltet.
Das Office2000 benutze ich heute noch, da sind viele Tools schon enthalten die auch hier beschrieben werden wie sie zu nutzen sind. Da liegt meine Begeisterung für dieses Buch. Schon ein paar Mal Aha gemacht.
Für mich lag es aber nah auch die Controllerprogrammierung ähnlich VBA zu nutzen. Muss nicht mehr umdenken und manche SUB- Lösungen in VB passen auch für BASCOM. Seit dem benutze ich Bascom für AVR- Programmierung (ein paar Assemblerzeilen im Code einzufügen ist da auch kein Problem)
Mein Beispiel wie man ein alten Notebock mit „Vorgeschalteten“ Controller zum Universellen Datenlogger macht , sollte noch im Net herumschwirren. Da übernimmt auch das kleine VB die Bedienung. Ein Fenster sah so aus.
8128

Wie zu sehen. Klick auf Button und VB in Verbindung mit Controller macht schon tolle Sachen.
Wie im Buch beschrieben, hat man den Ansatz verstanden, sind der eigenen Phantasie kaum Grenzen gesetst. Na Gut eine sehr gute und Sichere Schnittstelle zu programmieren ist nicht der erste Schritt aber auch mit VB nicht so kompliziert.
So sah mein erster Versuch aus.
8127


Nach Klick auf Button „MODUL – Starten“ sieht es so aus
81291565614137788.png1565614264140.png1565614341286.png


Na der Code ist doch fast so verständlich wie mit Bascom geschrieben.


Option Explicit
Dim C1, C2, C3, C4 'Variblen für Comport
Dim Ba, Bi, StB, SsB, Pa, Bu 'Variablen für Status
Dim P1, P2, P3, P4, P5, P6, P7, P8 'Variablen für digital Ausgänge
Dim A1, A2, A3, A4, A5, A6, A7, A8 'Variablen für analog Eingänge
Dim Co 'ist aktuellese Port
Dim Name As String, z
Dim NameS
Private Sub TextBox6_Change()
End Sub

Private Sub CommandButton1_Click()
Dim Cop
Call Ini
Cop = MsgBox("Port = " & Co & (Chr(13)) & "Baud = " & Ba & (Chr(13)) & "Parität = " & Pa & (Chr(13)) & "Bits = " & Bi & (Chr(13)) & "Startbit = " & StB & (Chr(13)) & "StoppBit = " & SsB & (Chr(13)) & "Buffer = " & Bu _
, vbYesNo, "Einstellungen prüfen (c) Fred Redlich")
If Cop = 6 Then
OPENCOM (Co & ":" & Ba & "," & Pa & "," & Bi & "," & StB)
If OPENCOM(Co) = 1 Then Label43 = Co & "= ON"
If OPENCOM(Co & ":" & Ba & "," & Pa & "," & Bi & "," & StB) = 0 Then _
MsgBox "Zugriff auf Port verweigert evtl. wird bereits anderweitig auf Port zugegriffen", vbCritical
CLEARBUFFER
BUFFERSIZE Bu
Label43 = Co: DoEvents
Label44 = Bu: DoEvents

If Co = 7 Then Call Ini
SENDSTRING ("OI")
For z = 1 To 1000
Name = READSTRING()
If Name > (Chr(0)) & (Chr(0)) & (Chr(0)) Then End
TextBox42.Text = Name
ListBox1 = READSTRING()
Next
End If
End Sub
Private Sub CommandButton10_Click()
CLEARBUFFER
Label44 = "ist leer"
End Sub
Private Sub CommandButton13_Click()
UserForm1.Hide
End Sub
Private Sub CommandButton14_Click()
CheckBox1 = False
CheckBox2 = False
CheckBox10 = False
CheckBox11 = False
End Sub
Private Sub CommandButton15_Click()
Dim Tim As Variant
TIMEOUTS (Tim)
Label45 = (Tim) & " mSek": DoEvents
End Sub
Private Sub CommandButton2_Click()
CLOSECOM
Label43 = "": Label44 = "": Label45 = ""
End Sub
Private Sub CommandButton3_Click()
Range("E19").Select
Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
SENDSTRING (NameS)
End Sub

Private Sub CommandButton7_Click()
If Workbooks.Count = 1 Then
ActiveWorkbook.Save
Application.Quit
Else
ActiveWorkbook.Save
ActiveWorkbook.Close
End If
End Sub
Private Sub CommandButton8_Click()
Shell ("C:\Dalogger_Fred\Anwendungen-dll\Terminal.exe")
End Sub

Private Sub UserForm_Initialize()
ComboBox6.AddItem "1"
ComboBox6.AddItem "100"
ComboBox6.AddItem "10000 "

ComboBox1.AddItem "600"
ComboBox1.AddItem "1200"
ComboBox1.AddItem "2400"
ComboBox1.AddItem "4800"
ComboBox1.AddItem "9600"
ComboBox1.AddItem "19200"


Dies soll nur zeigen wie ich diesen Artikel verstanden habe. Selber machen ist nicht so schwer und einfach Klasse wen man seine Anwendung selber kreativ gestallten kann.

Mein Schlusswort:
Als Anleitung oder Hilfsmittel für AVR- Programmierer ist dieses Buch zu überladen. Der Bereich Datenbank vermiest das Weiterlesen. Ist zwar auch gut beschrieben aber wohl nicht jedermanns Sache. Ich habe keine Probleme mit SQL- oder mit Oracle- Datenbanken, somit kenne ich auch deren Tücken. Nein eine Datenbank für die paar Infos zu erstellen wird wohl einige Anwender abschrecken. Ein paar kleine Verweise in Tabellen sollten doch reichen.

Hochachtungsvoll verabschiede ich mich. Bitte um Entschuldigung sollte ein Ausdruck nicht der Regel entsprechen.
fredred
 
... VB 2008 ist ja bereits nicht mehr erhältlich und zur Zeit, glaub ich, ist es VB 2016. ...
VS 2019 sogar. (Ob nun VB oder C#, minimaler Unterschied, mitunter aber sehr frustrierend ^^')

Ich habe alle alten Express Versionen noch, als Offline Installer. Wer Bedarf hat: PN.
Dürfte afaik nicht gegen Lizenzbedingungen verstoßen, da sie seitens MS selbst gratis angeboten worden sind und nur Offline weil veraltet.
Aber ich selbst nutze auch noch 2008, aber 2017 hat schon viele Vorteile. Aber versuch's erst garnicht ohne SSD. So schnell kannste Kaffee nich nachkaufen!

Und @oldmax: Bitte ohne h :p
Irgendwann finde ich garantiert auch mal Zeit es im Ganzen zu lesen, jetzt bin ich leider zu sehr eingespannt. Aber drüber geschaut habe ich schon, sieht vielversprechend aus.
 
Hi
Danke erst Mal für deine offene Antwort. Zum Buch, ja es ist eine Anleitung, wie man sich mit einem PC einen Einblick zur Laufzeit in den Controller verschafft und ja, Assembler ist der zweite Teil, den du vermutlich nicht mehr gelesen hast, sonst wäre dir aufgefallen, das dort ebenfalls die Entwicklung eines umfangreichen Programmes besprochen wird. OK, das Thema Datenbank. Es muß sich niemand diesen Abschnitt aneignen, nur die Zukunft geht halt weg von der Ablage von Daten in Dateien und hin zu Ablage in Tabellen. So können sehr umfangreiche Daten verarbeitet werden, weil nur die erforderlichen Daten von der Datenbankmaschine über die SQL Anweisungen zur Verfügung gestellt werden. Ich bin schon der Meinung, das Grundlagen von Datenbanken zur Anleitung von VB Anwendungen gehören. Schließlich sind viele Objekte schon zur direkten Wiedergabe von Daten einer Datenbank eingerichtet. Oft genügt es in den Eigenschaften eine direkte Beziehung einzustellen. Doch das ist schon Stufe 2 und nicht Thema im Buch, obwohl ich an verschiedenen Stellen zu Experimenten mit den Eigenschaften und Ereignissen aufforderte. Gut, du bist vermutlich nicht der neugierige Anfänger und so mag das ein oder andere vielleicht etwas langweilig sein. Aber das Wesentliche hast du ja erkannt, es ist leicht zu verstehen und das war auch mein Anspruch an dieses Buch. So hoffe ich, auch noch ein Feedback von Lesern zu bekommen, die damit völlig neu in die Materie einsteigen.
Gruß oldmax
 
Das mit Datenbanken wunderte mich auch etwas, weil es doch recht früh kam (laut Inhaltsverzeichnis). Und das ist ein gewaltig komplexes Thema ansich.
Hast du dir mal DataSets / DataTables angeschaut?
 
Hi
Ein wenig verwundert bin ich schon über die Frage. Ich hab mit Delphi ziemlich umfangreiche Anwendungen geschrieben. Aber das hat bei weitem nichts mit dieser kleinen Einführung in Datenbankanwendung zu tun. Ehrlich gesagt dachte ich, ausreichend dieses Thema begründet zu haben. Aber vielleicht solltet ihr Mal den Abschnitt durchgehen und vom Standpunkt ausgehen, das es nicht für Experten gedacht war, sondern für den Einsatz im privaten Bereich. Sicherlich, hier vielleicht ein wenig "Overdrived", aber stellt euch Mal vor, man könnte auf die Idee kommen, einen Slotcar Club zu gründen, und regelmäßig Rennen ausfahren. Ist Mal was anderes, als nur mit der Console zu spielen und eine Zeitlang hatte ich das Gefühl, das es wieder im Kommen ist. Soo, muß jetzt aber Schluss machen.
Gruß oldmax
 
Zuletzt bearbeitet:
Das war ja jetzt auch keine Kritik. Kritik könnte ich erst äußern wenn ich genügend Zeit hatte es komplett zu lesen.
Nein, es war eine ernst gemeinte Frage. Weil ich selbst, grade durch die Server, weiß dass Datenbanken gerne massiv Speicher inhalieren. Da ist es manchmal vielleicht doch sinniger einfach eine xml Datei oder DataSet zu nutzen, grade bei wenigen Daten. Klar, möchte man die gesamte RIPE Daten auswerten (Zuordnung IPv4 Adresse zu Registrar uvm.) da geht es um eine Datenbank nicht drum herum, aber das sind ja auch Millionen an Datensätzen. Letzteres steht mir noch bevor, "freu" ich mich schon drauf... Außerdem, die Frage war zumindest meinerseits eher, warum gleich (ms)sql Datenbank und nicht etwas Anderes. Datenspeicher Thema ansich ist wichtig, klar.
 
Hi
Meld mich noch mal kurz zu Wort. Das Programm arbeitet mit Datasets, glaub ich, die einer Datenbank entnommen werden. Warum SQL? Einfach deshalb, weil auch Daten aus anderen Tabellenprogrammen z.B. Excell mit SQL geholt werden können. Aber um das hier zu vertiefen müßte ich mich mal wieder reindenken. Das Buch hab ich vor ca. 6 Jahren geschrieben. In der Zwischenzeit lag es halt rum und bevor auch die letzte Seite verstaubt ist, dachte ich, ich könnt euch noch was Gutes damit tun...:cool:
Wie bereits gesagt, schaut nicht auf einzelne Themen und sondert sie ab. Das ist dann logisch, das dann etwas falsch oder nicht verstanden wird. ich wollte auch nicht ein VB-Lehrbuch schreiben, sondern eher sowas," wie lerne ich, Programme zu schreiben". VB war eigentlich nur Mittel zum Zweck. Deshalb denke ich schon, das es wichtig ist, eben die vorgeschlagene Programmentwicklung nachzuarbeiten, weil jeder Schritt einer Aufgabe von der Problemanalyse bis zur Lösung erklärt werden sollte. Und genau das weiß ich eben nicht, ob es mir gelungen ist. Mir geht es ja so wie euch, ich bin ein wenig vorbelastet, weil ich doch schon ganz gut mit Programmierungen der verschiedensten Art zurechtgekommen bin. Da verliert man den Blick eines Anfängers, der staunend vor so einem kleinen Bauteil steht und erst mal völlig konfus drauflos macht. Vielleicht wäre es für Heini_14 eine geeignete Lektüre. Wenn der mir dann sagt, er hat alles verstanden und es ist ihm gelungen, die VB -Anwendung fertigzustellen, dann hab ich alles richtig gemacht.
Gruß oldmax
 
Ach ja, noch ein kleiner Nachtrag. Ich sprach eine Slotcar-Bahn an. Nun, das war eigentlich auch mein Motiv, mich den Controllern zu widmen. Die PC Anwendung mit Rundenzählung und Zeiterfassung sowie Auswertung der schnellsten Runde war nicht das Problem, es war die Signalerfassung. Ein PC ist diesbezüglich halt ein wenig lahm und Zeiten im tausendstel Sekundenbereich einfach illusorisch. Dem Controller wird dabei noch langweilig. Also durfte er die Zeiten und Runden erfassen und an den PC senden. Dieser hat dann die Ergebnisse den Teilnehmern zugeordnet und ausgewertet. Also wieder Datenbank. Am Bau der Rennbahn arbeite ich immer noch und am Programm eigentlich auch, weil dauernd was dazwischen kommt. Mittlerweile hab ich mich von meinen Plänen verabschiedet, weil leider n meiner Nachkommenschaft diesbezüglich kein Interesse besteht und für mich allein es keinen Sinn macht. Also beschäftige ich mich mit renovieren und Garten umgraben. Aber dafür brauch ich kein Programm.....
 
Hi
Mittlerweile ist ein wenig Zeit vergangen und ich hätte gern noch ein klein wenig Feedback. Hat sich jemand mit dem Inhalt auseinander gesetzt? Oder gar die Anleitung abgearbeitet? Wie seid ihr voran gekommen? Welche Probleme gab es? Laßt mich Mal ein klein wenig teilhaben. Ich würde mich sehr darüber freuen.
Gruß oldmax
 
Hallo Oldmax,

erstmal Respekt und Dank für die ganze Arbeit, die du dir gemacht hast!!

Beruflich bin ich auf den Arduino umgestiegen und daher habe keine direkte Verwendung für deine Unterlagen. Und privat fehlt mir momentan die Zeit mich mit deinem Script zu beschäftigen. Sorry ... von daher gibt es außer Dank keine Rückmeldung.
 
Hi,
Trotzdem,danke für die Antwort. Nun,ich hoffe auf Antworten von Lesern, die sich dem Buch und dem Inhalt zugewendet haben. Von den Controllerfreaks denke ich, das sie bestenfalls lediglich am ersten Teil Interesse haben. Und das sie programmieren können, daran habe ich keine Zweifel. Also bleiben die Neueinsteiger, denen dieses Buch gewidmet ist und auf deren Feedback ich hoffe. Diese Gruppe dürfte es sein, der nicht gleich klar ist, was Stack, Interrupt, Laufzeit, Programmzyklus oder sonst was dergleichen ist. Aber natürlich ist mir auch die Antwort von Fachleuten Recht und erwünscht. Daher danke nochmal.
Gruß oldmax
 
Mein erster Eindruck nach kurzem Überfliegen:
Sieht sehr ausführlich beschrieben aus, sodaß es trotz des doch ziemlich großen Umfangs auch Anfänger nachbauen könnten. Komplett durchlesen werde ich es nicht, weil ich Basic schon lange nicht mehr benutze und mich das Thema auch eher weniger interessiert. ;)

Zufallsfund:
Bei den beiden Schaltungen auf den Seiten 593/594 ist der Transistortyp (BC328 (PNP) / BC338 (NPN)) vertauscht.
Bei der ersten Schaltung sind außerdem noch die Bezeichnungen PNP / NPN vertauscht.
 
Upps, und ich habs mindestens zehnmal Korrektur gelesen. Danke für den Hinweis, werde mal bei Gelegenheit ein Korrekturblatt erstellen.
Gruß oldmax
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)