首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为arduino发送字节?

如何为arduino发送字节?
EN

Stack Overflow用户
提问于 2011-11-27 16:07:15
回答 2查看 3.2K关注 0票数 1

我开发了一个应用程序,它通过套接字将一个字符串/命令发送到另一个PC应用服务器,并通过串口将一个字符串发送到Arduino。

问题是:如何向Arduino发送字节?

通过串口发送字符串的应用服务器的C#:

代码语言:javascript
复制
using System;
using System.Windows.Forms;
using System.Threading;
using System.IO;
using System.IO.Ports;

public class senddata
{
    private void Form1_Load(object sender, System.EventArgs e)
    {
        // Define a Porta Serial

        serialPort1.PortName = textBox2.Text;
        serialPort1.BaudRate = 9600;
        serialPort1.Open();
    }

    private void button1_Click(object sender, System.EventArgs e)
    {
        serialPort1.Write("1");  // 1 is a String     
    }
} 

在Arduino上运行的C++代码:

代码语言:javascript
复制
#include <Servo.h>

Servo servo;
int pos;

void setup()
{
    servo.attach(9);
    Serial.begin(9600);
    pinMode(13, OUTPUT);
}

void loop()
{
    if (Serial.available()) {
        int msg = Serial.read();

       if (msg > 0) {
           servo.write(msg); // 10 = pos 1 10-9 = 1
    }
  }
}

为了更好地理解这个问题,我将代码更改为这样(但是,由于伺服的值从0到180,这是行不通的):

代码语言:javascript
复制
#include <Servo.h>

Servo servo;
int pos;

void setup()
{
    servo.attach(9);
    Serial.begin(9600);
    pinMode(13, OUTPUT);
}

void loop()
{
    if (Serial.available()) {
        int cmd = Serial.read();

        if (cmd > 0) {
            // If I send a 1 the LED stays ON...
            // but when a send 12 the LED doesn't stay OFF.
            if (cmd == '1') {
                digitalWrite(13,HIGH);
            }

            if (cmd == '12') {
                digitalWrite(13,LOW);
            }
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-28 15:09:27

您应该能够使用原始的Arduino代码,但是将C#代码更改为:

代码语言:javascript
复制
// ...   
private void button1_Click(object sender, System.EventArgs e)
{
    SendByte(1); // Send byte '1' to the Arduino
}

private void SendByte(byte byteToSend) {
    byte[] bytes = new byte[] { byteToSend };
    serialPort1.Write(bytes, 0, bytes.Length);
}
// ...
票数 1
EN

Stack Overflow用户

发布于 2011-11-27 16:10:59

您希望在C中将字符串的值转换为整数,所以使用阿托伊函数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8286881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档