Forum: PC-Programmierung Einfacher Sende-Button seriell


von Jens Borgmann (Gast)


Lesenswert?

Hallo,
habe mir gerade VB Express 2005  runtergeladen und mache gerade meine
ersten Schritte in V.
Möchte folgendes ausprobieren.
Soll einfach nur ein button sein, der auf Knopfdruck einen
bestimmte Zeichenfolge über die serielle Schnittstelle ausgibt.
Hintergrund: Beamer kann man unter anderem über die serielle
Schnittstelle ansteuern.Alle Befehle der Fernbedienung ( HEX-Format )
stehen im Handbuch.

Gruß
Jens

von Kai R. (kairiek)


Lesenswert?

Schau mal, ob es in der Toolbox unter "Komponenten" den "SerialPort"
gibt. Den kannst du verwenden.

MFG

Kai

von Jens Borgmann (Gast)


Lesenswert?

Hallo Kai,

den habe ich bereits gefunden.
Aber wie verwende ich den ?
Mein erstes Programm war so ein sound-modul a la Raab.
Doppelklick auf den Button, den code ( aus dem Internet kopiert )
reingeschrieben , noch ne declaration ( auch kopiert ) drübergesetzt.
Fertig und eigentlich nix pogrammiert
Kann also nicht so scher sein.
Was ich suche ,ist der Befehl, den ich dem button zuordenen muß, damit
er was rausgibt.

Gruß

Jens

von Thomas L. (tom)


Lesenswert?

doppelklick: war vollkommen richtig :)

Es gibt auch noch mehr "Events" diese siehst du wenn du beim
Eigenschaftenfenster auf den "Blitz" klickst ..

Was hinter den Kulissen passiert, braucht dich eigentlich nicht zu
interessieren ...

Hier dennoch eine Erklärung. Für den Event Clicked (oder wie er heisst)
wird ein Eventhandler generiert (eben die Methode die aufgerufen wird).
Ausserdem fügt Visual Studio automatisch zum Event Clicked die
Verbindung zum EventHandler hinzu. Das erkennst du an einer Zeile
button1.Clicked += NAmeEventhandler (oder so ähnlich). Somit ist dann
der Event mit der EventHandling Routine verbunden.

Aber wie gesagt - das Ganze braucht dich nicht zu interessieren - darum
gehts ja im Endeffekt :)

von Andreas Menge (Gast)


Lesenswert?

aber um den seriellen Port einzubinden, muss ich ja nun in die event
methoden quellcode einfügen? also ihm sagen was ich zB an den Beamer
oder in meinem Fall will ich einem microcontroller binär codes senden
0001 usw.. das heißt also integerzahlen 0-9. habt ihr dafür beispiele?
wäre sehr dankbar bin auch anfänger mit visual basic.. habe jedoch mit
borland schon erfahrungen mit objektorientierter programmierung,
bekomme hier jedoch keine serielle schnittstelle angesteuert.

von Thomas L. (tom)


Lesenswert?

Soweit ich weiss gehts folgendermaßen:

Von der Toolbar die Komponente SerialPort auf die Form werfen. Du
bekommst dann ein Objekt namens serialPort1.

Diesem weist du dann die entsprechenden Einstellungen zu:

serialPort1.BaudRate = 9600;
serialPort1.DataBits = 8;
serialPort1.DtrEnable = false;
serialPort1.Parity = System.IO.Ports.Parity.None;
serialPort1.PortName = "COM3";
serialPort1.StopBits = System.IO.Ports.StopBits.One;

Die entsprechenden Einstellungen wirst du dem Handbuch des Beamers
entnehmen.

daraufhin öffnest du mittels
serialPort1.Open();
den eigentlichen seriellen Anschluss mit den Einstellungen, die du oben
gesetzt hast.

Nun kannst du mittels:
byte[] bs = new byte[5];
bs[0] = 0xff;
bs[1] = 0x30;
...
die einzelnen bytes in ein array schreiben und das dann mittels

serialPort1.Write(bs, 0, 5);

zum Beamer schicken. In unserem fall würde er jetzt also
1111 1111 0000 0011 ...
an den Beamer schicken

Ich weiss leider nicht wie die Befehle für den Beamer aussehen (nur ein
Byte oder mehrere, ...)

von Andreas Menge (Gast)


Lesenswert?

danke danke..
habe das jetzt in den Private Sub von Form1_Load geschrieben?
jedoch meckert er bei der Deklaration von byte [] bs = new byte[2];
kennt visual das nicht oder mach ich noch irgendwas falsch?
und beim senden SerialPort1.Write(bs, 0, 1); bedeutet, dass er den
array 0 und 1 sendet? also hier 0xff = ? und 0x30 = 0 ?

von swiqwiojde (Gast)


Lesenswert?

Hast du Visual Studio C++ oder Visual Basic? Es klingt mehr nach Basic.

von Thomas L. (tom)


Lesenswert?

Er schreibt von Visual Basic Express 2005. Also VB Code.
Mein Code ist C# Code. Evtl. geht hier die Array Initialiserung etwas
anders. Ich hatte noch nie mit VB.NET zu tun, kann also hier nicht
weiterhelfen. Das hier sollte jedoch helfen:
http://www.galileocomputing.de/openbook/vb_net/msvb020017.htm

Write(bs, 0, 1) ... den Befehl hättest du aber schon in der MSDN
nachschlagen können, aber warum denn wenn man eh hier alles vorgekaut
bekommt.

Er ist definiert als:
Write(byte[], offset, length).

kurzum: sende vom byte array, das angegeben wird, ab dem byte mit der
nummer "offset" und zwar soviele bytes wie in "length" stehen.
Er würde also 1 Byte senden (und zwar das erste).

von Andreas Menge (Gast)


Angehängte Dateien:

Lesenswert?

sorry dann habe ich das wohl falsch interpretiert.. natürlich nutze ich
dann auch lieber visual c++. das ist borland dann doch ähnlicher. nun
habe ich alle deine anweisungen befolgt und wollte nun folgendes
testen.
Habe einfach eine neue windows form anwendung erstellt und in dem
vorhanden Form1 ein Button1 erstellt. Bei Click auf diesen Button soll
nun an den COM 1 Port eine 1 also binär oder in byte zu sprechen 0x31
gesendet werden. Doch beim kompilieren kommen wieder nur
deklarationsfehler. Aller anfang ist doch schwer.
Als Anlage habe ich die Form1.h datei beigefügt.. vllt habe ich auch
einfach nur an der falschen Stelle den Quelltext eingefügt? aber wenn
ich das richtig verstanden habe ist das der CLick Event Abschnitt.

mfg und bitte nicht an mir verzweifeln g

von Thomas L. (tom)


Lesenswert?

Probiers mal mit C# ...
;)

Das ist imho der beste Weg zu beginnen, wenn du ein wenig C/C++
sprichst.

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.