我正在从Arduino读取模拟数据并使用zedgraph在Visual C#中显示它。我的GUI上有一个开始按钮,用于开始从Arduino读取串行数据。我可以使用private void read_Tick
方法来打开arduino端口,读取串行数据,在zedgraph上显示数据,然后每1秒关闭一次arduino。如果您在理解我的单词时遇到困难,请按以下方法操作:如何使用zedgraph将串行数据从Arduino发送到Visual Studio C#同时使用zedgraph或反之亦然
private void read_Tick(object sender, EventArgs e)
{
try
{
arduino.Open();
LineItem kurvaKonsentrasi = zedGraphKonsentrasi.GraphPane.CurveList[0] as LineItem;
IPointListEdit listKonsentrasi = kurvaKonsentrasi.Points as IPointListEdit;
double time = (Environment.TickCount - timeStart)/1000.0;
float dataKonsentrasi = float.Parse(arduino.ReadLine(), CultureInfo.InvariantCulture.NumberFormat);
listKonsentrasi.Add(time,Convert.ToDouble(dataKonsentrasi));
arduino.Close();
Scale xScale = zedGraphKonsentrasi.GraphPane.XAxis.Scale;
if (time > xScale.Max - xScale.MajorStep)
{
xScale.Max = time + xScale.MajorStep;
xScale.Min = xScale.Max - 30.0;
}
zedGraphKonsentrasi.AxisChange();
zedGraphKonsentrasi.Invalidate();
}
catch (Exception fail)
{
if (arduino.IsOpen)
{
arduino.Close();
}
}
}
单击开始按钮时会调用此方法。所以,我的问题是,当我点击开始按钮时,我想发送字符串数据“开”。这个字符串数据用于订购Arduino,在模拟读数之前,将附有此代码的伺服器I移动到void loop()
中。
if(Serial.available()>0){
start = Serial.read();
if(start == "on"){
servoMotor.write(40);
}
}
我知道我在做什么有什么问题,因为我无法启动伺服。你能给我一些建议吗?我应该怎么做才能使Visual C#发送命令到arduino来启动伺服,然后arduino开始读取,然后Visual C#读取它?
你有Arduino的监听串行输入的另一面? – swmcdonnell
对不起,这就是我的意思。你有没有检查过,以确保你的代码可以移动伺服,只是为了确保它是一个串行输入问题,而不是其他类型的问题?这可能是另一个问题,例如,不设置引脚或正确连接伺服器 – swmcdonnell
@swmcdonnell我有'SerialPort arduino = new SerialPort(“COM3”,115200);'在Visual C上# – bnrfly