SerialPort.Read-Methode (Char[], Int32, Int32)

Gast #677642
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
Gast #678033
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
Gast #678111
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.
#678224
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.
Persönliche Seite #678544
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.
Gast #678995
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
Gast #766344
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...
Gast #1425747
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!!
#1425982
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.
1
using namespace System;
2
using namespace System::IO::Ports;
3

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

9
    // wchar_t
10
    array<wchar_t> ^wbuffer = gcnew array<wchar_t>(100); 
11
    sp->Read(wbuffer,0,1);    
12
    // or System::Char
13
    array<Char> ^scbuffer = gcnew array<Char>(100);
14
    sp->Read(scbuffer,0,1); 
15

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

22
    return 0;
23
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren