Buenos dias.
Resulta que estoy haciendo un programa en c# y arduino el cual; c# lee un .txt que contiene unos numeros separados por coma asi: (6,2,1,3,3,2), la idea es que esos numeros sean una señal la cual yo le tengo que pasar a arduio para que el me la trasnfome, por ejemplo escalarlo,hacerle corrimiento, sumbuestreo o reflexion, entonces c# lo organiza de tal manera que quede asi ("cantidad de datos","transformacion","unidades a transfromar","la señal separada por comas") para mandarselo a arduino.
por ejemplo para la señal anterior, c# le manda a arduino lo siguiente: "6,escalar,2,6,2,1,3,3,2".
el problema es que no se si arduino si este recibiendo la informacion o no, porque cuando le pido a arduino que me devulva la señal transformada simplemente no me la devulve y hace como si no hubiera nada.
adjunto el codigo.
CODIGO EN ARDUINO:
int senal[200];
int senaltrans[200];
int cont=0;
void setup() {
Serial.begin(9600);
}
void loop() {
}
void serialEvent() {
String t= Serial.readStringUntil(',');
String opcion= Serial.readStringUntil(',');
String unidades= Serial.readStringUntil(',');
for(int i=0;i<t.toInt();i++){
senal*=Serial.readStringUntil(',').toInt(); *
- }*
- //*
- if(opcion.equals("Reflexion") == true){*
- for(int i=t.toInt()-1;i>=0;i--){*
- if(i<t.toInt()-1){senaltrans[cont]=senal[i+1];}*
- else{senaltrans[cont]=senal[cont];}*
- cont++; *
- } *
- for(int i=0;i<t.toInt();i++){*
_ Serial.print(senaltrans*);_
_ if(i+1 < t.toInt()){_
_ Serial.print(",");_
_ } _
_ } _
_ }_
_ // _
_ else if(opcion.equals("escalar") == true){_
_ for(int i=0;i<t.toInt();i++){_
senaltrans=senal_unidades.toInt();
}
* for(int i=0;i<t.toInt();i++){
Serial.print(senaltrans);
if(i+1 < t.toInt()){
Serial.print(",");
}
}
}
//
else if(opcion.equals("submuestreo") == true){
for(int i=0;i<t.toInt();i++){
senaltrans=senal[i*unidades.toInt()];
}
for(int i=0;i<t.toInt();i++){
Serial.print(senaltrans);
if(i+1 < t.toInt()){
Serial.print(",");
}
}
}
//
else if(opcion.equals("corrimiento") == true){
for(int i=0;i<t.toInt();i++){
cont=i+unidades.toInt();
if(cont<0){cont=27+cont;}
senaltrans=senal[cont];
}
for(int i=0;i<t.toInt();i++){
Serial.print(senaltrans);
if(i+1 < t.toInt()){
Serial.print(",");
}
}
}
}
CODIGO EN C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
using Microsoft.VisualBasic;
namespace Segundo_Punto_Señales
{_
public partial class Window_Form : Form*
* {*
* string señal;*
* string señaltrans;*
* string señalaux;*
* string aux;*
* string Unidades;*
* String s;*
* int i = 0;*
* int[] señales = new int[200];*
* int[] señales_transformada = new int[200];
_ SerialPort Arduino = new SerialPort("COM3");_
public Window_Form()
_ {
InitializeComponent();
}_
private void Window_Form_Load(object sender, EventArgs e)
_ {
Arduino.BaudRate = 9600;
Arduino.Parity = Parity.None;
if (!Arduino.IsOpen)
{
Arduino.Open();
}
int startIndex;
TextReader archivo;
archivo = new StreamReader("señal.txt");
señal = archivo.ReadToEnd();
señalaux = señal;
Char Range = ',';
while (señal != null) {
startIndex = señal.IndexOf(Range);
if (startIndex >= 0) {
aux = señal.Substring(0, startIndex);
señal = señal.Remove(0, startIndex + 1);
señales = Convert.ToInt32(aux);
}
else*
* {
señales = Convert.ToInt32(señal);
señal = null;
}
i++;
}
}_
private void Escalamiento_Click(object sender, EventArgs e)
_ {
if (!Arduino.IsOpen)
{
Arduino.Open();
}
Unidades = Interaction.InputBox("¿CUANTAS UNIDADES QUIERE ESCALAR?", "ESCALAMIENTO", "Unidades:", -1, -1);
Arduino.WriteLine(Convert.ToString(i) + "," + "escalar" + "," + Unidades + "," + señalaux);
Arduino.DataReceived += new SerialDataReceivedEventHandler(serialDataReceivedEventHandler);*_
* }*
* private void serialDataReceivedEventHandler(object sender, SerialDataReceivedEventArgs e)*
* {*
* // Obtenemos el puerto serie que lanza el evento*
* SerialPort currentSerialPort = sender as SerialPort;*
* Arduino.WriteLine(Convert.ToString(i) + "," + "escalar" + "," + Unidades + "," + señalaux);*
* // Leemos el dato recibido del puerto serie*
* señaltrans = currentSerialPort.ReadLine();*
* //SEÑALTRANS DEBERIA RECIBIR LA SEÑAL TRANSFORMADA QUE LE MANDA ARDUINO*
* }*
* }*
}