Forum: Mikrocontroller und Digitale Elektronik MCP2221A VBA


von Bodo M. (bodo_75)


Lesenswert?

Hallo
ich habe einen Adapter mit MCP2221A und wenig bis keine 
Programmiererfahrung.
Ich möchte mit VBA auf die Funktionen der DLL zugreifen.
Kennt jemand einen Quellcode für VBA, an dem ich sehen kann, wie es 
geht?

Grüße
PS: Kann leider nichts zeigen. Momentan geht gerade wieder garnichts.

von Harald K. (kirnbichler)


Lesenswert?

Bodo M. schrieb:
> ich habe einen Adapter mit MCP2221A

Das dürfte der hier sein:

https://www.microchip.com/en-us/product/mcp2221a

> Ich möchte mit VBA auf die Funktionen der DLL zugreifen.

Du meinst vermutlich die hier:

https://ww1.microchip.com/downloads/en/DeviceDoc/MCP2221DLL_2015_06_17.zip


Da dürfte das hier für Dich vielleicht hilreich sein.

https://learn.microsoft.com/en-us/office/client-developer/excel/how-to-access-dlls-in-excel#calling-dll-functions-and-commands-from-vba

Da Du nicht mit einer .Net-Programmiersprache arbeitest, wirst Du die 
"unmanaged"-Variante der DLL verwenden müssen.

Im Zip von Microchip sind Beispiele für den Gebrauch der "unmanage" DLL 
aus VB heraus zu finden, die wirst Du für Dein VBA entsprechend anpassen 
müssen.


Warum ausgerechnet VBA? Weil Excel?

von Bodo M. (bodo_75)


Lesenswert?

Danke für die Antwort
Harald K. schrieb:
> https://www.microchip.com/en-us/product/mcp2221a

Genau. Ich möchte dann einen SI4844 steuern. Keine Hardware arbeitet 
heutzutage ohne Software. MC bekomme ich hin. PC-Programmierung ist 
schon schwieriger für mich.
Ich will die ersten Versuche mit I2C und SI4844 mit Windows-PC machen. 
Sonst müßte ich einen MC brennen -> geht nicht -> Programm ändern - MC 
brennen -> u.s.w.
Ich dachte eine Platine mit I2C und ein paar GPIO wäre gut.
Da ich keine Programmierumgebungen habe, ist meine Wahl auf Python oder 
VBA gefallen. Excel ist nicht der Hauptgrund. Eher die leicht zu 
erstellenden Oberflächen. Msgbox und Listbox usw.

Gruss B.

von Rainer W. (rawi)


Lesenswert?

Bodo M. schrieb:
> Ich will die ersten Versuche mit I2C und SI4844 mit Windows-PC machen.
> Sonst müßte ich einen MC brennen -> geht nicht -> Programm ändern - MC
> brennen -> u.s.w.

Ja und?
Die Zeiten von EPROM-Löschgeräten sind vorbei.

Vielleicht ist wild "brennen -> geht nicht" die falsche Strategie. 
Benutze einen Debugger. Dann kannst du gucken, an welcher Stelle genau 
das Programm von dem geplanten Verlauf abweicht und dort korrigieren.

: Bearbeitet durch User
von Bodo M. (bodo_75)


Lesenswert?

Rainer W. schrieb:
> Die Zeiten von EPROM-Löschgeräten sind vorbei.
Ist klar. Ständig brennen ist aber auch nicht gut. Mal eben einen Wert 
ändern ist mit PC einfacher, denke ich.

Rainer W. schrieb:
> Benutze einen Debugger.
Gute Idee. Z.B. Beispiel? Kosten soll es natürlich nichts bis fast 
nichts.

Grüße

von Harald K. (kirnbichler)


Lesenswert?

Bodo M. schrieb:
> Da ich keine Programmierumgebungen habe, ist meine Wahl auf Python oder
> VBA gefallen.

Kann es sein, daß Du dann gar nicht VBA meinst? VBA ist "visual basic 
for applications", das ist die in Office-Produkte integrierte 
Macroprogrammiersprache. Die gibt es also als Bestandteil von Word, 
Excel und Co.

Daneben gibt es Visual Basic, das nach 1998 zur .Net-Programmiersprache 
"VB.net" mutierte. Das wird auch aktiv weiterentwickelt und ist eine der 
von "Visual Studio" unterstützten Programmiersprachen.

