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


von moony (Gast)


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

von Simon K. (simon) Benutzerseite


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(VS.80).aspx

von moony (Gast)


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

von Bobby (Gast)


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.

von Karl H. (kbuchegg)


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.

von Stefan B. (stefan) Benutzerseite


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.

von moony (Gast)


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

von Rolf Magnus (Gast)


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];

von moony (Gast)


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

von r3d2 (Gast)


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...

von MANOLO (Gast)


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!!

von Arc N. (arc)


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
}

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.