www.mikrocontroller.net

Forum: PC-Programmierung SerialPort.Read-Methode (Char[], Int32, Int32)


Autor: moony (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.

Wäre jemand so freundlich mir diesen Befehl mt den Paametern zu 
erklären?

SerialPort.Read-Methode (Char[], Int32, Int32); <- (so steht er in der 
msdn)

In der Msdn von microsoft finde ich keine erklärung und mit google finde 
ich alles, nur keine Antwort.
Also bitte helft mir.

Danke, Gruß

moony

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das ein Scherz?
Suchergebnis bei Google mit dem Begriff "SerialPort.Read-Methode" und 
einmal auf die Methode draufgeklickt:

http://msdn2.microsoft.com/de-de/library/34t733fh(...

Autor: moony (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das soll natürlich kein Scherz gewesen sein.

Und du hilfst mir nicht wirklich, mir nur den link zu geben. Auf der 
Seite war ich nämlich schon x-Mal, konnte aber nichts mit:

array<wchar_t>^ buffer,
    int offset,
    int count

anfangen.

Ich dachte hier bekäme man mal eine Antwort mit der man etwas anfangen 
kann, nicht irgendeinen link zu einer Seite, bei der ein Anfänger nichts 
versteht.

Wäre mir einer mal so freundlich, eine bessere Antwort zu geben?

Danke,

moony

Autor: Bobby (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Erklärung steht auf der von Simon angegebenen Seite.
Du musst nur runterrollen. Verwirrend mag allerdings sein,
dass mit Zeichenarray und Pufferarray zwei unterschiedliche
Wörter für dasselbe Ding stehen.



Parameter

buffer

    Das Zeichenarray, in das die Eingabe geschrieben werden soll.

offset

    Der Offset im Pufferarray, ab dem geschrieben werden soll.

count

    Die Anzahl der zu lesenden Bytes.

Rückgabewert
Die Anzahl der gelesenen Bytes.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
moony wrote:
>
> array<wchar_t>^ buffer,
>     int offset,
>     int count
>
> anfangen.
>
> Ich dachte hier bekäme man mal eine Antwort mit der man etwas anfangen
> kann,

Dann solltest du auch eine Frage stellen, mit der man was
anfangen kann. Wenn du die Bedeutung eines Parameters nicht
verstehst, dann frage gezielt danach. Solche 'Rundumschlagfragen'
ala 'Hilfe. Kann mir wer das Universum (oder auch die Frauen)
erklären', können in einer Forum wie diesem nicht wirklich
beantwortet werden.

> nicht irgendeinen link zu einer Seite, bei der ein Anfänger nichts
> versteht.

Dann solltest du gezielt nach den Dingen fragen, die du nicht
verstehst. Irgendwas in der Beschreibung wirst du ja wohl
verstehen, bzw. dir eine Hypothese darüber bilden können.
Und nach dem Rest kannst du fragen.
Eine Funktion namens Read in einer SerialPort Klasse ist ja
nicht gerade Raketentechnik. Das ist ziemlich überschaubar
was die wohl machen wird und welche Argumente sie mindestens
benötigen wird.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Char[], Int32, Int32 will M$ darauf hinweisen, dass bestimmte 
Datentypen erforderlich sind.

Der erste Parameter ist ein Array von Chars (Char[]), d.h. es muss dort 
Platz vorhanden sein, weil etwas dort rein soll.

Die beiden anderen Parameter sind ganzzahlige 32-bit breite Variablen, 
d.h. sie können Werte von

// stdint.h
#define INT32_MAX 0x7fffffffLL
#define INT32_MIN (-INT32_MAX - 1LL)

annehmen.

Autor: moony (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für eure Antworten.

Ich habe den Befehl in meinem Programm jetzt so geschrieben:

serialPort1->Read(buffer, 0, 100);

buffer habe ich davor als:

char buffer[100];

definiert.

Wennn ich jetzt compelieren lasse, dann erscheint folgende 
fehlermeldung:

error C2664: 'int 
System::IO::Ports::SerialPort::Read(cli::array<Type,dimension> 
^,int,int)': Konvertierung des Parameters 1 von 'char [100]' in 
'cli::array<Type,dimension> ^' nicht möglich
with
1>        [
1>            Type=unsigned char,
1>            dimension=1
1>        ]

Kann mir jemand sagen was ich jetzt "falsch" gemacht habe?

Danke, Gruß

moony

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin kein Experte für dieses komische Zeug, das Microsoft als C++ 
bezeichnet, aber ich denke, es müßte heißen:

Char buffer[100];

Autor: moony (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

nein, das war es auch nicht. VC++ erkennt char nur, wenn es klein 
geshrieben wird.

Weiß denn keiner wie das geht mit dem:

SerialPort.Read... ?


moony

Autor: r3d2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
probier mal:

array<char,1> ^buffer;               // .Net2.0, verwaltete Resourcen
buffer = gcnew array<char,1>(100);   // Instanzierung mit Größe(100)
serialport->Read(buffer,0,1);      //ließt 1Byte(=8Bit) aus dem 
eingabepuffer
//über..
buffer[0]; //char, gerade eben gelesen
//kannst du auf die elemente des array (wie gewohnt) zugreifen.

viel erfolg...

Autor: MANOLO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Did you find a proper solution??

I have the same problem than you. Pleasi if you got it send me an e-mail 
explaining the declaration of the variable buffer that yo have made.

If it's possible in english because don't understand german. (a german 
friend translated it to me)

Regards!!

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
r3d2 schrieb:
> probier mal:
>
> array<char,1> ^buffer;               // .Net2.0, verwaltete Resourcen
> buffer = gcnew array<char,1>(100);   // Instanzierung mit Größe(100)
> serialport->Read(buffer,0,1);      //ließt 1Byte(=8Bit) aus dem
> eingabepuffer
> //über..
> buffer[0]; //char, gerade eben gelesen
> //kannst du auf die elemente des array (wie gewohnt) zugreifen.
>
> viel erfolg...

Fast s.u.
using namespace System;
using namespace System::IO::Ports;

int main(array<System::String ^> ^args) {
    SerialPort ^sp = gcnew SerialPort();
    
    // SerialPort.Read Method (Char[], Int32, Int32)

    // wchar_t
    array<wchar_t> ^wbuffer = gcnew array<wchar_t>(100); 
    sp->Read(wbuffer,0,1);    
    // or System::Char
    array<Char> ^scbuffer = gcnew array<Char>(100);
    sp->Read(scbuffer,0,1); 

    // SerialPort.Read Method (Byte[], Int32, Int32)
     
    // unsigned char 
    array<unsigned char> ^cbuffer = gcnew array<unsigned char>(100); 
    sp->Read(cbuffer,0,1); 

    return 0;
}


Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.