Und dann gibt es noch die Skriptsprache VBScript, die man mit dem 
Skriptinterpreter cscript.exe bzw. wscript.exe ausführen kann, aber die 
bietet gar keine Unterstützung für Programmieroberflächen.

Was genau meinst Du also?

von Bodo M. (bodo_75)


Lesenswert?

Harald K. schrieb:
> Was genau meinst Du also?

VBA - Ist bei Office dabei, kostet quasi nix und ich habe etliche 
Bücher.

Harald K. schrieb:
> Daneben gibt es Visual Basic, das nach 1998 zur .Net-Programmiersprache
> "VB.net" mutierte. Das wird auch aktiv weiterentwickelt und ist eine der
> von "Visual Studio" unterstützten Programmiersprachen.

"VB.net" bzw. "Visual Studio" kann, so habe ich gelesen, in der 
Community-Version keine Serielle Schnittstelle. Kann sein, dass ich mich 
da getäuscht habe?
Da kann man auch keine Oberflächen erstellen. Oder?
Was ich gefunden habe, kostet alles richtig Geld und das ist es mir 
nicht wert.
Grüße

von Frank K. (fchk)


Lesenswert?

Bodo M. schrieb:

> "VB.net" bzw. "Visual Studio" kann, so habe ich gelesen, in der
> Community-Version keine Serielle Schnittstelle. Kann sein, dass ich mich
> da getäuscht habe?

https://learn.microsoft.com/de-de/dotnet/visual-basic/developing-apps/programming/computer-resources/accessing-the-computer-s-ports

> Was ich gefunden habe, kostet alles richtig Geld und das ist es mir
> nicht wert.
Warum nimmst Du denn überhaupt Windows? Da kostet vieles einfach Geld.

Es ist wie im richtigen Leben. Entweder hast Du genug Grips, um das 
selber zu machen, oder Du hast genug Geld, um jemanden zu beauftragen.

fchk

von Bodo M. (bodo_75)


Lesenswert?

Frank K. schrieb:
> Warum nimmst Du denn überhaupt Windows? Da kostet vieles einfach Geld.
Linux installiere ich regelmäßig. Alles funktioniert immer sehr gut. 
Eine Weile. Dann ist stundenlanges lesen und forschen angesagt. 
Irgendwas geht immermal nicht.

Frank K. schrieb:
> Es ist wie im richtigen Leben. Entweder hast Du genug Grips, um das
> selber zu machen, oder Du hast genug Geld, um jemanden zu beauftragen.
Schöner Spruch. Ich bin dann für den ersten Fall, es dauert nur etwas 
länger.
Die, die den Grips haben, haben ihn auch nicht mit dem Löffel gegessen.

Grüße

von Harald K. (kirnbichler)


Lesenswert?

Bodo M. schrieb:
> "VB.net" bzw. "Visual Studio" kann, so habe ich gelesen, in der
> Community-Version keine Serielle Schnittstelle.

Wo nur liest Du solche Dinge?

von Andreas K. (dreas)


Lesenswert?

Oben wurde der Link zur DLL schon eingefügt, unter VBA musst du jede 
Funktion separat bekannt machen, wie bei 
https://www.vba-tutorial.de/api/declare.htm

Dann kannst Du die Funktionen ganz normal aus VBA aufrufen. In der ZIP 
gibt es Beispielcode, z.B. \Unmanaged\Example 
Code\MCP2221DLL-UM_VBExampleCode\MCP2221DLL-UM_VBExampleCode\Mosul1.vb - 
der DLL Importbereich ist anders, restlichen Code müsstest Du mit 
kleinen Abwandlungen übernehmen können.

Unabhängig davon müsste es das MS Visual Studio in der Express Edition 
frei geben, mit der kannst Du auf DLLs zugreifen - 
Schnittstellenanbindung macht in diesem Falle die DLL. Wenn Du aber 
selbst auf die Schnittstellen zugreifen willst, kannst du auch in der 
Express natürlich "nativ" auf die Schnittstellen zugreifen (wenn ich 
nicht irre, ist bei mir schon eine Weile her).

von Bodo M. (bodo_75)


Lesenswert?

Harald K. schrieb:
> Wo nur liest Du solche Dinge?

Im Internetz.
Ich wollte die Stelle suchen, aber ich hab sie nicht gefunden.

Andreas K. schrieb:
> Unabhängig davon müsste es das MS Visual Studio in der Express Edition
> frei geben, mit der kannst Du auf DLLs zugreifen -
> Schnittstellenanbindung macht in diesem Falle die DLL.

