Título: Hacer compatible C++ códigos de C#. Publicado por: Meta en 23 Febrero 2015, 23:17 pm Hola:
Tengo este código dentro de un button para enviar tramas de bytes hecho con C#. Código
Da igual cuantras tramas hay que enviar, en C++ se hace así com indica abajo enviando la letra t. Código
Quiero hacer una cadena escrito más cómodamente como el ejemplo en C# hecho abajo. Código
¿Cómo se hace en Visual C++ 2010? Gracias. Título: Re: Hacer compatible C++ códigos de C#. Publicado por: Meta en 24 Febrero 2015, 01:51 am Hola:
Intenté ahcerlo así: Código
Me da errores. Título: Re: Hacer compatible C++ códigos de C#. Publicado por: Eleкtro en 24 Febrero 2015, 03:05 am Me da errores. ¿Vas a mostrar y comentar el mensaje de error de compilación, o debemos adivinarlo?. :¬¬Practicamente no manejo nada en absoluto VC++, pero dispongo de una herramienta traductora privada que es bastante fiable, prueba utilizando esta sintaxis: Código
Saludos! Título: Re: Hacer compatible C++ códigos de C#. Publicado por: Meta en 24 Febrero 2015, 08:37 am Hola:
Tienes razón. Aquí están los errores que he me salió. Citar ------ Operación Generar iniciada: proyecto: InterDuinoCPP, configuración: Debug Win32 ------ InterDuinoCPP.cpp c:\users\meta\documents\visual studio 2010\projects\interduinocpp\interduinocpp\Form1.h(195): error C2653: 'Enconding' : no es un nombre de clase o espacio de nombres c:\users\meta\documents\visual studio 2010\projects\interduinocpp\interduinocpp\Form1.h(195): error C2065: 'ASCII' : identificador no declarado c:\users\meta\documents\visual studio 2010\projects\interduinocpp\interduinocpp\Form1.h(195): error C2227: el operando izquierdo de '->GetBytes' debe señalar al tipo class/struct/union/generic el tipo es ''unknown-type'' c:\users\meta\documents\visual studio 2010\projects\interduinocpp\interduinocpp\Form1.h(196): error C2664: 'void System::IO::Ports::SerialPort::Write(System::String ^)' : no se puede convertir el parámetro 1 de 'int' a 'System::String ^' No hay un operador de conversión definida por el usuario disponible, o No existe una conversión estándar del formulario al que se le aplica la conversión boxing del tipo aritmético al tipo de destino ========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ========== En cuanto a tu código, da más errores y los mismos que estos del ASCII, Encoding. Saludos y gracias por el intento. Título: Re: Hacer compatible C++ códigos de C#. Publicado por: Eleкtro en 24 Febrero 2015, 11:31 am El primer, el segundo, y el tercer error, suceden por que no se encuentra el namespace (como te está indicando). Importa el namespace donde se haya el miembro "Encoding" (System.Text.Encoding)...
Código
El último error, se explica por si mismo también, el método SerialPort.Write no acepta el datatype Int como primer parámetro, sino un array de Byte, de Char, o un String. Cómo explica la MSDN: https://msdn.microsoft.com/en-us/library/ms143551%28v=vs.110%29.aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-1 El método por defecto acepta un String, y al no poder convertir un Int a String... pum. Me imagino que al corregir los tres primeros errores de compilación referente al namespace y así poder asignar el array de bytes, se auto-corregirá el error de parametización del método serialport1.write() al mismo tiempo, puesto que estás intentando utilizar el overload que acepta un array de bytes. PD: ¿Ves que pronto se solucionan más o menos las cosas cuando uno especifica la información necesaria al formular una pregunta de programación sobre un error?, que no eres nuevo en el foro, deberías saber ya lo molesto que resulta eso. Saludos! Título: Re: Hacer compatible C++ códigos de C#. Publicado por: Meta en 24 Febrero 2015, 14:45 pm Hola Señor:
Aquí en español. https://msdn.microsoft.com/es-es/library/ms143551%28v=vs.110%29.aspx?cs-save-lang=1&cs-lang=cpp&f=255&MSPPError=-2147217396#code-snippet-1 (https://msdn.microsoft.com/es-es/library/ms143551%28v=vs.110%29.aspx?cs-save-lang=1&cs-lang=cpp&f=255&MSPPError=-2147217396#code-snippet-1) Aquí sobre Encoding y ASCCIEncoding, he puesto estos dos uses y nada. https://msdn.microsoft.com/es-es/library/system.text.asciiencoding%28v=vs.110%29.aspx (https://msdn.microsoft.com/es-es/library/system.text.asciiencoding%28v=vs.110%29.aspx) A pesar que parece que es así: [HIGHLIGHT="C++"] cli::array<unsigned char> ^mBuffer = Encoding::ASCII->GetBytes("Led_8_ON"); serialPort1->Write(mBuffer, 0, mBuffer->Length);[/HIGHLIGHT] No lo es, todavía con los mismos errores que salen. Lo que he hecho. (http://www.subeimagenes.com/img/108-1235903.png) Paso 2. (http://www.subeimagenes.com/img/109-1235904.PNG) Paso 3. (http://www.subeimagenes.com/img/110-1235905.PNG) Paso 4. (http://www.subeimagenes.com/img/111-1235906.PNG) Haces doble clic enun button y poner el código. Este código C# quiero traducirlo a Visual C++ 2010. Código: private void button_b_Click(object sender, EventArgs e) Saludos. Título: Re: Hacer compatible C++ códigos de C#. Publicado por: Meta en 25 Febrero 2015, 04:42 am Me ha servido enviar tramas, ahora toca recibir.
Código
Me dan estos errores y creo que es por mala traducción. Citar Error 2 error C3350: 'System::IO::Ports::SerialDataReceivedEventHandler' : un constructor de delegado espera 2 argumentos c:\users\meta\documents\visual studio 2013\projects\project1\project1\MyForm.h 41 1 Project1 Otro error. Citar Error 3 error C3867: 'Project1::MyForm::Actualizar': falta la lista de argumentos de la llamada a la función; utilice '&Project1::MyForm::Actualizar' para crear un puntero al miembro c:\users\meta\documents\visual studio 2013\projects\project1\project1\MyForm.h 52 1 Project1 Título: Re: Hacer compatible C++ códigos de C#. Publicado por: Meta en 26 Febrero 2015, 00:19 am Ya encontré la solución y funciona.
Se los dejo aquí por si alguien le hace falta o le pueda interesar. Código
Saludos. |