warum so kompliziert?
Wenn du den Buffer ganz normal als char Array deklarierst und mit "O" fütterst, sollte doch ein Typecast auf String der Write Funktion genügen, oder?
serialPort1->Write(String(Buffer), 0, 1); //Datensatz anfordern
sast
Hi,
ich möchte von einem µC über RS-232 Daten an den PC schicken, um sie dann weiter zu verarbeiten. Die Daten (drei Integerwerte) sollen immer im Dreierpack versendet werden. Mein Problem liegt bei der PC-Software, die die Datenpakete empfangen soll.
Aus organisatorischen Gründen soll der PC mit einem definierten Zeichen (char 'O') ein Datenpaket abrufen, das der µC dann abschickt. Mit Hyperterminal funktioniert das alles sehr gut (ich tippe O und ein Datensatz erscheint)!! Die µC-Software müsste daher in Ordnung sein.
Das Empfangen funktioniert auch mit meiner in Visual C++ geschriebenen Software mittels der serialPort-Klasse gut, Probleme gibts beim Senden des "Anforderungszeichens". Das klappt noch nicht, jedenfalls sendet der µC keine Daten!!!
Folgenden Code habe ich dafür verwendet:
Diese Write-Funktion sendet also ein char-Array (mit 'O') über die Schnittstelle. Die etwas eigene Art der Deklaration des Arrays war mir erst etwas fremd, habe das dann mit der Hilfe aber so hingebastelt. Ist da vielleicht etwas falsch? Konnte dazu nicht soviel im Internet finden...Code:array<wchar_t, 1>^ Buffer = gcnew array<wchar_t, 1>('O'); serialPort1->Write(Buffer, 0, 1); //Datensatz anfordern
Achja, falls von Bedeutung: Auf dem µC wird das Zeichen mit uart_getc() aus Fleury's Bibliothek ausgelesen.
Habt ihr eine Idee, woran das liegen könnte? Wird das Zeichen 'O' vielleicht nicht richtig interpretiert?
Roboter, CNC Fräse, Elektronik und Basteleien stelle ich auf meiner Website vor...
warum so kompliziert?
Wenn du den Buffer ganz normal als char Array deklarierst und mit "O" fütterst, sollte doch ein Typecast auf String der Write Funktion genügen, oder?
serialPort1->Write(String(Buffer), 0, 1); //Datensatz anfordern
sast
雅思特史特芬
开发及研究
Leider nein...sollte doch ein Typecast auf String der Write Funktion genügen
Mit diesem Code:
bekomme ich folgenden Fehler:Code:char Buffer[1]; Buffer[0] = 'O'; serialPort1->Write(String(Buffer), 0, 1); //Datensatz anfordern
Code:error C2664: 'void System::IO::Ports::SerialPort::Write(cli::array<Type,dimension> ^,int,int)': Konvertierung des Parameters 1 von 'System::String' in 'cli::array<Type,dimension> ^' nicht möglich 1> with 1> [ 1> Type=wchar_t, 1> dimension=1 1> ] 1> Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden
Roboter, CNC Fräse, Elektronik und Basteleien stelle ich auf meiner Website vor...
array<unsigned char>^ texBufArray = gcnew array<unsigned char>(24);
Quelle: http://social.msdn.microsoft.com/For...9-3308070be860
wie du an dem Beispiel sehen kannst, geben die die Anzahl in der Klammer an. Wahrscheinlich interpretiert er dein 'O' (laut meinem Tafelwerk 79dez) als eine Zahl.
sast
雅思特史特芬
开发及研究
Lesezeichen