Ja, VS gibt es frei. Kann aber nicht auf Schnittstellen zugreifen. Logo. 
MS wird auch nichts anderes schreiben. Ich werde das nochmal mit den 
Beispielen von Microchip testen.

Danke an alle
Grüße Bodo

von Harald K. (kirnbichler)


Lesenswert?

Bodo M. schrieb:
> Ja, VS gibt es frei. Kann aber nicht auf Schnittstellen zugreifen. Logo.

Das halte ich schlichtweg für Unfug. Warum sollte man das nicht können?

https://learn.microsoft.com/en-us/dotnet/visual-basic/developing-apps/programming/computer-resources/how-to-receive-strings-from-serial-ports

https://learn.microsoft.com/en-us/answers/questions/183729/reading-data-from-a-usb-port-using-vb-net-and-visu


Könnte es sein, daß Du das mit VB6.0 und mscomm.ocx 
durcheinanderbringst?

von Bodo M. (bodo_75)


Lesenswert?

Harald K. schrieb:
> Könnte es sein, daß Du das mit VB6.0 und mscomm.ocx
> durcheinanderbringst?

Nein. Ich hatte eine Seite da stand Community, Proffessional und 
Enterprise.
Community kostet nix, Proffessional ca. 1000 im Jahr(Abo), Enterprise 
k.A. (keine Ahnung). Und an dieser Stelle war VS raus.
VB und mscomm.ocx war es nicht.

Harald K. schrieb:
> Das halte ich schlichtweg für Unfug. Warum sollte man das nicht können?

Ok OK. Da hast du Recht. Das reine VS kann das evtl. nicht. Das fremde 
DLLs das nicht können, stand da nicht.
Inzwischen habe ich eine DLL, die die Seriellen Schnittstellen unter VBA 
(auf meinem Niveau) ansprechen kann. Mein MCP2221 hat aber kein DTR und 
RTS.

Gruß Bodo

von Harald K. (kirnbichler)


Lesenswert?

Bodo M. schrieb:
> Nein. Ich hatte eine Seite da stand Community, Proffessional und
> Enterprise.
> Community kostet nix, Proffessional ca. 1000 im Jahr(Abo), Enterprise
> k.A. (keine Ahnung). Und an dieser Stelle war VS raus.

Das meine ich nicht. Sondern Deine Behauptung, daß die 
"Community"-Edition nicht mit seriellen Schnittstellen kommunizieren 
könne.

von Bodo M. (bodo_75)


Lesenswert?

Harald K. schrieb:
> Das meine ich nicht. Sondern Deine Behauptung, daß die
> "Community"-Edition nicht mit seriellen Schnittstellen kommunizieren
> könne.

Das war keine Behauptung, ich lasse mich gern bekehren. Vielleicht stand 
da auch (sinngemäß) "kein Zugriff auf Ports". Falschverstanden.
Ich bin schon am neuerlichen Testen von VS. Sieht nur alles ganz schön 
kompliziert aus.

von Harald K. (kirnbichler)


Lesenswert?

Bodo M. schrieb:
> Sieht nur alles ganz schön
> kompliziert aus.

Nun, welche "Entwicklungsumgebung" hast Du denn bislang für Dein VBA 
verwendet? Den tollen VBA-Editor, der mit Excel & Co. mitgeliefert wird?

von Andreas K. (dreas)


Lesenswert?

Eventuell haben die Pro/Enterprise Versionen zusätzlich schöne Bildchen, 
die man reinziehen kann und dann nur die Events, etc. ausprogrammieren 
muss. Zu Fuss wird es allemal gehen.

von Bodo M. (bodo_75)


Lesenswert?

Harald K. schrieb:
> Den tollen VBA-Editor, der mit Excel & Co. mitgeliefert wird?

Ja. Gibt es da was Schöneres?

Andreas K. schrieb:
> Eventuell haben die Pro/Enterprise Versionen zusätzlich schöne Bildchen,
> die man reinziehen kann und dann nur die Events, etc. ausprogrammieren
> muss. Zu Fuss wird es allemal gehen.

Zu Fuss heißt, man hat Ahnung. Ich denke mal der VBA Editor ist genau 
mein Niveau. Einbinden klappt. Ich mache "DevCount" und solche einfachen 
Dinge.
Da bekommen nur keine Werte zurück. Ich werde jetzt mal andere Dinge 
testen. Aber da muß ich erstmal lesen.
Deswegen suchte ich ja VBA-Beispiele.

Gruß Bodo

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.